使用apache poi从excel文件中读取一些单元格,单元格值是纯数字,例如6944460000,即使我将单元格格式化为文本,程序仍将其读取为6.9 + exxx
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;
}
}
虽然我正在检查单元格类型,但我仍然得到指数形式,这意味着在我读取之前源文件是那种形式,我如何能够停止这种转换?
答案 0 :(得分:0)
我相信 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