Java 在使用POI读取.xlsx文件时,我遇到了一个错误";Zip文件已关闭"; public Sheet readExcel()引发异常{ //File fi=新文件(新文件(System.getProperty(“user.dir”)+“\\src\\testdata2.xls”); 文件fi=新文件(“C:\\Users\\admin\\workspace\\HMS\\src\\testdata\\testdata1.xlsx”); 工作簿wb=新XSSF工作簿(fi); Sheet Sheet=wb.getSheetAt(0); int rowCount=Sheet.getLastRowNum()-Sheet.getFirstRowNum(); 对于(int i=1;i
通过运行上述代码,我得到了如下错误 线程“main”java.lang.IllegalStateException中的异常:Zip文件 关门了 位于org.apache.poi.openxml4j.util.ZipFileZipEntrySource.getEntries(ZipFileZipEntrySource.java:45) 位于org.apache.poi.openxml4j.opc.ZipPackage.getpartsiml(ZipPackage.java:186) 位于org.apache.poi.openxml4j.opc.OPCPackage.getParts(OPCPackage.java:684) 位于org.apache.poi.openxml4j.opc.OPCPackage.open(OPCPackage.java:254) 位于org.apache.poi.openxml4j.opc.OPCPackage.open(OPCPackage.java:201) 位于org.apache.poi.xssf.usermodel.XSSFWorkbook.(XSSFWorkbook.java:294) 在ExcelReader.readExcel(ExcelReader.java:16) 位于ExcelReader.main(ExcelReader.java:30) 有人能帮我找出到底是什么问题吗Java 在使用POI读取.xlsx文件时,我遇到了一个错误";Zip文件已关闭"; public Sheet readExcel()引发异常{ //File fi=新文件(新文件(System.getProperty(“user.dir”)+“\\src\\testdata2.xls”); 文件fi=新文件(“C:\\Users\\admin\\workspace\\HMS\\src\\testdata\\testdata1.xlsx”); 工作簿wb=新XSSF工作簿(fi); Sheet Sheet=wb.getSheetAt(0); int rowCount=Sheet.getLastRowNum()-Sheet.getFirstRowNum(); 对于(int i=1;i,java,excel,zip,apache-poi,Java,Excel,Zip,Apache Poi,通过运行上述代码,我得到了如下错误 线程“main”java.lang.IllegalStateException中的异常:Zip文件 关门了 位于org.apache.poi.openxml4j.util.ZipFileZipEntrySource.getEntries(ZipFileZipEntrySource.java:45) 位于org.apache.poi.openxml4j.opc.ZipPackage.getpartsiml(ZipPackage.java:186) 位于org.a
我在谷歌上搜索了一下,但没有找到答案 要读取xslx文件,请使用创建FileInputStream类的对象
public Sheet readExcel() throws Exception{
//File fi=new File(new File(System.getProperty("user.dir"))+"\\src\\testdata2.xls");
File fi=new File("C:\\Users\\admin\\workspace\\HMS\\src\\testdata\\testdata1.xlsx");
Workbook wb = new XSSFWorkbook(fi);
Sheet Sheet = wb.getSheetAt(0);
int rowCount = Sheet.getLastRowNum()-Sheet.getFirstRowNum();
for (int i = 1; i < rowCount+1; i++) {
Row row = Sheet.getRow(i);
if(row.getCell(0).toString().length()==0){
System.out.println(row.getCell(1).toString()+"----"+ row.getCell(2).toString()+"----"+
row.getCell(3).toString()+"----"+ row.getCell(4).toString());
}
}
return Sheet;
}
希望这能帮助您……尝试缩短文件名和文件路径。看起来字符在“和”之间的长度有限制。这对我有用 创建XSSFWorkbook对象时,您不一定需要传递FileInputStream文件,您也可以将绝对路径+文件名作为字符串传递,它可能相当长(对我来说是101个字符,108个字符带有双斜杠,可能更长)。我刚刚在Windows 7下编写了一个小型本地应用程序,其唯一参数是一个属性文件,其中包含我要处理的.xlsx文件的绝对路径+文件名(例如属性格式:
datasetFile=C:\\Users\\jlm\\Documents\\testcases\\AAAS\\TestCase2JsonGenerator\\AAAS_g1.xlsx
)。我只是将datasetFile属性作为参数传递给XSSFWorkbook构造函数(示例代码行:wb=newxssfworkbook(tags.get(“datasetFile”);
)。它工作正常,但不要忘记任何双斜杠,否则会出现“Zip文件已关闭”异常(大约丢失2小时)。设置这些标记与webdriver有什么关系?
//Create a object of File class to open xlsx file
File file = new File("path/filename.xlsx");
//Create an object of FileInputStream class to read excel file
FileInputStream inputStream = new FileInputStream(file);
//create object of XSSFWorkbook class
Workbook wb = new XSSFWorkbook(inputStream);