Java 读取xlsx
读取特别大的xlsx文件时, 需要使用StreamingReader, 可以控制JVM内存峰值在200M以内
InputStream is = new FileInputStream(new File(filePath)); StreamingReader reader = StreamingReader.builder() .rowCacheSize(10) // number of rows to keep in memory (defaults to 10) .bufferSize(1024) // buffer size to use when reading InputStream to file (defaults to 1024) .sheetIndex(0) // index of sheet to use (defaults to 0) .read(is); // InputStream or File for XLSX file (required) for (Row r : reader) { for (Cell cell : r) { switch (cell.getCellType()) { case Cell.CELL_TYPE_NUMERIC: System.out.print("D" + cell.getNumericCellValue() + "\t"); break; case Cell.CELL_TYPE_STRING: System.out.print("S" + cell.getStringCellValue() + "\t"); break; case Cell.CELL_TYPE_BOOLEAN: System.out.print("B" + (cell.getBooleanCellValue() + "\t")); break; } } System.out.print("\n"); }
https://github.com/monitorjbl/excel-streaming-reader
相比较官方的方案
File file = new File("C:\\D\\Data Book.xlsx"); OPCPackage opcPackage = OPCPackage.open(file); XSSFWorkbook workbook = new XSSFWorkbook(opcPackage);
官方的方案内存占用明显较高.
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
· 全网最简单!3分钟用满血DeepSeek R1开发一款AI智能客服,零代码轻松接入微信、公众号、小程