org.apache.poi.hssf.record.RecordInputStream$LeftoverDataException: Initialisation of record 0x203(NumberRecord) left 4 bytes remaining still to be read.
时间: 2024-02-19 11:57:16 浏览: 426
这个错误通常意味着您正在尝试读取的 Excel 文件中存在损坏或不正确的记录。如果您使用的是 Apache POI 库,可以尝试使用 `HSSFWorkbook` 或 `XSSFWorkbook` 类代替 `Workbook` 接口,以根据 Excel 文件的类型使用正确的解析器。例如,如果您要读取 XLS 文件,请使用 `HSSFWorkbook` 类。
此外,如果您尝试读取的 Excel 文件包含一些非常大的单元格值或公式,可能会导致此错误。您可以尝试增加 Apache POI 库的内存限制以解决此问题。例如,使用以下代码为 `HSSFWorkbook` 设置内存限制:
```
HSSFWorkbook wb = new HSSFWorkbook(new POIFSFileSystem(new FileInputStream("file.xls")), true);
wb.setMemoryPOIUsage(5000000);
```
这将将内存限制设置为 5MB,您可以根据需要进行调整。
相关问题
ExcelUtils.readExcelFile发生错误org.apache.poi.hssf.record.RecordInputStream$LeftoverDataException: Initialisation of record 0x203(NumberRecord) left 4 bytes remaining still to be read.
这个错误通常意味着您正在尝试读取的 Excel 文件中存在损坏或不正确的记录。建议您尝试使用 Apache POI 库的最新版本,并检查您的 Excel 文件是否正确,例如,是否有缺失的单元格或格式错误的单元格。
另外,您可能需要检查您读取 Excel 文件的方式是否正确。例如,如果您尝试读取 XLS 文件,请使用 `HSSFWorkbook` 类。如果您尝试读取 XLSX 文件,请使用 `XSSFWorkbook` 类。
最后,如果您的 Excel 文件非常大或包含大量数据,则可能会导致内存不足或性能问题。您可以尝试增加 Java 堆内存空间或使用分段读取或流式读取数据的技术来解决此问题。
阅读全文