Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Excel将数字作为文本转换为指数形式_Java_Excel_Apache Poi - Fatal编程技术网

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

Java 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

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

                }
即使我检查了单元格类型,我仍然得到了指数形式,这意味着在我阅读源文件之前,源文件就是这种形式,我如何才能停止这种转换?

我相信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单元格的格式更改为文本不会影响其存储方式。可能的重复项没有正确地将数字转换为字符串。请看大约一百个重复问题中的一个,这些问题都提供了正确的方法