JXL (jexcelapi) 是純 Java 實作的 Excel 操作庫,支援 .xls 格式(不支援 .xlsx)。本文示範建立帶樣式的試算表、寫入標題與資料列、設定欄寬、邊框、字體、背景色,並補充讀取 Excel 的基本 API。
import jxl.*;
import jxl.write.*;
import jxl.format.*;
import java.io.File;
public class JxlExcelDemo {
public boolean create(String filePath) {
try (WritableWorkbook book = Workbook.createWorkbook(new File(filePath))) {
WritableSheet sheet = book.createSheet("報表", 0);
sheet.setColumnView(0, 5); // 欄寬
sheet.getSettings().setShowGridLines(false);
// 樣式定義
WritableFont headerFont = new WritableFont(WritableFont.ARIAL, 10, WritableFont.BOLD);
WritableCellFormat headerFmt = new WritableCellFormat(headerFont);
headerFmt.setBackground(Colour.YELLOW);
headerFmt.setBorder(Border.ALL, BorderLineStyle.THICK, Colour.BLACK);
headerFmt.setAlignment(Alignment.CENTRE);
WritableFont bodyFont = new WritableFont(WritableFont.ARIAL, 10);
WritableCellFormat bodyFmt = new WritableCellFormat(bodyFont);
bodyFmt.setBackground(Colour.WHITE);
bodyFmt.setBorder(Border.ALL, BorderLineStyle.THIN, Colour.BLACK);
// 寫入標題
String[] headers = {"編號", "姓名", "性別", "年齡"};
for (int i = 0; i < headers.length; i++) {
sheet.addCell(new Label(i, 0, headers[i], headerFmt));
}
// 寫入資料
Object[][] data = {
{1, "歐陽鋒", "男", 68},
{2, "黃藥師", "男", 67},
{3, "洪七公", "男", 70},
{4, "郭靖", "男", 32}
};
for (int r = 0; r < data.length; r++) {
for (int c = 0; c < data[r].length; c++) {
String val = data[r][c].toString();
sheet.addCell(new Label(c, r + 1, val, bodyFmt));
}
}
book.write();
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
}
Workbook.getWorkbook(File) 取得工作簿sheet.getCell(col, row) 取得儲存格cell.getContents() 取得字串值cell.getType() 取得型別workbook.close() 釋放資源| 類別/介面 | 方法 | 說明 |
|---|---|---|
| Workbook | getNumberOfSheets() | 工作表數量 |
| Workbook | getSheet(int index) | 取得指定索引工作表 |
| Sheet | getRows() / getColumns() | 列數/欄數 |
| Sheet | getRow(int row) | 取得整列 Cell 陣列 |
JXL 已停止維護,新專案建議改用 Apache POI(支援 .xlsx)或 EasyExcel。