import java.io.File; import java.io.IOException; import java.util.Calendar; import java.util.Date; import java.util.Random; import jxl.CellView; import jxl.Workbook; import jxl.write.DateFormat; import jxl.write.DateTime; import jxl.write.Label; import jxl.write.Number; import jxl.write.NumberFormat; import jxl.write.NumberFormats; import jxl.write.WritableCellFormat; import jxl.write.WritableFont; import jxl.write.WritableSheet; import jxl.write.WritableWorkbook; import jxl.write.WriteException; import jxl.write.biff.RowsExceededException; public class MyDemo { public MyDemo() { } public void writeToExcel() throws IOException, RowsExceededException, WriteException { // create a workbook WritableWorkbook workbook = Workbook.createWorkbook(new File( "C:/Users/Kanishka/Desktop/myDemoExcel.xls")); // create a new sheet inside the workbook WritableSheet sheet = workbook.createSheet("Sheet 01", 0); // instantiate a new label object Label cellLabel = new Label(0, 1, "This is a cell"); // now add the cell object to sheet sheet.addCell(cellLabel); // instantiate some number objects Number cellNumber1 = new Number(0, 2, 3.145636454); Number cellNumber2 = new Number(0, 3, 4500000000.0); sheet.addCell(cellNumber1); sheet.addCell(cellNumber2); workbook.write(); workbook.close(); System.out.println("Excel sheet created successfully!"); } public void writeToExcelFormatted() throws IOException, RowsExceededException, WriteException { WritableWorkbook workbook = Workbook.createWorkbook(new File( "C:/Users/Kanishka/Desktop/Formatted DemoExcel.xls")); WritableSheet sheet = workbook.createSheet("Sheet 01", 0); WritableFont arial14Font = new WritableFont(WritableFont.ARIAL, 14); WritableCellFormat writableCellFormat = new WritableCellFormat( arial14Font); writableCellFormat.setWrap(true); Label cellLabel1 = new Label(0, 1, "This is a formatted cell", writableCellFormat); Label cellLabel2 = new Label(1, 2, "This is an another formatted cell", writableCellFormat); sheet.addCell(cellLabel1); sheet.addCell(cellLabel2); // specify the format of the number NumberFormat myNumberFormat = new NumberFormat("#.####"); // specify Font+number format object WritableCellFormat cellFormatForNumbers = new WritableCellFormat( arial14Font, myNumberFormat); // initiate number Number num1 = new Number(2, 1, 3.12456346534634, cellFormatForNumbers); Number num2 = new Number(2, 2, 343.3454823452318, cellFormatForNumbers); // add numbers to sheet sheet.addCell(num1); sheet.addCell(num2); // set auto size for column 0 CellView cellView = sheet.getColumnView(0); cellView.setAutosize(true); sheet.setColumnView(0, cellView); workbook.write(); workbook.close(); System.out.println("Excel sheet created successfully!"); } public void createExcelDocumentPattern() throws IOException, RowsExceededException, WriteException { WritableWorkbook workbook = Workbook.createWorkbook(new File( "C:/Users/Kanishka/Desktop/Formatted DemoExcel Pattern.xls")); WritableSheet sheet = workbook.createSheet("Sheet 01", 0); WritableFont arial14Font = new WritableFont(WritableFont.TIMES, 10); WritableFont arial12FontBold = new WritableFont(WritableFont.ARIAL, 12, WritableFont.BOLD, false); WritableCellFormat writableCellFormat = new WritableCellFormat( arial14Font); WritableCellFormat writableCellFormatHeader = new WritableCellFormat( arial12FontBold); Label cellHeaderStringCol = new Label(0, 0, "String Column", writableCellFormatHeader); Label cellHeaderNumCol1 = new Label(1, 0, "Number Column 1", writableCellFormatHeader); Label cellHeaderNumCol2 = new Label(2, 0, "Number Column 2", writableCellFormatHeader); Label cellHeaderNumCol3 = new Label(3, 0, "Number Column 3", writableCellFormatHeader); Label cellHeaderNumCol4 = new Label(4, 0, "Number Column 4", writableCellFormatHeader); Label cellHeaderNumCol5 = new Label(5, 0, "Date Column", writableCellFormatHeader); sheet.addCell(cellHeaderStringCol); sheet.addCell(cellHeaderNumCol1); sheet.addCell(cellHeaderNumCol2); sheet.addCell(cellHeaderNumCol3); sheet.addCell(cellHeaderNumCol4); sheet.addCell(cellHeaderNumCol5); NumberFormat numberFormat5DecPnts = new NumberFormat("#.#####"); WritableCellFormat numberCellFormat = new WritableCellFormat( arial14Font, numberFormat5DecPnts); WritableCellFormat numberCellFormatIntegers = new WritableCellFormat( NumberFormats.INTEGER); for (int i = 1; i < 100; i++) { String rowString = "This is row " + i; double randNum1 = new Random(i).nextDouble() + 1; double randNum2 = new Random(i).nextDouble() + 10; double randNum3 = new Random(i).nextDouble() + 2; int randNum4 = new Random(i).nextInt(); Label stringLbl = new Label(0, i, rowString, writableCellFormat); Number num1 = new Number(1, i, randNum1, numberCellFormat); Number num2 = new Number(2, i, randNum2, numberCellFormat); Number num3 = new Number(3, i, randNum3, numberCellFormat); Number num4 = new Number(4, i, randNum4, numberCellFormatIntegers); // sample dates Date now = Calendar.getInstance().getTime(); DateFormat customDateFormat = new DateFormat("dd MMM yyyy hh:mm:ss"); WritableCellFormat dateFormat = new WritableCellFormat( customDateFormat); DateTime dateCell = new DateTime(5, i, now, dateFormat); sheet.addCell(dateCell); sheet.addCell(stringLbl); sheet.addCell(num1); sheet.addCell(num2); sheet.addCell(num3); sheet.addCell(num4); } // set autosize for columns for (int i = 0; i < 6; i++) { CellView cv = sheet.getColumnView(i); cv.setAutosize(true); sheet.setColumnView(i, cv); } workbook.write(); workbook.close(); System.out.println("Excel document generated successfully!"); } }
Thursday, March 22, 2012
Java Excel Manipulation
We can use jxl library to deal with excel docs
Subscribe to:
Post Comments (Atom)
Thank you very much for a wonderful and informative Article and code. I came across another great Java Excel component by the name Aspose.Cells for Java. I am sure you will like it.
ReplyDelete