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);