Saturday, February 16, 2019

ATHMAVAM DAIVAME VARANE Kester - Lyrics ( Malayalam Christian Devotional )

https://www.youtube.com/watch?v=EHkuWywmasA

Aathmavam daivame varane
Ente ullil vasikkan varane  (2)


Dhaahichu ninne njan thedonnu
Swargam thurannerangi nee varane (2)                 Aathmavam...(2)


Thirurakthathal abhishekam cheyyane
Agniyal parishudhi nalkane (2)                              Aathmavam..(2)


Rogathal njan valanjeedumpol 
Soukyamai nee ennil varane (2)                              Aathmavam..(2)


Bharathal njan thalarneedumpol
sakthiai ennil niranjidane (2)                                  Aathmavam..(2)


Papathal njan thakarneedumpol
Rakshikkan nin karam neettane (2)                        Aathmavam..(2)


Penthakustha anubhavam tharane
Pudushristiay enne maattane (2)                             Aathmavam..(2)


Vachanathin sakthi ennil nirachu
Varangalal nirachenne nayikku (2)                          Aathmavam..(2)

Monday, February 18, 2013

Create xls with drop down and Constrained Text for length using poi

import java.io.FileOutputStream;
import java.io.IOException;
import org.apache.poi.hssf.usermodel.HSSFDataValidationHelper;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.ComparisonOperator;
import org.apache.poi.ss.usermodel.DataValidation;
import org.apache.poi.ss.usermodel.DataValidationConstraint;
import org.apache.poi.ss.usermodel.DataValidationHelper;
import org.apache.poi.ss.util.CellRangeAddressList;

public class SDandLength {

/**
 * @param args
 * @throws IOException
 */
public static void main(String[] args) throws IOException {

DataValidation dataValidation1 = null;
DataValidationConstraint constraint1 = null;
DataValidationHelper validationHelper = null;

 HSSFWorkbook wb = new HSSFWorkbook();
 HSSFSheet sheet1=(HSSFSheet) wb.createSheet("sheet1");


    validationHelper=new HSSFDataValidationHelper(sheet1);
    // parameters are first row, last row, first col, last col
    CellRangeAddressList addressList1 = new  CellRangeAddressList(1,5,1,1);
   
    constraint1 =validationHelper.createExplicitListConstraint(new String[]{"Very High","High","Medium", "Low", "Very Low"});
    dataValidation1 = validationHelper.createValidation(constraint1, addressList1);
     // dataValidation.setSuppressDropDownArrow(false);     
    sheet1.addValidationData(dataValidation1);
   
    //  to set a default value, just setCellValue("first_item_value");
    //  sheet.getRow(index).getCell(index).setCellValue("my_default_value");

   
    DataValidationHelper validationHelper2=new HSSFDataValidationHelper(sheet1);
    DataValidationConstraint constraint2 = null;
 
    DataValidation dataValidation2 = null;
    // (ComparisonOperator.GT,"xxxx",null)     xxxx number is the upper limit
    // will show dialog if the length is greater than or equal to 5
    constraint2 =validationHelper.createTextLengthConstraint(ComparisonOperator.GT,"5",null);
    CellRangeAddressList addressList2 = new  CellRangeAddressList(1,5,0,0);
    dataValidation2 = validationHelper2.createValidation(constraint2, addressList2);
    sheet1.addValidationData(dataValidation2);
   

    FileOutputStream fileOut = new FileOutputStream("c:\\test\\drops1.xls");
    wb.write(fileOut);
    fileOut.close();
    System.out.println("Done");
    }
}

Wednesday, May 30, 2012

Date Utility - Java Application




import java.text.ParsePosition;
import java.text.SimpleDateFormat;
import java.util.*;

public class EnvDate
{

public EnvDate()
{
calendar = null;
setCalendar(new GregorianCalendar());
}

public EnvDate(Calendar calendar)
{
this.calendar = null;
setCalendar(calendar);
}

public EnvDate(Locale locale)
{
calendar = null;
setCalendar(new GregorianCalendar(locale));
}

public EnvDate(TimeZone timeZone)
{
calendar = null;
setCalendar(new GregorianCalendar(timeZone));
}

public EnvDate(TimeZone timeZone, Locale locale)
{
calendar = null;
setCalendar(new GregorianCalendar(timeZone, locale));
}

public Date addDay(Date inputDate, int amount)
{
getCalendar().setTime(inputDate);
getCalendar().add(5, amount);
return getCalendar().getTime();
}

public Date addHour(Date inputDate, int amount)
{
getCalendar().setTime(inputDate);
getCalendar().add(10, amount);
return getCalendar().getTime();
}

public Date addMillisecond(Date inputDate, int amount)
{
getCalendar().setTime(inputDate);
getCalendar().add(14, amount);
return getCalendar().getTime();
}

public Date addMinute(Date inputDate, int amount)
{
getCalendar().setTime(inputDate);
getCalendar().add(12, amount);
return getCalendar().getTime();
}

public Date addMonth(Date inputDate, int amount)
{
getCalendar().setTime(inputDate);
getCalendar().add(2, amount);
return getCalendar().getTime();
}

public Date addSecond(Date inputDate, int amount)
{
getCalendar().setTime(inputDate);
getCalendar().add(13, amount);
return getCalendar().getTime();
}

public Date addYear(Date inputDate, int amount)
{
getCalendar().setTime(inputDate);
getCalendar().add(1, amount);
return getCalendar().getTime();
}

public String convertDateToString(Date inputDate, String dateFormat)
{
SimpleDateFormat realDateFormat = new SimpleDateFormat(dateFormat);
String outputDate = null;
if(inputDate != null)
outputDate = realDateFormat.format(inputDate);
return outputDate;
}

public Date convertStringToDate(String inputDate, String dateFormat)
{
SimpleDateFormat realDateFormat = new SimpleDateFormat(dateFormat);
Date outputDate = null;
String newString = null;
if(inputDate != null)
{
outputDate = realDateFormat.parse(inputDate, new ParsePosition(0));
newString = convertDateToString(outputDate, dateFormat);
if(!newString.equals(inputDate))
{
IllegalArgumentException exception = new IllegalArgumentException("Data in string is not a valid date.");
throw exception;
}
}
return outputDate;
}

public Date createDate(int inputYear, int inputMonth, int inputDay)
{
getCalendar().clear();
getCalendar().set(inputYear, inputMonth, inputDay);
return getCalendar().getTime();
}

public Date createDate(int inputYear, int inputMonth, int inputDay, int inputHour, int inputMinute, int inputSecond)
{
getCalendar().clear();
getCalendar().set(inputYear, inputMonth, inputDay, inputHour, inputMinute, inputSecond);
return getCalendar().getTime();
}

public Date createDate(int inputYear, int inputMonth, int inputDay, int inputHour, int inputMinute, int inputSecond, int inputMillisecond)
{
getCalendar().clear();
getCalendar().set(inputYear, inputMonth, inputDay, inputHour, inputMinute, inputSecond);
getCalendar().set(14, inputMillisecond);
return getCalendar().getTime();
}

private Calendar getCalendar()
{
return calendar;
}

public int getCalendarDaysAfter(Date date1, Date date2)
{
Date newDate1 = createDate(getYear(date1), getMonth(date1), getDayOfMonth(date1));
Date newDate2 = createDate(getYear(date2), getMonth(date2), getDayOfMonth(date2));
int daysAfter = (new Double(getDaysAfter(newDate1, newDate2))).intValue();
return daysAfter;
}

public int getCalendarMonthsAfter(Date date1, Date date2)
{
int month1 = getMonth(date1);
int month2 = getMonth(date2);
int year1 = getYear(date1);
int year2 = getYear(date2);
int difference = 0;
if(year1 == year2)
difference = month2 - month1;
else
if(year1 < year2)
{
int yearCtr = year2 - 1;
difference = month2;
for(; yearCtr > year1; yearCtr--)
difference += 12;

difference = (difference + 12) - month1;
} else
if(year1 > year2)
{
int yearCtr = year1 - 1;
difference = month1;
for(; yearCtr > year2; yearCtr--)
difference += 12;

difference = (difference + 12) - month2;
difference *= -1;
}
return difference;
}

public int getCalendarYearsAfter(Date date1, Date date2)
{
int year1 = getYear(date1);
int year2 = getYear(date2);
int difference = year2 - year1;
return difference;
}

public Date getCurrentDate()
{
GregorianCalendar _calendar = new GregorianCalendar();
return _calendar.getTime();
}

public String getDayAbrv(Date inputDate)
{
SimpleDateFormat dateFormat = new SimpleDateFormat("EEE");
String dayAbrv = dateFormat.format(inputDate);
return dayAbrv;
}

public String getDayName(Date inputDate)
{
SimpleDateFormat dateFormat = new SimpleDateFormat("EEEE");
String dayName = dateFormat.format(inputDate);
return dayName;
}

public int getDayOfMonth(Date inputDate)
{
getCalendar().setTime(inputDate);
return getCalendar().get(5);
}

public int getDayOfWeek(Date inputDate)
{
getCalendar().setTime(inputDate);
return getCalendar().get(7);
}

public int getDayOfYear(Date inputDate)
{
getCalendar().setTime(inputDate);
return getCalendar().get(6);
}

public double getDaysAfter(Date date1, Date date2)
{
double amount1 = date1.getTime();
double amount2 = date2.getTime();
double difference = (amount2 - amount1) / 86400000D;
return difference;
}

public int getFirstDayOfWeek(Date inputDate)
{
getCalendar().setTime(inputDate);
return getCalendar().getFirstDayOfWeek();
}

public int getHour(Date inputDate)
{
getCalendar().setTime(inputDate);
return getCalendar().get(10);
}

public int getHourOfDay(Date inputDate)
{
getCalendar().setTime(inputDate);
return getCalendar().get(11);
}

public double getHoursAfter(Date date1, Date date2)
{
double amount1 = date1.getTime();
double amount2 = date2.getTime();
double difference = (amount2 - amount1) / 3600000D;
return difference;
}

public Date getLastDateOfMonth(Date inputDate)
{
Date nextMonthDate = addMonth(inputDate, 1);
getCalendar().setTime(nextMonthDate);
getCalendar().set(5, 1);
Date lastDayOfMonth = addDay(getCalendar().getTime(), -1);
return lastDayOfMonth;
}

public int getMillisecond(Date inputDate)
{
getCalendar().setTime(inputDate);
return getCalendar().get(14);
}

public long getMillisecondsAfter(Date date1, Date date2)
{
long amount1 = date1.getTime();
long amount2 = date2.getTime();
long difference = amount2 - amount1;
return difference;
}

public int getMinute(Date inputDate)
{
getCalendar().setTime(inputDate);
return getCalendar().get(12);
}

public double getMinutesAfter(Date date1, Date date2)
{
double amount1 = date1.getTime();
double amount2 = date2.getTime();
double difference = (amount2 - amount1) / 60000D;
return difference;
}

public int getMonth(Date inputDate)
{
getCalendar().setTime(inputDate);
return getCalendar().get(2);
}

public String getMonthAbrv(Date inputDate)
{
SimpleDateFormat dateFormat = new SimpleDateFormat("MMM");
String monthAbrv = dateFormat.format(inputDate);
return monthAbrv;
}

public String getMonthName(Date inputDate)
{
SimpleDateFormat dateFormat = new SimpleDateFormat("MMMM");
String monthName = dateFormat.format(inputDate);
return monthName;
}

public int getSecond(Date inputDate)
{
getCalendar().setTime(inputDate);
return getCalendar().get(13);
}

public double getSecondsAfter(Date date1, Date date2)
{
double amount1 = date1.getTime();
double amount2 = date2.getTime();
double difference = (amount2 - amount1) / 1000D;
return difference;
}

public int getTimeZoneOffset(Date inputDate)
{
getCalendar().setTime(inputDate);
return getCalendar().get(15);
}

public int getWeekOfMonth(Date inputDate)
{
getCalendar().setTime(inputDate);
return getCalendar().get(4);
}

public int getWeekOfYear(Date inputDate)
{
getCalendar().setTime(inputDate);
return getCalendar().get(3);
}

public int getYear(Date inputDate)
{
getCalendar().setTime(inputDate);
return getCalendar().get(1);
}

public boolean isAfter(Date date1, Date date2)
{
boolean rtnValue = false;
if(date1.getTime() > date2.getTime())
rtnValue = true;
return rtnValue;
}

public boolean isAM(Date inputDate)
{
getCalendar().setTime(inputDate);
boolean rtnValue;
switch(getCalendar().get(9))
{
case 0: // '\0'
rtnValue = true;
break;

default:
rtnValue = false;
break;
}
return rtnValue;
}

public boolean isBefore(Date date1, Date date2)
{
boolean rtnValue = false;
if(date1.getTime() < date2.getTime())
rtnValue = true;
return rtnValue;
}

public boolean isEqualTo(Date date1, Date date2)
{
boolean rtnValue = false;
if(date1.getTime() == date2.getTime())
rtnValue = true;
return rtnValue;
}

public boolean isLeapYear(Date inputDate)
{
boolean rtnValue = false;
getCalendar().setTime(inputDate);
rtnValue = ((GregorianCalendar)getCalendar()).isLeapYear(getYear(inputDate));
return rtnValue;
}

public boolean isPM(Date inputDate)
{
getCalendar().setTime(inputDate);
boolean rtnValue;
switch(getCalendar().get(9))
{
case 1: // '\001'
rtnValue = true;
break;

default:
rtnValue = false;
break;
}
return rtnValue;
}

private void setCalendar(Calendar calendar)
{
this.calendar = calendar;
}

public Date setDayOfMonth(Date inputDate, int dayOfMonth)
{
getCalendar().setTime(inputDate);
getCalendar().set(5, dayOfMonth);
return getCalendar().getTime();
}

public Date setDayOfWeek(Date inputDate, int dayOfWeek)
{
getCalendar().setTime(inputDate);
getCalendar().set(7, dayOfWeek);
return getCalendar().getTime();
}

public Date setDayOfYear(Date inputDate, int dayOfYear)
{
getCalendar().setTime(inputDate);
getCalendar().set(6, dayOfYear);
return getCalendar().getTime();
}

public Date setHour(Date inputDate, int hour)
{
getCalendar().setTime(inputDate);
getCalendar().set(10, hour);
return getCalendar().getTime();
}

public Date setHourOfDay(Date inputDate, int hourOfDay)
{
getCalendar().setTime(inputDate);
getCalendar().set(11, hourOfDay);
return getCalendar().getTime();
}

public Date setMillisecond(Date inputDate, int millisecond)
{
getCalendar().setTime(inputDate);
getCalendar().set(14, millisecond);
return getCalendar().getTime();
}

public Date setMinute(Date inputDate, int minute)
{
getCalendar().setTime(inputDate);
getCalendar().set(12, minute);
return getCalendar().getTime();
}

public Date setMonth(Date inputDate, int month)
{
getCalendar().setTime(inputDate);
getCalendar().set(2, month);
return getCalendar().getTime();
}

public Date setSecond(Date inputDate, int second)
{
getCalendar().setTime(inputDate);
getCalendar().set(13, second);
return getCalendar().getTime();
}

public Date setWeekOfMonth(Date inputDate, int weekOfMonth)
{
getCalendar().setTime(inputDate);
getCalendar().set(4, weekOfMonth);
return getCalendar().getTime();
}

public Date setWeekOfYear(Date inputDate, int weekOfYear)
{
getCalendar().setTime(inputDate);
getCalendar().set(3, weekOfYear);
return getCalendar().getTime();
}

public Date setYear(Date inputDate, int year)
{
getCalendar().setTime(inputDate);
getCalendar().set(1, year);
return getCalendar().getTime();
}
public Date getFirstDayOfYear(Date dateVal){
Calendar calendar=Calendar.getInstance();
calendar.setTime(dateVal);
calendar.set(Calendar.DAY_OF_YEAR, calendar.getActualMinimum((Calendar.DAY_OF_YEAR)));
calendar = setZeroHours(calendar);
return calendar.getTime();
}
public Date getFirstDayOfMonth(Date dateVal){
Calendar calendar=Calendar.getInstance();
calendar.setTime(dateVal);
calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMinimum((Calendar.DAY_OF_MONTH)));
calendar = setZeroHours(calendar);
return calendar.getTime();
}
public Date getFirstDayOfPrevMonth(Date dateVal){
Calendar calendar=Calendar.getInstance();
calendar.setTime(dateVal);
calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMinimum((Calendar.DAY_OF_MONTH)));
calendar = setZeroHours(calendar);
calendar.add(Calendar.MONTH, -1);
return calendar.getTime();
}
private Calendar setZeroHours(Calendar calendar){
calendar.set(Calendar.HOUR_OF_DAY, calendar.getActualMinimum(Calendar.HOUR_OF_DAY));
calendar.set(Calendar.MINUTE, calendar.getActualMinimum(Calendar.MINUTE));
calendar.set(Calendar.SECOND, calendar.getActualMinimum(Calendar.SECOND));
return calendar;
}
private Calendar calendar;
}

Java Program to Get Public IP

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.InetAddress;
import java.net.URL;
import java.net.UnknownHostException;


public class WhatIP {
     public static void main(String[] args)  {
             String ipString = null;
            URL ipURL;
           
            try {
                ipURL = new URL("http://myip.xname.org//");
           
            BufferedReader in = new BufferedReader(
            new InputStreamReader(ipURL.openStream()));

            String inputLine;
            while ((inputLine = in.readLine()) != null)
                 ipString =  inputLine;
            in.close();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
// otherwise read the local ip
            if(ipString == null || ipString.trim().length()== 0){
               
                try {
                    ipString = InetAddress.getLocalHost().getHostAddress();
                } catch (UnknownHostException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
            System.out.println(ipString);
        }
    }

Thursday, May 10, 2012

PPTX Hyperlinking to slides Using Docx4j - Java

import java.util.ArrayList;
import java.util.List;

import org.docx4j.XmlUtils;
import org.docx4j.openpackaging.packages.PresentationMLPackage;
import org.docx4j.openpackaging.parts.PartName;
import org.docx4j.openpackaging.parts.PresentationML.MainPresentationPart;
import org.docx4j.openpackaging.parts.PresentationML.SlideLayoutPart;
import org.docx4j.openpackaging.parts.PresentationML.SlidePart;
import org.docx4j.openpackaging.parts.relationships.Namespaces;
import org.pptx4j.jaxb.Context;
import org.pptx4j.pml.CTGraphicalObjectFrame;
import org.pptx4j.pml.Shape;


public class LinkToSlides {
    /**
     * @param args
     * @throws Exception
     */
    static int rows = 1;
    static int columns = 2;
    static List<String> colColors = getCellColors();
    static List<String> colValues = getCellValues();
   
    public static void main(String[] args) throws Exception {
        startPptx();

    }
    private static void startPptx() throws Exception {
   
        // generate Ppt file
        String outFileName = "C:\\test\\TestPPTLinks.pptx";
        PresentationMLPackage presentationMLPackage = PresentationMLPackage.createPackage();
        MainPresentationPart pp = (MainPresentationPart)presentationMLPackage.getParts().getParts().get(
                new PartName("/ppt/presentation.xml"));       
        SlideLayoutPart layoutPart = (SlideLayoutPart)presentationMLPackage.getParts().getParts().get(
                new PartName("/ppt/slideLayouts/slideLayout1.xml"));
       
        // OK, now we can create a slide
                SlidePart slidePart = null;
                slidePart = presentationMLPackage.createSlidePart(pp, layoutPart,    new PartName("/ppt/slides/slide1.xml"));
               
                org.docx4j.relationships.ObjectFactory factory = new org.docx4j.relationships.ObjectFactory();
               
                //first Link relation
                org.docx4j.relationships.Relationship rel1 = factory.createRelationship();
                rel1.setType(Namespaces.PRESENTATIONML_SLIDE);
                rel1.setTarget("/ppt/slides/slide"+5+".xml");
                slidePart.getRelationshipsPart().addRelationship(rel1);
               
                String linkedTable = table1.replaceFirst("replaceID", rel1.getId());
               
               //second link relation
                org.docx4j.relationships.Relationship rel2 = factory.createRelationship();
                rel2.setType(Namespaces.PRESENTATIONML_SLIDE);
                rel2.setTarget("/ppt/slides/slide"+10+".xml");
                slidePart.getRelationshipsPart().addRelationship(rel2);
               
                linkedTable = linkedTable.replaceFirst("replaceID", rel2.getId());
               
               
                CTGraphicalObjectFrame graphicFrame2=(CTGraphicalObjectFrame) XmlUtils.unmarshalString(linkedTable, Context.jcPML,CTGraphicalObjectFrame.class);
                slidePart.getJaxbElement().getCSld().getSpTree().getSpOrGrpSpOrGraphicFrame().add(graphicFrame2);
               
                for (int i=2;i<15;i++)
                {
                    slidePart = presentationMLPackage.createSlidePart(pp, layoutPart,    new PartName("/ppt/slides/slide"+i+".xml"));
                     Shape sample = ((Shape)XmlUtils.unmarshalString(getTextData(i), Context.jcPML) );
                     slidePart.getJaxbElement().getCSld().getSpTree().getSpOrGrpSpOrGraphicFrame().add(sample);
                }
                presentationMLPackage.save(new java.io.File(outFileName));
            System.out.println("Done");


 }
   
    private static String getTextData(int i) {
        return "<p:sp xmlns:a=\"http://schemas.openxmlformats.org/drawingml/2006/main\" " +
                "xmlns:r=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships\" " +
                "xmlns:p=\"http://schemas.openxmlformats.org/presentationml/2006/main\">"
                            + "<p:nvSpPr>"
                            + "<p:cNvPr id=\"5\" name=\"Rectangle 4\" />"
                            + "<p:cNvSpPr />"
                            + "<p:nvPr />"
                        + "</p:nvSpPr>"
                        + "<p:spPr>"
                            + "<a:xfrm>"
                                + "<a:off x=\"3865418\" y=\"602876\" />"
                                + "<a:ext cx=\"5286000\" cy=\"477054\" />"
                            + "</a:xfrm>"
                            + "<a:prstGeom prst=\"rect\">"
                                + "<a:avLst />"
                            + "</a:prstGeom>"
                        + "</p:spPr>"
                        + "<p:txBody>"
                            + "<a:bodyPr>"
                                + "<a:spAutoFit />"
                            + "</a:bodyPr>"
                            + "<a:lstStyle />"
                            + "<a:p>"
                                + "<a:pPr lvl=\"0\" />"
                                + "<a:r>"
                                    + "<a:rPr smtClean=\"false\" err=\"true\" dirty=\"false\" noProof=\"false\" baseline=\"0\" normalizeH=\"false\" spc=\"0\" cap=\"none\" kern=\"0\" strike=\"noStrike\" u=\"sng\" i=\"false\" b=\"false\" sz=\"2000\" lang=\"en-US\" kumimoji=\"false\">"
                                        + "<a:ln>"
                                            + "<a:noFill />"
                                        + "</a:ln>"
                                        + "<a:solidFill>"
                                            + "<a:srgbClr val=\"0070C0\" />"
                                        + "</a:solidFill>"
                                        + "<a:effectLst />"
                                        + "<a:uLnTx />"
                                        + "<a:uFillTx />"
                                    + "</a:rPr>"
                                    + "<a:t>"+ "Slide : "+ i +"</a:t>"
                                + "</a:r>"
                                + "<a:endParaRPr dirty=\"false\" noProof=\"false\" baseline=\"0\" normalizeH=\"false\" spc=\"0\" cap=\"none\" kern=\"0\" strike=\"noStrike\" u=\"sng\" i=\"false\" b=\"false\" sz=\"2000\" lang=\"en-US\" kumimoji=\"false\">"
                                    + "<a:ln>"
                                        + "<a:noFill />"
                                    + "</a:ln>"
                                    + "<a:solidFill>"
                                        + "<a:srgbClr val=\"0070C0\" />"
                                    + "</a:solidFill>"
                                    + "<a:effectLst />"
                                    + "<a:uLnTx />"
                                    + "<a:uFillTx />"
                                + "</a:endParaRPr>"
                            + "</a:p>"
                        + "</p:txBody>"
                    + "</p:sp>";
       
    }
    private static List<String> getCellValues() {
        List<String> list = new ArrayList<String>();
        list.add("Link to slide 5");
        list.add("Link to slide 10");
        return list;
    }
    private static List<String> getCellColors() {
        List<String> list = new ArrayList<String>();
        list.add("ddddff");
        list.add("ffdddd");
        return list;
    }
    private static String table1 = "<p:graphicFrame xmlns:c=\"http://schemas.openxmlformats.org/drawingml/2006/chart\" " +
            "xmlns:r=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships\" " +
            "xmlns:p=\"http://schemas.openxmlformats.org/presentationml/2006/main\" " +
            "xmlns:a=\"http://schemas.openxmlformats.org/drawingml/2006/main\" " +
            "xmlns:ns9=\"http://schemas.openxmlformats.org/drawingml/2006/spreadsheetDrawing\" " +
            "xmlns:wp=\"http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing\" " +
            "xmlns:pic=\"http://schemas.openxmlformats.org/drawingml/2006/picture\" " +
            "xmlns:ns5=\"http://schemas.openxmlformats.org/drawingml/2006/chartDrawing\" " +
            "xmlns:ns10=\"http://schemas.openxmlformats.org/drawingml/2006/compatibility\" " +
            "xmlns:ns11=\"http://schemas.openxmlformats.org/drawingml/2006/lockedCanvas\" " +
            "xmlns:dgm=\"http://schemas.openxmlformats.org/drawingml/2006/diagram\">"
            + "<p:nvGraphicFramePr>"
            + "<p:cNvPr name=\"Table 5\" id=\"6\"/>"
            + "<p:cNvGraphicFramePr>"
                + "<a:graphicFrameLocks noGrp=\"true\"/>"
            + "</p:cNvGraphicFramePr>"
            + "<p:nvPr/>"
        + "</p:nvGraphicFramePr>"
        + "<p:xfrm>"
            + "<a:off y=\"2287800\" x=\"1524000\"/>"
            + "<a:ext cy=\"228600\" cx=\"3352800\"/>"
        + "</p:xfrm>"
        + "<a:graphic>"
            + "<a:graphicData uri=\"http://schemas.openxmlformats.org/drawingml/2006/table\">"
                + "<a:tbl>"
                    + "<a:tblPr/>"
                    + "<a:tblGrid>"
                    + getColumnWidths()
                    + "</a:tblGrid>"
                  +  getColumnData()
                + "</a:tbl>"
            + "</a:graphicData>"
        + "</a:graphic>"
    + "</p:graphicFrame>";
   
    private static String getColumnWidths() {
        StringBuffer str = new StringBuffer("");
        for(int i = 0;i<columns;i++){
            str.append("<a:gridCol w=\"1000000\"/>");
        }
       
        return str.toString();
    }
    private static String getColumnData() {
        int counter = -1;
        StringBuffer str = new StringBuffer("");
        for(int r = 0;r<rows;r++){
            str.append("<a:tr h=\"228600\">");
           
            for(int c = 0;c<columns;c++){
                counter++;
                str.append("<a:tc>"
                        + "<a:txBody>"
                        + "<a:bodyPr/>"
                        + "<a:lstStyle/>"
                        + "<a:p>"
                            + "<a:pPr hangingPunct=\"true\" latinLnBrk=\"false\" fontAlgn=\"auto\" eaLnBrk=\"true\" rtl=\"false\" defTabSz=\"914400\" algn=\"l\" indent=\"0\" marR=\"0\" marL=\"0\">"
                                + "<a:lnSpc>"
                                    + "<a:spcPct val=\"115000\"/>"
                                + "</a:lnSpc>"
                                + "<a:spcBef>"
                                    + "<a:spcPts val=\"0\"/>"
                                + "</a:spcBef>"
                                + "<a:spcAft>"
                                    + "<a:spcPts val=\"0\"/>"
                                + "</a:spcAft>"
                                + "<a:buClrTx/>"
                                + "<a:buSzTx/>"
                                + "<a:buFontTx/>"
                                + "<a:buNone/>"
                                + "<a:tabLst/>"
                                + "<a:defRPr/>"
                            + "</a:pPr>"
                            + "<a:r>"
                                + "<a:rPr smtClean=\"false\" dirty=\"false\" sz=\"1100\" lang=\"en-US\">"
                                    + "<a:latin typeface=\"+mn-lt\"/>"
                                    + "<a:ea typeface=\"Calibri\"/>"
                                    + "<a:cs typeface=\"Times New Roman\"/>"
                                    + "<a:hlinkClick r:id=\"replaceID\" action=\"ppaction://hlinksldjump\"/>"
                                + "</a:rPr>"
                                + "<a:t>"+ colValues.get(counter) +"</a:t>"
                            + "</a:r>"
                            + "<a:endParaRPr dirty=\"false\" sz=\"1100\" lang=\"en-US\">"
                                + "<a:latin typeface=\"Calibri\"/>"
                                + "<a:ea typeface=\"Calibri\"/>"
                                + "<a:cs typeface=\"Times New Roman\"/>"
                            + "</a:endParaRPr>"
                        + "</a:p>"
                    + "</a:txBody>"
                    + "<a:tcPr marB=\"0\" marT=\"0\" marR=\"68580\" marL=\"68580\">"
                        + "<a:lnL algn=\"ctr\" cmpd=\"sng\" cap=\"flat\" w=\"12700\">"
                            + "<a:solidFill>"
                                + "<a:srgbClr val=\"BFBFBF\"/>"
                            + "</a:solidFill>"
                            + "<a:prstDash val=\"solid\"/>"
                            + "<a:round/>"
                            + "<a:headEnd len=\"med\" w=\"med\" type=\"none\"/>"
                            + "<a:tailEnd len=\"med\" w=\"med\" type=\"none\"/>"
                        + "</a:lnL>"
                        + "<a:lnR algn=\"ctr\" cmpd=\"sng\" cap=\"flat\" w=\"12700\">"
                            + "<a:solidFill>"
                                + "<a:srgbClr val=\"BFBFBF\"/>"
                            + "</a:solidFill>"
                            + "<a:prstDash val=\"solid\"/>"
                            + "<a:round/>"
                            + "<a:headEnd len=\"med\" w=\"med\" type=\"none\"/>"
                            + "<a:tailEnd len=\"med\" w=\"med\" type=\"none\"/>"
                        + "</a:lnR>"
                        + "<a:lnT algn=\"ctr\" cmpd=\"sng\" cap=\"flat\" w=\"12700\">"
                            + "<a:solidFill>"
                                + "<a:srgbClr val=\"BFBFBF\"/>"
                            + "</a:solidFill>"
                            + "<a:prstDash val=\"solid\"/>"
                            + "<a:round/>"
                            + "<a:headEnd len=\"med\" w=\"med\" type=\"none\"/>"
                            + "<a:tailEnd len=\"med\" w=\"med\" type=\"none\"/>"
                        + "</a:lnT>"
                        + "<a:lnB algn=\"ctr\" cmpd=\"sng\" cap=\"flat\" w=\"12700\">"
                            + "<a:solidFill>"
                                + "<a:srgbClr val=\"BFBFBF\"/>"
                            + "</a:solidFill>"
                            + "<a:prstDash val=\"solid\"/>"
                            + "<a:round/>"
                            + "<a:headEnd len=\"med\" w=\"med\" type=\"none\"/>"
                            + "<a:tailEnd len=\"med\" w=\"med\" type=\"none\"/>"
                        + "</a:lnB>"
                        + "<a:solidFill>"
                            + "<a:srgbClr val=\""+ colColors.get(counter) +"\"/>"
                        + "</a:solidFill>"
                    + "</a:tcPr>"
                + "</a:tc>");
               
            }
            str.append("</a:tr>");
        }
       
        return str.toString();
    }
}

Wednesday, May 9, 2012

Docx4j Nested Table Vertical Merge Horizontal merge and cell with image

import java.io.File;
import java.math.BigInteger;
import org.docx4j.XmlUtils;
import org.docx4j.dml.wordprocessingDrawing.Inline;
import org.docx4j.openpackaging.packages.WordprocessingMLPackage;
import org.docx4j.openpackaging.parts.WordprocessingML.BinaryPartAbstractImage;
import org.docx4j.wml.CTTblPrBase.TblStyle;
import org.docx4j.wml.TcPrInner.GridSpan;
import org.docx4j.wml.TcPrInner.VMerge;
import org.docx4j.wml.ObjectFactory;
import org.docx4j.wml.Tbl;
import org.docx4j.wml.TblPr;
import org.docx4j.wml.TblWidth;
import org.docx4j.wml.Tc;
import org.docx4j.wml.TcPr;
import org.docx4j.wml.Tr;
import org.docx4j.wml.TrPr;

public class ComplexTable{
   
    // The innerTable ( tblXML ) can be XML or
    // you can create using  Tbl mainTable = factory.createTbl();
    // as shown below
   
    static String tblXML = "<w:tbl xmlns:w=\"http://schemas.openxmlformats.org/wordprocessingml/2006/main\" " +
            "xmlns:v=\"urn:schemas-microsoft-com:vml\" " +
            "xmlns:wp=\"http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing\" " +
            "xmlns:r=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships\">"
            +"<w:tblPr>"
            +"<w:tblStyle w:val=\"TableGrid\" />"
            +"<w:tblW w:w=\"0\" w:type=\"auto\" />"
            +"<w:tblLook w:val=\"04A0\" />"
        +"</w:tblPr>"
        +"<w:tblGrid>"
            +"<w:gridCol w:w=\"392\" />"
            +"<w:gridCol w:w=\"328\" />"
        +"</w:tblGrid>"
        +"<w:tr w:rsidR=\"005C211D\" w:rsidTr=\"005C211D\">"
            +"<w:tc>"
                +"<w:tcPr>"
                    +"<w:tcW w:w=\"392\" w:type=\"dxa\" />"
                +"</w:tcPr>"
                +"<w:p w:rsidR=\"005C211D\" w:rsidRDefault=\"005C211D\" w:rsidP=\"005C211D\">"
                    +"<w:r>"
                        +"<w:t>1</w:t>"
                    +"</w:r>"
                +"</w:p>"
            +"</w:tc>"
            +"<w:tc>"
                +"<w:tcPr>"
                    +"<w:tcW w:w=\"328\" w:type=\"dxa\" />"
                +"</w:tcPr>"
                +"<w:p w:rsidR=\"005C211D\" w:rsidRDefault=\"005C211D\" w:rsidP=\"005C211D\">"
                    +"<w:r>"
                        +"<w:t>2</w:t>"
                    +"</w:r>"
                +"</w:p>"
            +"</w:tc>"
        +"</w:tr>"
        +"<w:tr w:rsidR=\"005C211D\" w:rsidTr=\"005C211D\">"
            +"<w:trPr>"
                +"<w:trHeight w:val=\"70\" />"
            +"</w:trPr>"
            +"<w:tc>"
                +"<w:tcPr>"
                    +"<w:tcW w:w=\"392\" w:type=\"dxa\" />"
                +"</w:tcPr>"
                +"<w:p w:rsidR=\"005C211D\" w:rsidRDefault=\"005C211D\" w:rsidP=\"005C211D\">"
                    +"<w:r>"
                        +"<w:t>3</w:t>"
                    +"</w:r>"
                +"</w:p>"
            +"</w:tc>"
            +"<w:tc>"
                +"<w:tcPr>"
                    +"<w:tcW w:w=\"328\" w:type=\"dxa\" />"
                +"</w:tcPr>"
                +"<w:p w:rsidR=\"005C211D\" w:rsidRDefault=\"005C211D\" w:rsidP=\"005C211D\">"
                    +"<w:r>"
                        +"<w:t>4</w:t>"
                    +"</w:r>"
                +"</w:p>"
            +"</w:tc>"
        +"</w:tr>"
    +"</w:tbl>";
   
    static WordprocessingMLPackage wordMLPackage =null;
    static ObjectFactory factory = new ObjectFactory();
   
    private static void addTc(Tr tr,String label, String text, String width) {
           Tc tc = factory.createTc();
           TcPr tcPr = new TcPr();
           TblWidth tblwidth = new TblWidth();
           tblwidth.setType("dxa");
           tblwidth.setW(new BigInteger(width));
           tcPr.setTcW(tblwidth);
           tc.setTcPr(tcPr);
          
          
          
           tc.getEGBlockLevelElts().add( wordMLPackage.getMainDocumentPart().createParagraphOfText(text) );
           tr.getEGContentCellContent().add( tc );
        }
    private static void addTcVMerge(Tr tr,String label, String text, String vMergeVal,String width) {
           Tc tc = factory.createTc();
           TcPr tcPr = new TcPr();
           TblWidth tblwidth = new TblWidth();
           tblwidth.setType("dxa");
           tblwidth.setW(new BigInteger(width));
           tcPr.setTcW(tblwidth);
          
           VMerge merge = new VMerge();
           if(vMergeVal !=null){
               merge.setVal(vMergeVal);
           }
           tcPr.setVMerge(merge);
          
           tc.setTcPr(tcPr);
        if(text != null) {
            tc.getEGBlockLevelElts().add( wordMLPackage.getMainDocumentPart().createParagraphOfText(text) );
        }
       
           tr.getEGContentCellContent().add( tc );
        }
   
        public static void main(String[] args) throws Exception {
              
                System.out.println( "Creating package..");
                wordMLPackage = WordprocessingMLPackage.createPackage();
               
                Tbl mainTable = factory.createTbl();
                TblPr tblPr = new TblPr();

                TblStyle tblStyle = new TblStyle();
                tblStyle.setVal("TableGrid");
               
                tblPr.setTblStyle(tblStyle);
                mainTable.setTblPr(tblPr);
               
              
                TblWidth width = new TblWidth();
                width.setType("auto");
                width.setW(new BigInteger("0"));
                tblPr.setTblW(width);
               
                // create row 1
                Tr tr = factory.createTr();
               
                // col 1 of row 1
                addTc(tr,"Ab","Ab","3192");
                //col 2 of row 1
                addTc(tr,"Ac","Ac","3192");
               
              // a vertically merged col
                addTcVMerge(tr ,"test", "Vertical Merge","restart","9000");

                mainTable.getEGContentRowContent().add(tr);
              
                // create row 2
                Tr tr2 = factory.createTr();
                 
                TrPr pr = new TrPr();
                tr2.setTrPr(pr);
               
                // col 1 of row 2
               
                   Tc tc1 = factory.createTc();
                   TcPr tcPr = new TcPr();
                   TblWidth widtha = new TblWidth();
                   widtha.setType("dxa");
                   widtha.setW(new BigInteger("0"));
                   tcPr.setTcW(widtha);
                  
                   tc1.setTcPr(tcPr);
                   tc1.getEGBlockLevelElts().add(XmlUtils.unmarshalString(tblXML));
                   //The following is important or you may get a corrupted docx file
                   tc1.getEGBlockLevelElts().add( wordMLPackage.getMainDocumentPart().createParagraphOfText(""));
                   tr2.getEGContentCellContent().add( tc1 );
                  
                   mainTable.getEGContentRowContent().add(tr2);
                  
                   //col2 of row 2
                   addTc(tr2,"bA","bA","3192");
                  
                // end  vertically merged col
                   addTcVMerge(tr2 ,"", "",null,"9000");
                  
                  
                   // create row 3
                   Tr tr3 = factory.createTr();
                    
                   TrPr pr3 = new TrPr();
                   tr3.setTrPr(pr3);
                  
                   Tc tc31 = factory.createTc();
                   TcPr tcPr3 = new TcPr();
                   TblWidth width31 = new TblWidth();
                   width31.setType("dxa");
                   width31.setW(new BigInteger("0"));
                   tcPr3.setTcW(width31);
                  
                   // for setting colspan of 3
                   GridSpan gridSpan = new GridSpan();
                   gridSpan.setVal(new BigInteger("3"));
                  
                   tcPr3.setGridSpan(gridSpan);
                  
                   tc31.setTcPr(tcPr3);
                   tc31.getEGBlockLevelElts().add( wordMLPackage.getMainDocumentPart().createParagraphOfText("Horizontal merge 3 col"));
                 
                   tr3.getEGContentCellContent().add( tc31 );
                   mainTable.getEGContentRowContent().add(tr3);
                  
                  
                   // create row 4 -6384
                   Tr tr4 = factory.createTr();
                    
                   TrPr pr4 = new TrPr();
                   tr4.setTrPr(pr4);
                  
                   Tc tc41 = factory.createTc();
                   TcPr tcPr4 = new TcPr();
                   TblWidth width41 = new TblWidth();
                   width41.setType("dxa");
                   width41.setW(new BigInteger("0"));
                   tcPr4.setTcW(width31);
                  
                   // for setting colspan of 3
                   GridSpan gridSpan41 = new GridSpan();
                   gridSpan41.setVal(new BigInteger("2"));
                  
                   tcPr4.setGridSpan(gridSpan41);
                  
                   tc41.setTcPr(tcPr4);
                   tc41.getEGBlockLevelElts().add( wordMLPackage.getMainDocumentPart().createParagraphOfText("Horizontal merge 2 col"));
                 
                   tr4.getEGContentCellContent().add( tc41 );
                  
                // Add an image to the last col
                  
                   File file = new File("C:\\test\\1_burndown.png" );
                  
                   java.io.InputStream is = new java.io.FileInputStream(file );
                  
                   long length = file.length();  
                   // You cannot create an array using a long type.
                   // It needs to be an int type.
                   if (length > Integer.MAX_VALUE) {
                           System.out.println("File too large!!");
                   }
                   byte[] bytes = new byte[(int)length];
                   int offset = 0;
                   int numRead = 0;
                   while (offset < bytes.length
                          && (numRead=is.read(bytes, offset, bytes.length-offset)) >= 0) {
                       offset += numRead;
                   }
                   // Ensure all the bytes have been read in
                   if (offset < bytes.length) {
                       System.out.println("Could not completely read file "+file.getName());
                   }
                   is.close();
                 
                   String filenameHint = null;
                   String altText = null;
                   int id1 = 0;
                   int id2 = 1;
                  
                       org.docx4j.wml.P p2 = newImage( wordMLPackage, bytes, filenameHint, altText, id1, id2, 3000 );
                  
                  
                    Tc tc42 = factory.createTc();
                    tc42.getEGBlockLevelElts().add(p2);
                    tr4.getEGContentCellContent().add( tc42 );
                  
                  
                  
                   mainTable.getEGContentRowContent().add(tr4);
                  
                   wordMLPackage.getMainDocumentPart().addObject(mainTable);
                // Now save it
                wordMLPackage.save(new java.io.File("C:\\test\\resultnnn.docx") );
              
                System.out.println("Done.");
                              
        }
        public static org.docx4j.wml.P newImage( WordprocessingMLPackage wordMLPackage,
                byte[] bytes,
                String filenameHint, String altText,
                int id1, int id2, long cx) throws Exception {
      
                BinaryPartAbstractImage imagePart = BinaryPartAbstractImage.createImagePart(wordMLPackage, bytes);
                      
                Inline inline = imagePart.createImageInline( filenameHint, altText,
                                id1, id2, cx);
               
                // Now add the inline in w:p/w:r/w:drawing
                        org.docx4j.wml.ObjectFactory factory = new org.docx4j.wml.ObjectFactory();
                        org.docx4j.wml.P  p = factory.createP();
                        org.docx4j.wml.R  run = factory.createR();            
                        p.getParagraphContent().add(run);      
                        org.docx4j.wml.Drawing drawing = factory.createDrawing();              
                        run.getRunContent().add(drawing);              
                        drawing.getAnchorOrInline().add(inline);
                      
                        return p;
      
}      
       
       
      
    
}