if(cell.getCellType() == XSSFCell.CELL_TYPE_FORMULA) {
//System.out.println("Formula is " + cell.getCellFormula());
switch(cell.getCachedFormulaResultType()) {
case XSSFCell.CELL_TYPE_NUMERIC:
System.out.print(cell.getNumericCellValue() +" ");
break;
case XSSFCell.CELL_TYPE_STRING:
System.out.print(cell.getRichStringCellValue()+" ");
break;
}
}
DataFormatter formatter = new DataFormatter();
System.out.print(formatter.formatCellValue(cell));
这对于常规单元格很有效,但是对于有公式的单元格,实际上是获取公式字符串并显示它,也就是说,它不获取缓存值并格式化它,而是返回公式字符串。
从CELL_TYPE_FORMULA中检索值后,是否有方法对其进行格式化
可以不使用计算器直接格式化单元格的缓存值。在由于第三方插件或单元格公式中不可用的外部数据而无法重新计算值的情况下,它很有用。
这段代码可以用来实现这一点:
final DataFormatter dataFormatter = new DataFormatter();
final CellStyle cellStyle = cell.getCellStyle();
final String formtatedValue = dataFormatter.formatRawCellContents(cell.getNumericCellValue(), cellStyle.getDataFormat(), cellStyle.getDataFormatString());
System.out.println(formattedValue);
仍然使用格式化程序,但是调用方法FormatRawCellContents
以手动格式化单元格缓存值的样式。
我试图从excel文件中读取所有数据,其中也有一些公式单元格,但我不知道哪个单元格是公式单元格。如何读取单元格中的所有值,而不考虑单元格的类型。 我的代码看起来像这样 我得到的公式单元格值为0
我正在开发一个上传excel文件并将其值插入数据库的应用程序。 我的代码如下: 所以当我上传一个像下面这样的excel文件时,它会工作并将其数据插入db。 但是,当我上传像以下这样的excel文件时,db不会更新。 我可以问你如何解决这个问题,所以即使单元格的值是=ROUNDUP((600),2),而不是600,它仍然更新db。 提前谢谢你。
单元格A1的公式为“=A2”,并设置为显示1个小数点 单元格A2的值为4.23 单元格A1显示4.2(格式化显示值) 但是formattedValue返回单元格A1的4.2,我想检索unformattedValue的4.23 我怎么能这么做?(我不能改成usermodel,我有巨大的文件)
问题内容: 我正在使用apache POI读取Excel文档。至少可以说,到目前为止,它已经可以满足我的目的。但是令我震惊的一件事是将单元格的值提取为HTML。 我有一个单元格,用户将在其中输入一些字符串并应用某种 格式(例如,项目符号/数字/粗体/斜体) 等。 因此,当我阅读它时,内容应为 HTML 格式,而不是POI给出的纯字符串格式。 我几乎遍历了整个POI API,但找不到任何人。我只想保
在Java中,我应该得到的输出是
问题内容: 我想以一个简单的字符串来获取数值单元格的值。 假设单元格的类型是带有value的数字。现在我无法使用,因为它将引发异常。我也无法使用,因为它会使我退缩。 我想存储在类型为varchar2的db中,所以我只希望字符串中的值。 我无法更改单元格类型,因为它是最终用户的工作,我必须在代码本身中进行处理。 格式化程序也无法正常工作,因为xls … dd:mm,dd:mm:ss,公式等中可能存在
我的C#. Net应用程序通过使用excel公式字符串加载和读取excel工作表单元格值。 例如,excel工作表位置和选项卡名称及其单元格行/列将作为公式字符串提供。 'D:\DataX[数据.Xls]EOD'$A5级 根据上述公式-C#应用程序加载数据。Xls,并打开EOD选项卡,应读取第5行A列值。 寻找在C#中完成的最佳方式。Net框架。