首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Apache POI 操作 Excel 完全指南(一):HSSF Usermodel 讀寫基礎

     編輯:Java 相關知識

Excel 格式與 HSSF

Excel 97~XP 統稱 BIFF8 格式。POI 實現稱為 HSSF(Horrible SpreadSheet Format),基於 POIFS(OLE 2 複合文檔系統)。

兩套讀取 API

  • Usermodel:Workbook → Sheet → Row → Cell 物件樹,整個文檔載入內存,易用但佔內存。
  • Eventusermodel:SAX 風格事件驅動,流式處理,低內存,僅支持讀取。

Usermodel 讀取範例

InputStream is = new FileInputStream("workbook.xls");
HSSFWorkbook wb = new HSSFWorkbook(is);
HSSFSheet sheet = wb.getSheetAt(0);
HSSFRow row = sheet.getRow(2);
HSSFCell cell = row.getCell((short)3);

if (cell.getCellType() == HSSFCell.CELL_TYPE_STRING) {
    System.out.println(cell.getStringCellValue());
} else if (cell.getCellType() == HSSFCell.CELL_TYPE_NUMERIC) {
    if (HSSFDateUtil.isCellDateFormatted(cell)) {
        System.out.println(cell.getDateCellValue());
    } else {
        System.out.println(cell.getNumericCellValue());
    }
}

Usermodel 寫入範例

HSSFWorkbook wb = new HSSFWorkbook();
HSSFSheet sheet = wb.createSheet();
HSSFRow row = sheet.createRow((short)0);
row.createCell((short)0).setCellValue(1);
row.createCell((short)1).setCellValue(1.2);
row.createCell((short)2).setCellValue("字符串");
row.createCell((short)3).setCellValue(true);

// 樣式復用
HSSFCellStyle style = wb.createCellStyle();
style.setDataFormat(HSSFDataFormat.getBuiltinFormat("($#,##0_);[Red]($#,##0)"));
style.setFillBackgroundColor(HSSFColor.AQUA.index);
cell.setCellStyle(style);

FileOutputStream out = new FileOutputStream("workbook.xls");
wb.write(out);
out.close();

公式支持(Beta)

cell.setCellFormula("SUM(A1:A2)"),支持內建函數與運算符,邏輯函數(IF)尚在開發中,生產環境需充分測試。

日期處理提示

Excel 內部以數值存儲日期,需結合 HSSFDateUtil.isCellDateFormatted(cell) 判斷,否則易誤讀為數字。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved