首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Apache POI XSSF读取excel文件

Apache POI XSSF读取excel文件
EN

Stack Overflow用户
提问于 2011-05-13 06:38:36
回答 8查看 86.9K关注 0票数 17

我有一个关于如何使用Apache的XSSF格式读入xlsx文件的快速问题。

现在,我的代码如下所示:

代码语言:javascript
复制
InputStream fs = new FileInputStream(filename);   // (1)
XSSFWorkbook wb = new XSSFWorkbook(fs);           // (2)
XSSFSheet sheet = wb.getSheetAt(0);               // (3)

...with导入了所有相关的东西。我的问题是,当我点击run时,它被卡在第(2)行,几乎是无限循环。filename只是一个字符串。

如果有人能给我一些如何解决这个问题的示例代码,我将不胜感激。我现在想要的就是从一个xlsx文件中读入一个单元格;我对xls文件使用了HSSF,没有任何问题。

谢谢你的帮助,安德鲁

EN

回答 8

Stack Overflow用户

发布于 2012-03-27 08:26:50

我相信这将会回答你的问题:http://poi.apache.org/spreadsheet/quick-guide.html#ReadWriteWorkbook

简而言之,您的代码应该如下所示:

代码语言:javascript
复制
InputStream inp = new FileInputStream("workbook.xlsx");
Workbook wb = WorkbookFactory.create(inp);
Sheet sheet = wb.getSheetAt(0);
Row row = sheet.getRow(2);
Cell cell = row.getCell(3);
票数 10
EN

Stack Overflow用户

发布于 2012-04-13 03:44:47

代码语言:javascript
复制
InputStream inp = null;
        try {
            inp = new FileInputStream("E:/sample_poi.xls");

            Workbook wb = WorkbookFactory.create(inp);
            Sheet sheet = wb.getSheetAt(0);
            Header header = sheet.getHeader();

            int rowsCount = sheet.getLastRowNum();
            System.out.println("Total Number of Rows: " + (rowsCount + 1));
            for (int i = 0; i <= rowsCount; i++) {
                Row row = sheet.getRow(i);
                int colCounts = row.getLastCellNum();
                System.out.println("Total Number of Cols: " + colCounts);
                for (int j = 0; j < colCounts; j++) {
                    Cell cell = row.getCell(j);
                    System.out.println("[" + i + "," + j + "]=" + cell.getStringCellValue());
                }
            }

        } catch (Exception ex) {
            java.util.logging.Logger.getLogger(FieldController.class.getName()).log(Level.SEVERE, null, ex);
        } finally {
            try {
                inp.close();
            } catch (IOException ex) {
                java.util.logging.Logger.getLogger(FieldController.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
票数 10
EN

Stack Overflow用户

发布于 2011-07-15 22:57:36

为什么要将文件拆分成InputStream?XSSFWorkbook有一个构造函数,它只接受路径作为字符串。只需在中硬编码字符串的路径即可。一旦创建了工作簿,就可以从该工作簿创建XSSFSheets。然后是XSSFCells,它最终允许您读取单个单元格的内容(单元格本质上是基于x,y位置的)

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5985318

复制
相关文章

相似问题

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