首页 > 解决方案 > 需要从 xlsx 文件中访问数据

问题描述

public class fileReader {

    public static void main (String[] args) throws IOException {
        String excelFilePath = "sample.xlsx";
        InputStream inputStream = new FileInputStream(new File(excelFilePath));

        XSSFWorkbook workbook = new XSSFWorkbook();
        Sheet firstSheet = workbook.getSheetAt(0);
        Iterator<Row> iterator = firstSheet.iterator();

        while (iterator.hasNext()) {
            Row nextRow = iterator.next();
            Iterator<Cell> cellIterator = nextRow.cellIterator();
        ...

在 XSSFWorkbook 行中,错误已显示

Exception in thread "main" org.apache.poi.ooxml.POIXMLException: org.apache.xmlbeans.XmlOptions.setEntityExpansionLimit(I)Lorg/apache/xmlbeans/XmlOptions;
    at org.apache.poi.ooxml.POIXMLFactory.createDocumentPart(POIXMLFactory.java:66)
    at org.apache.poi.ooxml.POIXMLDocumentPart.read(POIXMLDocumentPart.java:657)
    at org.apache.poi.ooxml.POIXMLDocument.load(POIXMLDocument.java:180)
    at org.apache.poi.xssf.usermodel.XSSFWorkbook.<init>(XSSFWorkbook.java:282)
    at org.apache.poi.xssf.usermodel.XSSFWorkbook.<init>(XSSFWorkbook.java:303)
    at fileReader.main(fileReader.java:20)

标签: javaeclipsexlsx

解决方案


你没有读你的文件。您正在创建一个新工作簿。所以我怀疑你得到了一个例外,因为你要求一个Sheet没有的地方。

使用将您的文件提供给实例XSSFWorkbook(File)

String excelFilePath = "sample.xlsx";
File f = new File(excelFilePath);
XSSFWorkbook workbook = new XSSFWorkbook(f);

或者XSSFWorkbook(InputStream)

String excelFilePath = "sample.xlsx";
File f = new File(excelFilePath);
InputStream inputStream = new FileInputStream(f);
XSSFWorkbook workbook = new XSSFWorkbook(inputStream);

如果将文件提供给工作簿实例,则会出现错误,显示文件无法解析为类型

只需要导入java.io.File


推荐阅读