因此,我使用Apache POI将Excel文件解析为我的数据库。为此,我正在初始化XSSFWorkbook
,如下所示:
XSSFWorkbook workbook = new XSSFWorkbook(fIP);
然后我继续我的方法。 workbook.close()
不可用作以后关闭工作簿的方法。关于如何在任务完成后让垃圾收集进入工作簿的任何想法?
答案 0 :(得分:9)
我有这个问题,而且没什么意义。 最后我跟踪问题到我的IDE(netbeans)正在拿起早期版本的POI库(v3.8),它没有“关闭”方法。 因此,请检查您的类路径,并查找不同版本的POI库的重复导入。
答案 1 :(得分:3)
docs表示该类实现了Closeable
。因此它有一个close()
方法,您可以像这样关闭工作簿:
XSSFWorkbook workbook = new XSSFWorkbook(fIP)
// Do your stuff;
workbook.close();
由于该类还实现了AutoCloseable
,你也可以使用try-with-resources块:
try (XSSFWorkbook workbook = new XSSFWorkbook(fIP)) {
// Do your stuff
}
如果使用此方法,则在try块完成后将自动关闭工作簿。
答案 2 :(得分:0)
只需从以下的apache页面更改示例:
try {
FileInputStream excelFile = new FileInputStream(new File(FILE_NAME));
Workbook workbook = new XSSFWorkbook(excelFile);
//more stuffs
}
要:
Workbook workbook;
try {
InputStream excelFile = file.getInputStream();
workbook = new XSSFWorkbook(excelFile);
//more stuffs
workbook.close();
excelFile.close();
}