我得到的是公式,而不是单元格内容

时间:2013-10-07 13:03:19

标签: java excel apache-poi

我有这段代码:

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 11的内容应该是一个数字,它返回用于获取内容的公式。这是一个示例输出:

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

依旧......

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

2 个答案:

答案 0 :(得分:1)

这应该有效:

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

答案 1 :(得分:1)

细胞的实际含量是公式; Excel通常不显示它(相反,它显示了评估公式的结果)。

This document解释了如何计算公式,但通常不需要这样做,因为Excel会将最后计算的值与公式一起保存。

所以getCell(11).getNumericCellValue()可能已经足够了。

请注意,此方法在具有文本的单元格上使用时会抛出异常。