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

Apache POI 實戰:Java 讀寫 Excel (.xls) 完全指南

     編輯:Java 程式設計入門

環境準備

  • JDK 1.4+(示例基於 1.4.0)
  • Jakarta POI 库:官網下載,核心 JAR:poi-x.x.jar
  • 僅支持 Excel 97-2003 格式(.xls),.xlsx 需 POI 3.5+ 及 poi-ooxml

創建 Excel 文檔

CreateXL.java —— 構建工作簿 → 工作表 → 行 → 單元格 → 寫入值 → 文件流輸出。

import org.apache.poi.hssf.usermodel.*;
import java.io.FileOutputStream;

public class CreateXL {
    public static final String OUTPUT_FILE = "D:/JTest/gongye.xls";

    public static void main(String[] args) {
        try {
            HSSFWorkbook workbook = new HSSFWorkbook();
            HSSFSheet sheet = workbook.createSheet("效益指標"); // 指定工作表名
            HSSFRow row = sheet.createRow(0); // 第一行(索引 0)
            HSSFCell cell = row.createCell(0); // 第一列(索引 0)

            cell.setCellType(HSSFCell.CELL_TYPE_STRING);
            cell.setCellValue("增加值");

            FileOutputStream fos = new FileOutputStream(OUTPUT_FILE);
            workbook.write(fos);
            fos.flush();
            fos.close();
            System.out.println("文件生成成功:" + OUTPUT_FILE);
        } catch (Exception e) {
            System.err.println("創建失敗:" + e);
        }
    }
}

讀取 Excel 數據

ReadXL.java —— 文件流輸入 → 工作簿 → 工作表(按名/索引) → 行 → 單元格 → 取值。

import org.apache.poi.hssf.usermodel.*;
import java.io.FileInputStream;

public class ReadXL {
    public static final String INPUT_FILE = "D:/JTest/gongye.xls";

    public static void main(String[] args) {
        try {
            HSSFWorkbook workbook = new HSSFWorkbook(new FileInputStream(INPUT_FILE));
            HSSFSheet sheet = workbook.getSheet("Sheet1"); // 或 getSheetAt(0)
            HSSFRow row = sheet.getRow(0);
            HSSFCell cell = row.getCell(0);

            System.out.println("左上角單元格值:" + cell.getStringCellValue());
        } catch (Exception e) {
            System.err.println("讀取失敗:" + e);
        }
    }
}

單元格樣式與字體設置

POI 採用「創建樣式 → 關聯字體 → 應用到單元格」三步走模式:

// 1. 創建紅色粗體字體
HSSFFont font = workbook.createFont();
font.setColor(HSSFFont.COLOR_RED);
font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);

// 2. 創建單元格樣式並關聯字體
HSSFCellStyle style = workbook.createCellStyle();
style.setFont(font);

// 3. 應用樣式
HSSFCell cell = row.createCell(0);
cell.setCellStyle(style);
cell.setCellType(HSSFCell.CELL_TYPE_STRING);
cell.setCellValue("標題");

進階提示

  • 數字/日期格式:style.setDataFormat(workbook.createDataFormat().getFormat("0.00")) 或 "yyyy-mm-dd"
  • 合併單元格:sheet.addMergedRegion(new CellRangeAddress(0, 0, 0, 3))(首行前四列合併)
  • 列寬自適應:sheet.autoSizeColumn(0)
  • 大數據量:使用 SXSSFWorkbook(POI 3.8+)流式寫入,避免 OOM
  • .xlsx 支持:替換 HSSF* 為 XSSF*,依賴 poi-ooxml
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved