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;
}
通过运行上面的代码我得到这样的错误........
线程中的异常&#34; main&#34; java.lang.IllegalStateException:Zip文件 关闭了 在org.apache.poi.openxml4j.util.ZipFileZipEntrySource.getEntries(ZipFileZipEntrySource.java:45) 在org.apache.poi.openxml4j.opc.ZipPackage.getPartsImpl(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)
任何人都可以帮我找出究竟是什么问题。
我用Google搜索但无法获得解决方案!
答案 0 :(得分:10)
要读取xslx文件,请使用创建FileInputStream类的对象
//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);
希望这能帮助你...
答案 1 :(得分:0)
尝试缩短文件名和文件路径。看起来字符可以在&#34;之间存在多长时间。和&#34;。它对我有用!
答案 2 :(得分:0)
创建 XSSFWorkbook 对象时,您不一定需要传递 FileInputStream ,您也可以传递一个绝对路径+文件名作为一个字符串,它可以很长(对我来说有101个字符,108个字符与双斜线,可能会更长)。我刚刚在Windows 7下编写了一个小型本地应用程序,其唯一参数是一个属性文件,其中包含(以及其他属性)我想要处理的.xlsx文件的绝对路径+文件名(示例属性格式:datasetFile=C:\\Users\\jlm\\Documents\\Test Cases\\AAAS\\TestCase2JsonGenerator\\AAAS_g1.xlsx
) 。我只是将 datasetFile 属性作为参数传递给 XSSFWorkbook 构造函数(示例代码行:wb = new XSSFWorkbook(tags.get("datasetFile"));
)。它工作得很好,但不要忘记任何双斜线,否则你会得到“Zip文件已关闭”异常(大约2个小时丢失)。