JExcelAPI 的小筆記
讀取既有 excel 檔並開始修改:
Workbook template = null; WritableWorkbook workbook = null; try { template = Workbook.getWorkbook(new File("template.xls")); workbook = Workbook.createWorkbook(new File("newExcel.xls"),template); Sheet sheet = workbook.getSheet(0) ; //拿第一 sheet //做一些事 .... workbook.write();// 寫入 } finally { try { if (template != null) { template.close(); } } finally { if (workbook != null) { workbook.close(); } } }
讀取既有儲存格並修改:
//0, 1 是欄與列的 index,代表 A2。 Label a2 = (Label) sheet.getWritableCell(0, 1) ; //已知 A2 為文字欄位 a2.setString("my content at A2"); //已知 E4 為日期欄位 DateTime orderTime = (DateTime) sheet.getCell(4, 3); orderTime.setDate(createDate);
新增儲存格:
Label b2label = new Label(1, 1, "B2 content"); //文字 sheet.addCell(b2label); Number b3number = new Number(1, 2, 13); //數字 sheet.addCell(b3number);
變更儲存格樣式:
WritableCellFormat cellFormat = new WritableCellFormat(); //儲存格文字過長換行 cellFormat.setWrap(true); //垂直向上對齊 cellFormat.setVerticalAlignment(VerticalAlignment.TOP); //水平置中對齊 cellFormat.setAlignment(Alignment.CENTER); //上面加框線,粗細設為中等 cellFormat.setBorder(Border.TOP, BorderLineStyle.MEDIUM); //設定 Tahoma 字型,大小 12 WritableFont font12 = new WritableFont(WritableFont.TAHOMA, 12); cellFormat.setFont(font12); Label b2label = new Label(1, 1, "B2 content"); b2label.setCellFormat(cellFormat); //設定儲存格樣式 sheet.addCell(b2label);
設定數字格式:
//按 excel 格式語法新增一 NumberFormat NumberFormat numberFormat = new NumberFormat("#,##0.##") ; //依NumberFormat 建立 cellFormat WritableCellFormat cellFormat = new WritableCellFormat(numberFormat); Number b2 = new Number(1, 1, 1201.1); b2.setCellFormat(cellFormat); sheet.addCell(b2); //顯示結果為 1,201.1 // NumberFormat 格式說明: 0 代表一定顯示,# 代表有才顯示。 new NumberFormat("#,000"); //此格式最少顯示3個整數位,忽略任何小數 new NumberFormat("#,##0.##") //此格式最少顯示1個整數位,最多顯示到兩位小數
合併儲存格:
sheet.mergeCells(3, 7, 6, 7); //合併 D7~G7 四格 Label d7_to_g7 = new Label(3, 7, "a content in merged cell"); sheet.addCell(d7_to_g7);