Java将Excel转CSV的核心逻辑可压缩为三行代码,但需预先配置Apache POI依赖、明确文件路径,并仅适用于单Sheet、无公式、无合并单元格的简单场景;实际项目中应封装健壮方法,尤其需自定义getCellValue()安全处理多类型单元格。

Java 把 Excel 转 CSV,真能三行代码搞定?严格来说——核心逻辑可以压缩到三行,但前提是已准备好依赖、文件路径明确、且只处理简单场景(比如单个 Sheet、无公式、无合并单元格)。实际项目中建议封装健壮些,但入门或临时脚本,确实可以极简实现。
用 Maven,加这一段(POI 支持 .xls 和 .xlsx):
(这不是代码行,但必不可少)<dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>5.2.4</version> </dependency>
假设你有一个 input.xlsx,想转成 output.csv,用 XSSFWorkbook(.xlsx)为例:
Workbook wb = new XSSFWorkbook(new FileInputStream("input.xlsx"));
Sheet sheet = wb.getSheetAt(0);
try (PrintWriter pw = new PrintWriter("output.csv")) {
for (Row row : sheet) {
pw.println(row.stream().map(cell -> getCellValue(cell)).collect(Collectors.joining(",")));
}
}⚠️ 注意:上面“三行”是逻辑主干(打开、取表、遍历写),但 getCellValue() 需要自己补一个工具方法来安全取值(处理字符串/数字/日期/空单元格),否则会 NPE 或类型异常。
立即学习“Java免费学习笔记(深入)”;
Excel 单元格类型多,直接 cell.getStringCellValue() 会崩。推荐一个轻量版 getCellValue():
cell.getCellType() 判断类型,再调对应 getterDateUtil.isCellDateFormatted(cell) 区分日期和数字转完可能发现:
new PrintWriter(file, "UTF-8")
cell.getNumericCellValue() 后格式化为字符串基本上就这些。真要一行命令跑通,用 Python pandas 或命令行工具(如 in2csv)更顺;但在 Java 项目里嵌入转换逻辑,POI 这套写法清晰可控,不复杂但容易忽略细节。
以上就是Java 怎么把 Excel 转成 CSV?三行代码的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号