Java Excel将数字作为文本转换为指数形式
我使用ApachePOI从excel文件中读取一些单元格,单元格值是纯数字,例如6944460000,即使我将单元格格式化为文本,程序仍将其读取为6.9+exxxJava Excel将数字作为文本转换为指数形式,java,excel,apache-poi,Java,Excel,Apache Poi,我使用ApachePOI从excel文件中读取一些单元格,单元格值是纯数字,例如6944460000,即使我将单元格格式化为文本,程序仍将其读取为6.9+exxx if (line.get(0) != null) { int mpnCellType = line.get(0).getCellType(); switch (mpnCellType) { case HSS
if (line.get(0) != null) {
int mpnCellType = line.get(0).getCellType();
switch (mpnCellType) {
case HSSFCell.CELL_TYPE_NUMERIC:
mpn = (String.valueOf(line.get(0).getNumericCellValue()));
break;
case HSSFCell.CELL_TYPE_STRING:
mpn = (line.get(0).getStringCellValue());
break;
}
}
即使我检查了单元格类型,我仍然得到了指数形式,这意味着在我阅读源文件之前,源文件就是这种形式,我如何才能停止这种转换?我相信Rosenfeld是正确的。如果工作表类似于:
然后poi将拾取显示的值,而不是公式栏中显示的固有值。
一种方法是在运行poi之前修复单元格格式。试试这个小宏:
Sub FixFormats()
Dim r As Range
For Each r In ActiveSheet.UsedRange
If CStr(r.Value) <> r.Text Then
r.NumberFormat = 0
End If
Next r
End Sub
我不熟悉ApachePOI。但是excel在单元格中存储值的方式是纯数字。如果可以使用ApachePOI访问源Excel单元格的.Text属性,则应返回格式化后的值。输入数值后,将Excel单元格的格式更改为文本不会影响其存储方式。可能的重复项没有正确地将数字转换为字符串。请看大约一百个重复问题中的一个,这些问题都提供了正确的方法