Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/326.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 - Fatal编程技术网

Java 读取Excel文件而不更改其内容

Java 读取Excel文件而不更改其内容,java,excel,Java,Excel,我正在尝试上载和读取Excel文件的内容。如果内容是字符串格式,则可以正常工作。但我在excel文件中的内容如下: 02:02:02 03:03:03 04:04:04 8.4745370370370374E-2 0.12711805555555555 0.169490740740741 我所要做的就是按原样检索内容。但当我把这些数据拉过来时,我得到的内容如下: 02:02:02 03:03:03 04:04:04 8.4745370370370374E-2 0.1271180555555

我正在尝试上载和读取Excel文件的内容。如果内容是字符串格式,则可以正常工作。但我在excel文件中的内容如下:

02:02:02
03:03:03
04:04:04
8.4745370370370374E-2
0.12711805555555555
0.169490740740741
我所要做的就是按原样检索内容。但当我把这些数据拉过来时,我得到的内容如下:

02:02:02
03:03:03
04:04:04
8.4745370370370374E-2
0.12711805555555555
0.169490740740741
有没有办法不改变内容

while (rowIterator.hasNext())
    {
        Row row = rowIterator.next();
        //For each row, iterate through all the columns
        Iterator<Cell> cellIterator = row.cellIterator();

        while (cellIterator.hasNext())
        {
            Cell cell = cellIterator.next();
            cell.setCellType(Cell.CELL_TYPE_STRING);
            //Check the cell type and format accordingly
            switch (cell.getCellType())
            {
                case Cell.CELL_TYPE_NUMERIC:
                System.out.print(cell.getNumericCellValue());
                break;

                case Cell.CELL_TYPE_STRING:
                System.out.print(cell.getStringCellValue());
                break;
            }
        }
    }
while(roweiterator.hasNext())
{
行=行迭代器。下一步();
//对于每一行,遍历所有列
迭代器cellIterator=row.cellIterator();
while(cellIterator.hasNext())
{
Cell=cellIterator.next();
cell.setCellType(cell.cell\u TYPE\u字符串);
//检查相应的单元格类型和格式
开关(cell.getCellType())
{
case Cell.Cell\u类型\u数值:
System.out.print(cell.getNumericCellValue());
打破
case Cell.Cell\u类型\u字符串:
System.out.print(cell.getStringCellValue());
打破
}
}
}

您的单元格格式可能未设置为文本。看看这个:

如您所见,当您没有显式地将单元格类型设置为文本时,excel会尝试猜测它。因此,当您导入它时,它可能会随着时间而导入。您可以将单元格类型显式设置为
Text
,然后键入时间
02:02:02
,将其读取为文本,也可以将其读取为excel时间格式,然后进行转换。了解有关读取excel日期的更多信息:

您并不是在阅读时更改内容,只是当您在Excel中查看内容时,Excel正在对其进行“格式化”。另见这个问题:@RC。我在那个档案里没有任何公式。只需输入如上所述的简单数据。所以我应该在阅读之前在excel表格上解决这个问题?基于这个链接,似乎POI假设这是某种日期格式,但在我的例子中是02:03:04,即:2分3秒4毫秒。我从来没有告诉过任何关于公式的事情;格式化时间是excel中的一个数字,请尝试以下操作:在下一个单元格中键入
=+0
(并阅读链接的问题答案)。如果可以修改Excel文件,则可以通过使用
'02:03:04
(注意前导引号)@RC强制Excel“使用文本”。前导引语解决了这个问题。我可以修改excel。但最终只是一个额外的过程来添加报价。试图避免它。用文字和数字试着找到链接答案。同样的问题。您是否将单元格类型更改为文本,再次键入值并在导入之前保存了文件?我的错,您是对的。我碰巧制作了一个单单元格文本,而不是所有单元格。没问题。不过,我建议你把它作为时间/日期来读。当用户填写excel表格时,他可能不会关心这些类型,而是希望您的程序处理这些类型。干杯