在尝试使用 Apache POI 打开 excel 时,我得到了
org.apache.poi.openxml4j.exceptions.InvalidOperationException: Can't open the specified file: 'C:\Users\mdwaipay\AppData\Local\Temp\poifiles\poi-ooxml-1570030023.tmp'
我检查了。没有创建这样的文件夹。我正在使用 Apache POI 版本 3.6。
有什么帮助吗?类似的代码在不同的工作区中运行良好。在这里失去了思想。
Code:
public Xls_Reader(String path) {
this.path=path;
try {
fis = new FileInputStream(path);
workbook = new XSSFWorkbook(fis);
sheet = workbook.getSheetAt(0);
fis.close();
}
catch (Exception e)
{ e.printStackTrace();
}
}
为什么你要把一个完美的文件包装在一个InputStream
,然后要求 POI 必须为您缓冲整个数据以便它可以进行随机访问?如果您直接将文件传递给 POI,生活会好得多,这样它就可以根据需要跳过!
如果您想同时使用 XSSF (.xlsx) 和 HSSF (.xls),请将代码更改为
public Xls_Reader(String path) {
this.path = path;
try {
File f = new File(path);
workbook = WorkbookFactory.create(f);
sheet = workbook.getSheetAt(0);
} catch (Exception e) {
e.printStackTrace();
}
}
如果您只需要 XSSF 支持,和/或需要完全控制资源何时关闭,请执行类似的操作
OPCPackage pkg = OPCPackage.open(path);
Workbook wb = new XSSFWorkbook(pkg);
// use the workbook
// When you no longer needed it, immediately close and release the file resources
pkg.close();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)