【问题标题】:Read Excel file without changing its content读取 Excel 文件而不更改其内容
【发布时间】:2016-07-11 06:05:24
【问题描述】:

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

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

【问题讨论】:

  • 您没有更改读取的内容,只是当您在 Excel 中查看时 Excel 正在“格式化”它。另请参阅此问题:stackoverflow.com/questions/3014803/apache-poi-time-cell
  • @RC。我在那个文件上没有任何公式。只是上面输入的普通数据。所以我应该在阅读之前在excel表本身上解决这个问题?基于该链接,似乎 POI 假设这是某种日期格式,但在我的情况下它是 02:03:04 即:2 分 3 秒 4 毫秒。
  • 我从来没有告诉过任何关于公式的事情;格式化时间是 excel 中的一个数字,试试这个:在下一个单元格中输入=&lt;YourCellWithTime&gt;+0(并阅读链接的问题答案)。如果您可以修改 Excel 文件,则可以使用 '02:03:04 强制 Excel“使用文本”(注意前导引号)
  • @RC。领先的报价解决了这个问题。我可以修改excel。但最终成为一个额外的过程,只是为了添加那个报价。试图避免它。绕过链接答案。

标签: java excel


【解决方案1】:

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

如您所见,当您没有将单元格类型显式设置为文本时,excel 会尝试猜测它。因此,当您导入它时,它可能是作为 Time 导入的。您可以将其读取为文本,将单元格类型显式设置为Text,然后输入时间02:02:02,或者您可以将其读取为excel时间格式,然后进行转换。了解有关阅读 excel 日期的更多信息: How to read Excel cell having Date with Apache POI? Reading date values from excel cell using POI HSSF API

【讨论】:

  • 尝试使用文本和数字。同样的问题。
  • 您是否将单元格类型更改为文本,再次输入值并在导入之前保存文件?
  • 我的错,你是对的。我碰巧做了一个单元格文本而不是所有单元格。
  • 没问题。不过,我确实建议您将其阅读为时间/日期。当用户填写 excel 表时,他可能不会关心这些类型并希望您的程序能够处理它。干杯。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-01-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多