Excel将数字转换为文本为指数形式

时间:2014-08-31 08:54:47

标签: java excel apache-poi

使用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;
                    }

                }

虽然我正在检查单元格类型,但我仍然得到指数形式,这意味着在我读取之前源文件是那种形式,我如何能够停止这种转换?

1 个答案:

答案 0 :(得分:0)

我相信 Rosenfeld 是正确的。如果工作表如下:

pic

然后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