Apache POI - XSSF读取格式化单元格值

6

我能否获得Excel行中显示的格式化值,而不是从流返回的原始值?

或者这是否属于“公式评估”类别,而这种评估方法并不支持?


你是否正在尝试获取公式单元格的结果? - akokskis
2
不,我正在尝试获取单元格的格式化值。也就是说,原始值为57.9826734,但是该单元格被格式化为保留两位小数,因此当我实际打开电子表格时,我看到的是57.99。我实际上需要POI输出57.99。 - Adam Davis
1个回答

16

如果您拥有要获取数据的单元格,请尝试以下操作。

DataFormatter formatter = new DataFormatter();
String formattedCellValue = formatter.formatCellValue(myCell);
如果那不能精确地得到您要的内容,DataFormatter 类中有许多不同的方法可以达到目的。请查看 API

很不幸,使用XSSF时,您将失去所有方便易用的DOM类,如cell/row等。请查看此链接以获取代码示例:https://dev59.com/zGDVa4cB1Zd3GeqPfqoa -- 看起来这段代码片段可能实际上是我需要的。哈利路亚!感谢akokskis :) - Adam Davis
1
你的评论对我来说毫无意义...使用XSSF,您可以访问org.apache.poi.ss.usermodel中的所有这些类。如果您有一个XSSFWorkbook(它扩展了Workbook),则可以获取XSSFSheet(它扩展了Sheet),从中可以获取XSSFRow(它扩展了Row),从中可以获取XSSFCell(它扩展了Cell)。一旦您拥有了那个XSSFCell,将其传递给格式化程序,您将获得所需的值。无需进入SAX解析。 - akokskis
1
如果我们有一个公式,这个公式会给出公式的值。有没有一种方法可以获取缓存的公式值,并进行格式化? - gaurav5430
2
formatCellValue accepts a second argument. You can get a FormulaEvaluator like this: workbook.getCreationHelper().createFormulaEvaluator() - neXus

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接