poi-x.x.jarpoi-ooxmlCreateXL.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);
}
}
}
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+)流式寫入,避免 OOMHSSF* 為 XSSF*,依賴 poi-ooxml