当前位置: 首页 > 面试题库 >

如何使用POI在Java中读取Excel(.xlsx)?

龙浩博
2023-03-14
问题内容

我正在尝试在Java中阅读excel。我有以下代码。

import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Iterator;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.DateUtil;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

public class Test {
    public static void main(String[] args) throws IOException {
        String fname = "D:\\Test.xlsx"; // or "C:\\Test.xls" C:\\SDI-XL.xls
        InputStream inp = new FileInputStream(fname);
        Workbook  wb = new XSSFWorkbook(inp); // Declare XSSF WorkBook
        Sheet sheet = wb.getSheetAt(0); // sheet can be used as common for XSSF and HSSF

        Iterator<Row> rows=sheet.rowIterator();
        while (rows.hasNext()) {
            Row row = (Row) rows.next();
            System.out.println("row#=" + row.getRowNum() + "");
            Iterator cells = row.cellIterator();
            while (cells.hasNext()) {
                Cell cell = (Cell) cells.next();

                switch (cell.getCellType()) {
                case Cell.CELL_TYPE_STRING:
                    System.out.println(cell.getRichStringCellValue().getString());
                    break;
                case Cell.CELL_TYPE_NUMERIC:
                    if (DateUtil.isCellDateFormatted(cell)) {
                        System.out.println(cell.getDateCellValue() + "");
                    } else {
                        System.out.println(cell.getNumericCellValue());
                    }
                    break;
                case Cell.CELL_TYPE_BOOLEAN:
                    System.out.println(cell.getBooleanCellValue() + "");
                    break;
                case Cell.CELL_TYPE_FORMULA:
                    System.out.println(cell.getCellFormula());
                    break;
                default:
                }
            }
        }
        inp.close();
    }
}

我导入了poi.3.6jar和poi.ooxml-3.6 jar。当我运行该程序时,出现以下错误消息。

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/xmlbeans/XmlException
    at Test.main(Test.java:16)
Caused by: java.lang.ClassNotFoundException: org.apache.xmlbeans.XmlException
    at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
    ... 1 more

我不明白为什么会出现此错误消息。请帮助我。


问题答案:

xmlbeans-2.3.0.jar文件添加到您的类路径。



 类似资料:
  • 问题内容: 使用Apache POI时,我在excel中遇到问题。我可以跨行阅读,但是有时候我只想阅读特定的列。 因此可以读取任何特定列,例如仅“ A”列或仅“ C”列。 我为此使用 Java 语言。 问题答案: heikkim是正确的,这是一些示例代码,这些代码改编自我拥有的一些代码: 对于类似的用途

  • 我在使用Apache POI时遇到excel的问题。我可以跨行阅读,但有时我会在一个情况下,我只想阅读一个特定的列。 那么,是否可以读取任何特定的列,例如只读取“A”列或只读取“C”列。 为此我使用Java语言。

  • 我试图使用Apache POI读取.xlsx格式的excel文件。下面给出了我的代码。 我使用跟随jar来运行这段代码。commons-codec-1.9.jar,dom4j-1.6.jar,poi-3.11-beta2-20140822.jar,poi-ooxml-3.11-beta2-20140822.jar,poi-ooxml-schemas-3.11-beta2-20140822.jar,

  • 嗨, 我正在尝试使用excel中的列标题读取列值(使用java)。如图中所示,假设我想读取标题“城市”、列下的所有后续单元格并显示它们。我该怎么做? 通过查看internet上的示例,我发现大多数示例都使用迭代器在行上迭代。 请不要将此标记为重复,我已经尝试在stackoverflow和internet上搜索,但大多数都使用行迭代。

  • 我想在JSP中读取一个excel文件,为此,我首先使用一个web应用程序项目将该文件上传到:D分区中名为uploads的文件夹中,并尝试使用另一个java项目读取excel上传的文件。两个代码都工作正常。这里是通过web应用程序项目(JSP和SERVLET)上传到特定文件夹的代码: 图书馆 commons-fileupload-1.2.2.jar commons-io-2.1.jar 索引.jsp

  • 我正在使用Java在gwt中使用Apache POI阅读excel文件。我有一个excel文件,有15000条记录和四列Count、Name、Mob No和emailid。我正在blobstore GAE中上传excel文件,然后我正在读取该excel文件。我只是检查日志所有的数据是读或不是。当我部署和测试时,只有最后266行正在读取并显示在Logger中。为什么?如何从Excel中读取所有数据?