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 在使用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

通过运行上述代码,我得到了如下错误

线程“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)

有人能帮我找出到底是什么问题吗


我在谷歌上搜索了一下,但没有找到答案

要读取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);