1. Apache POI 4.1.2 快速入门指南如果你正在寻找一个能够轻松操作Excel和Word文档的Java库Apache POI绝对是你的首选。作为一个在Java开发领域摸爬滚打多年的老手我可以负责任地说POI是目前最成熟、功能最全面的Office文档处理解决方案之一。POI 4.1.2版本在性能和稳定性上都有显著提升特别是对大型Excel文件的支持更加友好。记得我第一次接触POI时面对复杂的API文档也是一头雾水但实际使用后发现它的设计非常直观。比如创建一个Excel文件只需要几行代码Workbook workbook new XSSFWorkbook(); Sheet sheet workbook.createSheet(我的工作表); Row row sheet.createRow(0); Cell cell row.createCell(0); cell.setCellValue(Hello POI!);2. Maven依赖配置2.1 基础依赖配置要在项目中使用POI 4.1.2首先需要在pom.xml中添加依赖。这里有个小技巧POI由多个模块组成你可以根据需求只引入必要的模块减少项目体积。核心依赖配置如下dependency groupIdorg.apache.poi/groupId artifactIdpoi/artifactId version4.1.2/version /dependency dependency groupIdorg.apache.poi/groupId artifactIdpoi-ooxml/artifactId version4.1.2/version /dependency2.2 可选模块POI还提供了一些可选模块根据你的需求可以选择性添加poi-scratchpad支持Word 97-2003格式(.doc)poi-excelant提供Excel公式计算功能poi-ooxml-schemas包含完整的OOXML模式定义3. 核心API详解3.1 工作簿(Workbook)操作Workbook是POI中最核心的接口代表整个Excel文档。POI支持两种格式的工作簿类型类名文件格式特点HSSFHSSFWorkbook.xls处理Excel 97-2003格式XSSFXSSFWorkbook.xlsx处理Excel 2007及以上格式创建新工作簿的代码示例// 创建XLSX格式的工作簿 Workbook xssfWorkbook new XSSFWorkbook(); // 创建XLS格式的工作簿 Workbook hssfWorkbook new HSSFWorkbook();3.2 工作表(Sheet)操作工作表是Excel中的单个标签页通过Workbook对象可以创建和管理多个工作表// 创建工作表 Sheet sheet1 workbook.createSheet(第一页); Sheet sheet2 workbook.createSheet(第二页); // 获取工作表数量 int sheetCount workbook.getNumberOfSheets(); // 通过索引获取工作表 Sheet firstSheet workbook.getSheetAt(0); // 通过名称获取工作表 Sheet targetSheet workbook.getSheet(第一页);4. 单元格操作实战4.1 基本单元格操作单元格是Excel中最基本的元素POI提供了丰富的API来操作单元格// 创建行和单元格 Row row sheet.createRow(0); // 第一行 Cell cell row.createCell(0); // 第一列 // 设置单元格值 cell.setCellValue(文本内容); cell.setCellValue(123.45); // 数字 cell.setCellValue(true); // 布尔值 cell.setCellValue(new Date()); // 日期 // 设置单元格样式 CellStyle style workbook.createCellStyle(); style.setFillForegroundColor(IndexedColors.YELLOW.getIndex()); style.setFillPattern(FillPatternType.SOLID_FOREGROUND); cell.setCellStyle(style);4.2 高级单元格特性POI还支持一些高级单元格操作// 合并单元格 sheet.addMergedRegion(new CellRangeAddress(0, 2, 0, 3)); // 设置列宽 sheet.setColumnWidth(0, 20*256); // 20个字符宽度 // 设置行高 row.setHeightInPoints(30); // 30磅5. 文件读写操作5.1 写入Excel文件将创建好的工作簿写入文件非常简单try (FileOutputStream out new FileOutputStream(workbook.xlsx)) { workbook.write(out); }5.2 读取Excel文件读取现有Excel文件也很直观try (FileInputStream fis new FileInputStream(workbook.xlsx); Workbook workbook new XSSFWorkbook(fis)) { Sheet sheet workbook.getSheetAt(0); for (Row row : sheet) { for (Cell cell : row) { // 处理每个单元格 } } }6. 常见问题与解决方案在实际使用POI的过程中我遇到过不少坑这里分享几个常见问题的解决方法内存溢出问题处理大文件时可以使用SXSSFWorkbook替代XSSFWorkbook它采用流式处理方式内存占用更小。日期格式问题Excel中的日期存储方式特殊需要使用DateUtil类进行转换if (DateUtil.isCellDateFormatted(cell)) { Date date cell.getDateCellValue(); }公式计算如果需要计算公式结果可以使用FormulaEvaluatorFormulaEvaluator evaluator workbook.getCreationHelper().createFormulaEvaluator(); evaluator.evaluateFormulaCell(cell);7. 性能优化技巧经过多次项目实践我总结出几个提升POI性能的技巧批量写入数据避免频繁创建单元格样式尽量复用已有的CellStyle对象。使用SXSSF处理大数据对于超过10万行的数据SXSSFWorkbook是更好的选择。关闭自动计算在写入大量公式前可以暂时关闭自动计算workbook.setForceFormulaRecalculation(false);合理使用缓存对于重复读取的文件可以考虑缓存Workbook对象。在实际项目中我发现合理使用这些技巧可以将处理时间减少50%以上。特别是在处理财务报告这类复杂Excel文件时性能优化尤为重要。