Tag: 不足的

java.lang.OutOfMemoryError:使用XLSReader将Excel文件读入java bean时的Java堆空间

我得到java.lang.OutOfMemoryError:在使用XLSReader读取Excel文件到Java bean时的Java堆空间 这是代码片段。 public static <T> List<T> parseExcelFileToBeans(final File xlsFile, final File jxlsConfigFile) throws Exception { final XLSReader xlsReader = ReaderBuilder.buildFromXML(jxlsConfigFile); final List<T> result = new ArrayList<>(); final Map<String, Object> beans = new HashMap<>(); beans.put("result", result); try (InputStream inputStream = new BufferedInputStream(new FileInputStream(xlsFile))) { xlsReader.read(inputStream, beans); } return result; }

读取20MB XLSX文件的“OutOfMemoryException”

我正在使用NPOI来处理Excel文件。 以下是我正在阅读文件的方式: using (FileStream stream = File.OpenRead(excelFilePath)) { IWorkbook wb = WorkbookFactory.Create(stream); … } 但是,对于大于几兆字节的任何XLSX文件而言,这会导致内存使用量猛增至1GB左右,并最终导致OOMexception。 做一些研究,我发现 ,奇怪的是,从文件加载工作簿,而不是一个stream导致POI内存消耗更less。 与我提供的使用Files提供的Java示例等效的最接近的C#如下所示: OPCPackage pkg = OPCPackage.Open(new FileInfo(excelFilePath)); XSSFWorkbook wb = new XSSFWorkbook(pkg); 但它似乎使用相同的底层实现,因为内存使用仍然是相同的,并导致OutOfMemoryexception。 NPOI是否有内置的用于处理大型XLSX文件的内容? 对可以同时处理XLS和XLSX文件的替代库的build议也值得欢迎。