无法使用Apache POI读取.xlsx文件

时间:2018-01-16 18:10:18

标签: java soap apache-poi

我已经在SOAP webservice的web方法中编写了以下代码。下面的代码用于读取.xlsx文件,但是代码跳转到finally块并且不会抛出任何异常。

FileInputStream fis = null;
    try {
        File excel = new File("Sample.xlsx");
        fis = new FileInputStream(excel);
        System.out.println("Can read: "+excel.canRead()); //true
        System.out.println("Absolute path: "+excel.getAbsolutePath()); //returns correct file path
        System.out.println("is File: "+excel.isFile());  //true
        System.out.println("File exists: "+excel.exists());  //true
        XSSFWorkbook book = new XSSFWorkbook(fis); //The control goes to the finally block
        XSSFSheet headerDataSheet = book.getSheetAt(0);
        ........
     }catch(Exception ex){
        ex.printStackTrace();
     }finally{
        System.out.println("Cache Map DataSize---"+cacheMap.size());
        .....
     }

我使用了以下罐子。 axis.jar,commons-discovery-0.2.jar,commons-fileupload-1.3.2.jar,commons-io-1.3.2.jar,commons-logging.jar,commons-net-3.6.jar,jaxrpc.jar, POI-3.8.jar poi-ooxml-3.8.jar,poi-ooxml-schemas-3.8-beta5.jar我在stackoverflow上找到类似帖子之后尝试更新poi jar版本,但即使这样也没有帮助。任何帮助/建议表示赞赏。

由于

2 个答案:

答案 0 :(得分:0)

如果您需要不同的方法,请尝试以下方法:

Xcelite xcelite = new Xcelite(new File("src/Untitled_File.xlsx"));
    XceliteSheet sheet = xcelite.getSheet(0);
    SheetReader<Collection<Object>> simpleReader = sheet.getSimpleReader();
    simpleReader.skipHeaderRow(true);
    System.out.println(simpleReader.read());

导入

<dependency>
        <groupId>com.ebay</groupId>
        <artifactId>xcelite</artifactId>
        <version>1.0.4</version>
    </dependency>

Maven Repository

请注意,此回购不再保留。这是link

答案 1 :(得分:0)

我尝试了@Xavier Bouclet提出的方法并注意到以下2个罐子丢失了:
xmlbeans-2.3.0.jar
dom4j-1.6.1.jar
现在代码正在按预期工作。
谢谢大家