当处理 Excel 文件时,可能会出现循环引用的问题,这是因为 Apache poi 使用了缓存机制,以提高性能。但是,如果不正确地使用该缓存,就会出现循环依赖关系。
解决该问题的一种方法是通过调用 Workbook 的 #clearCaches() 方法清除缓存。另一种方法是通过关闭 Workbook 对象并释放所有相关资源来避免循环依赖。以下是示例代码:
方法一:
Workbook wb = WorkbookFactory.create(inputStream);
Sheet sheet = wb.getSheetAt(0);
for (int i = 0; i < rows; i++) {
Row row = sheet.getRow(i);
for (int j = 0; j < cells; j++) {
Cell cell = row.getCell(j);
// 处理单元格
}
}
wb.clearCaches(); // 清除缓存
方法二:
Workbook wb = WorkbookFactory.create(inputStream);
Sheet sheet = wb.getSheetAt(0);
for (int i = 0; i < rows; i++) {
Row row = sheet.getRow(i);
for (int j = 0; j < cells; j++) {
Cell cell = row.getCell(j);
// 处理单元格
}
}
wb.close(); // 关闭 workbook 对象
通过这两种方法之一,您可以避免 Apache poi 循环依赖问题,并使您的代码更加健壮和可靠。