0

我有这个代码:

String fname = "C:/Users/slim/Desktop/xlsxFiles/plan.xlsx"; 
            InputStream inp = new FileInputStream(fname);
            Workbook  wb = new XSSFWorkbook(inp);
            Sheet sheet = wb.getSheetAt(0);

            for (Row row : sheet) {
                System.out.println(row.getCell(0));
                System.out.println(row.getCell(11));
            }

我面临的问题对我来说似乎有点奇怪,因为这是我第一次处理 POI。

的内容cell 0是一个日期,我对此完全没有问题,但是cell 11wich 的内容应该是一个数字,它返回了用于获取内容的公式。这是一个示例输出:

31-Aug-2013
L3/5
30-Sep-2013
L3*2/5
31-Oct-2013
L3*3/5
30-Nov-2013
L3*4/5
31-Dec-2013
L3
31-Jan-2014
P8
28-Feb-2014
P9
31-Mar-2014
P10

等等...

我需要做的是显示单元格的实际内容,而不是公式。我确定我错过了一些小东西,但作为一个完整的初学者,我无法发现它。

4

2 回答 2

1

这应该有效:

        for (Row row : sheet) {
            System.out.println(row.getCell(0).getRichStringCellValue().getString());
            System.out.println(row.getCell(11).getRichStringCellValue().getString());
        }
于 2013-10-07T13:45:18.050 回答
1

单元格的实际内容是公式;Excel 通常不显示它(而是显示计算公式的结果)。

本文档解释了如何计算公式,但通常这不是必需的,因为 Excel 将最后计算的值与公式一起保存。

所以getCell(11).getNumericCellValue()可能就够了。

请注意,此方法在用于带有文本的单元格时会引发异常。

于 2013-10-07T13:47:42.250 回答