首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Apache处理.xls,但在.xlsx上抛出异常

Apache处理.xls,但在.xlsx上抛出异常
EN

Stack Overflow用户
提问于 2022-10-09 14:26:26
回答 1查看 68关注 0票数 1

我正在使用NetBeans 14来用Ant构建一个Java8项目。我已包括:

代码语言:javascript
运行
复制
poi-5.2.3.jar
poi-ooxml-full-5.2.3.jar
SpareseBitSet-1.2.jar
commons-codec-1.15.jar
commons-collections4-4.4.jar
commons-compress-1.2.1.jar
commons-io-2.11.0.jar
commons-math3-3.6.1.jar
curvesapi-1.0.7.jar
xml-api-1.4.0.1.jar
xmlbeans-5.1.1.jar

它造得很好。当我使用xls文件作为输入创建工作簿时,它可以工作。当我试图使用xlsx文件创建工作簿时,它会抛出一个异常报告:

代码语言:javascript
运行
复制
IO Exception processing input Bio file
java.io.IOException: Your InputStream was neither an OLE2 stream, nor an OOXML stream or you haven't provide the poi-ooxml*.jar in the classpath/modulepath - FileMagic: OOXML, having providers: [org.apache.poi.hssf.usermodel.HSSFWorkbookFactory@71a2f010]
    at org.apache.poi.ss.usermodel.WorkbookFactory.wp(WorkbookFactory.java:334) ~[poi-5.2.3.jar:5.2.3]
    at org.apache.poi.ss.usermodel.WorkbookFactory.create(WorkbookFactory.java:311) ~[poi-5.2.3.jar:5.2.3]
    at org.apache.poi.ss.usermodel.WorkbookFactory.create(WorkbookFactory.java:277) ~[poi-5.2.3.jar:5.2.3]
    at org.apache.poi.ss.usermodel.WorkbookFactory.create(WorkbookFactory.java:255) ~[poi-5.2.3.jar:5.2.3]

我尝试过更改ooxml库类型(-lite、-full等)。任何帮助都是欢迎的。

EN

回答 1

Stack Overflow用户

发布于 2022-10-09 18:40:07

我试过示例代码,运行良好。

代码语言:javascript
运行
复制
File myFile = new File("C://temp/Employee.xlsx"); FileInputStream fis = new 

FileInputStream(myFile); 

// Finds the workbook instance for XLSX file 
XSSFWorkbook myWorkBook = new XSSFWorkbook (fis); 

// Return first sheet from the XLSX workbook 
XSSFSheet mySheet = myWorkBook.getSheetAt(0); 

// Get iterator to all the rows in current 
sheet Iterator<Row> rowIterator = mySheet.iterator(); 

// Traversing over each row of XLSX file 
while (rowIterator.hasNext()) { 
    
    Row row = rowIterator.next(); 
    // For each row, iterate through each columns 
    
    Iterator<Cell> cellIterator = row.cellIterator(); 
        while (cellIterator.hasNext()) { 
            Cell cell = cellIterator.next(); 
            switch (cell.getCellType()) { 
                // Enter you code here to fetch data based on cell type
                
                } 
            } System.out.println(""); 
        }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74005591

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档