使用java读取excel文件 - > xlsx格式

问题描述 投票:2回答:5

我正在尝试阅读一个excel文件(xlsx NOT xls),但没有任何运气。我尝试了jexcel api,但它不支持xlsx扩展,然后我尝试了Apache api需要工作并尝试从他们的网站上的例子但没有运气。我无法通过读取文件阶段并得到一个filenotfound异常。还使用了poi-ooxml-3.6.jar,xmlbeans-2.6.0和poi-3.7.jar。

任何人都可以向我解释我需要使用什么类型的api / classes /库以及如何在eclipse中使用它(外部库/ classes / api对我来说是全新的)

提前谢谢了

java apache excel apache-poi xlsx
5个回答
4
投票

Apache POI是一个读取xls和xlsx格式的好库。

要读取文件,只需通过传递带有Excel文件路径的新FileInputStream来实例化新的qazxsw poi:

XSSFWorkbook

或者使用输入流(比文件占用更多内存):

XSSFWorkbook workbook = new XSSFWorkbook(OPCPackage.open(new File("foo.xslx")));

有了XSSFWorkbook workbook = new XSSFWorkbook(myInputStream); 之后,用它来遍历所有细胞(XSSFWorkbook)。

下载Apache POI 3.9 example


2
投票

使用POI 3.8和poi-ooxml-3.8,我已经成功完成了这样的事情(我没有尝试过旧版本):

here

InputStream is = //Open file, and get inputstream Workbook workBook = WorkbookFactory.create(is); int totalSheets = workBook.getNumberOfSheets(); for (int i = 0; i <= totalSheets - 1; i++) { Sheet sheet = workBook.getSheetAt(i); // Do something with the sheet } 将自动确定该文件是旧XLS还是更新的XLSX并返回正确版本的WorkbookFactory。其余代码只是迭代其中包含的工作表的示例。


0
投票

我最终使用了AbstractExcelView的这个修改

Workbook


0
投票

在代码中添加以下依赖项。

https://github.com/hmkcode/Spring-Framework/blob/master/spring-mvc-json-pdf-xls-excel/src/main/java/com/hmkcode/view/abstractview/AbstractExcelView.java

另外,要阅读excel文件,请使用以下代码,它将同时适用于.xls和.xlsx文件。

<dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi</artifactId>
            <version>3.17</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml -->
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml</artifactId>
            <version>3.17</version>
        </dependency>

0
投票

在pom.xml中添加依赖项 -

Workbook workbook = WorkbookFactory.create(inputStream);

Excel 2007或更高版本(.xlsx) - 示例代码 -

<dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi</artifactId>
        <version>3.15</version>
    </dependency>

    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi-ooxml</artifactId>
        <version>3.15</version>
    </dependency>

    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>ooxml-schemas</artifactId>
        <version>1.3</version>
    </dependency>

2)

 //reading data from byte array
            OPCPackage pkg = OPCPackage.open(new ByteArrayInputStream(data));
            Workbook wb = new XSSFWorkbook(pkg);
Sheet sheet = wb.getSheetAt(0);
            Iterator<Row> rows = sheet.rowIterator();

            while (rows.hasNext()) {
                int j = 5;
                Person person= new Person ();
                Row row = rows.next();
                if (row.getRowNum() > 0) {
                    person.setPersonId((int)(row.getCell(0).getNumericCellValue()));
                    person.setFirstName(row.getCell(1).getStringCellValue());
                    person.setLastName(row.getCell(2).getStringCellValue());
                    person.setGroupId((int)(row.getCell(3).getNumericCellValue()));
                    person.setUserName(row.getCell(4).getStringCellValue());
                    person.setCreditId((int)(row.getCell(5).getNumericCellValue()));
                }

            }

Excel 1998-2003文件(.xls) - 您可以使用HSSF库。只需使用:工作簿wb =新HSSFWorkbook(pkg);

© www.soinside.com 2019 - 2024. All rights reserved.