我有这段代码:
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
依旧......
我需要做的是显示细胞的实际内容,而不是公式。我确信我错过了一些小东西,但作为一个完整的初学者,我无法发现它。
答案 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()
可能已经足够了。
请注意,此方法在具有文本的单元格上使用时会抛出异常。