JXL 僅支援 .xls (BIFF8),不支援 .xlsx**。現代專案請改用 Apache POI (HSSF/XSSF) 雙格式通吃。本文為維護舊系統提供完整 JXL 範例。
WritableWorkbook wb = Workbook.createWorkbook(new FileOutputStream("out.xls"));
WritableSheet sheet = wb.createSheet("Sheet1", 0);
// 1. 樣式定義
WritableFont titleFont = new WritableFont(WritableFont.TIMES, 18, WritableFont.BOLD, true);
WritableCellFormat titleFmt = new WritableCellFormat(titleFont);
titleFmt.setAlignment(Alignment.CENTRE);
// 2. 寫入各型別
sheet.addCell(new Label(0, 0, "標題", titleFmt)); // 字串
sheet.addCell(new Number(2, 0, 3.14159, new WritableCellFormat(new NumberFormat("#.##")))); // 數字格式
sheet.addCell(new Boolean(3, 0, true)); // 布林
sheet.addCell(new DateTime(0, 1, new Date())); // 日期
sheet.addCell(new Label(0, 2, "紅字", new WritableCellFormat(new WritableFont(WritableFont.ARIAL, 10, WritableFont.NO_BOLD, false, UnderlineStyle.NO_UNDERLINE, Colour.RED))));
// 3. 合併儲存格 (起始列,起始行,結束列,結束行)
sheet.mergeCells(0, 0, 2, 0); // 標題跨三欄
wb.write(); wb.close();
Workbook wb = Workbook.getWorkbook(new File("in.xls"));
Sheet sheet = wb.getSheet(0);
List
| 功能 | JXL | Apache POI (XSSF/HSSF) |
|---|---|---|
| 格式支援 | .xls only | .xls (HSSF) + .xlsx (XSSF) |
| 大數據量 | 全載入記憶體 | SXSSF (流式寫入) / XSSF (Sax 讀取) |
| 樣式/圖表/樞紐分析 | 弱/無 | 完整支援 |
| Maven 坐標 | net.sourceforge.jexcelapi:jxl | org.apache.poi:poi / poi-ooxml |