setcelltype(celltype.string)已弃用,请使用显式setcellformula(string)、setcellvalue(…)或setblank()获得所需结果

2mbi3lxu  于 2021-07-12  发布在  Java
关注(0)|答案(2)|浏览(2420)

poi公司version:4.1.2

@Deprecated
@Removal(version = "5.0")
void setCellType(CellType cellType)

正如细胞类文档中所指出的,它说 setCellType() 已弃用,建议使用 setCellFormula() 实现相同的功能,但没有给出一个如何实现的例子。
问题是:如何使用 setCellFormula() 实现与…相同的功能 setCellType(CellType.STRING) ?

ui7jx7zq

ui7jx7zq1#

单元格类型取决于单元格内容。这就是为什么不赞成设置独立于单元格内容的单元格类型。
所以
使用显式 setCellFormula(String) , setCellValue(...) 或者 setBlank() 以得到期望的结果。
指以下各项: Cell.setCellFormula 将始终导致单元格具有单元格类型 FORMULA . 或者是细胞类型 ERROR 当公式导致错误时。 Cell.setCellValue 将导致单元格具有单元格类型 STRING 当值为 String , NUMERIC 当值为数字或日期时,或 BOOLEAN 当值为 boolean . Cell.setBlank 将始终导致单元格具有单元格类型 BLANK .
所以不需要显式设置单元格类型。
另请阅读cell.setcelltype的以下部分:
... 如果您要做的是为数值单元格获取字符串值,请停止!这不是办法。相反,要获取数值、布尔值或日期单元格的字符串值,请使用 DataFormatter 相反。。。
所以不要使用 Cell.setCellTypeSTRING 以获得 String . 而是使用dataformatter执行此操作:

...
DataFormatter formatter = new DataFormatter();
FormulaEvaluator evaluator = workbook.getCreationHelper().createFormulaEvaluator();
...
java.lang.String value = formatter.formatCellValue(cell, evaluator);
...
0pizxfdo

0pizxfdo2#

你不能使用 setCellFormula() 模仿 setCellType(CellType.STRING) ,但您可以使用 setCellValue(String someString) 将单元格类型设置为 CellType.STRING 同时设置单元格值。
换言之 setCellFormula() , setCellValue() ,和 setBlank() 您不仅要设置单元格内容,而且在同一类型中,您还可以固有地设置单元格类型。如果您使用这些方法中的任何一种,并调用 getCellType() 之后,您将获得正确的单元格类型。不应该有一个用例,在这个用例中设置一个单元格类型,但不设置任何单元格内容。

相关问题