java - 从 double 转换为 String 但保留前导零

标签 java string excel parsing double

我正在尝试从 double 型转换为字符串型。它正在工作,但它正在删除所有前导零。例如,00010000 被更改为 10000,01 被更改为 1。我正在尝试读取 xls 文件,但事实证明这很困难。

运行程序时,数字的数量是未知的,所以我想不出办法来解决这个问题。有人可以帮忙吗?

下面是我的代码:

while (cells.hasNext()) {
          cell = (HSSFCell) cells.next();
          if (cell.getCellType() == HSSFCell.CELL_TYPE_STRING) {
            lineList.add(cell.getStringCellValue());
          } else if (cell.getCellType() == HSSFCell.CELL_TYPE_NUMERIC) {
            String s = String.valueOf(cell.getNumericCellValue());
            lineList.add(s);
          }
        }

最佳答案

我猜测这里发生的情况是 Excel 中有数字数据,其格式为 00010000。但是,在 Excel 内部,此数据可能仅存储为 1000010000.0 等,并且由于格式原因,前导零仅存在。当您使用 HSSF 将此数字数据导入 Java 时,它也会以 1000010000.0 等形式出现。正如其他人已经提到的,Java double 基元类型中没有“前导”零。因此,当您转换为 String 时,当然没有前导零,因为它们根本不存在。

可能的解决方法:

如果将 Excel 数字列格式化为文本,然后将其导入,则应针对这些值触发以下 if 条件:

if (cell.getCellType() == HSSFCell.CELL_TYPE_STRING) {
    lineList.add(cell.getStringCellValue());
}

然后,您可以直接读取文本值(包括前导零和全部),并保留 Excel 电子表格中存在的信息。

我还没有测试过这个,但如果我遇到你的问题,我可能会尝试这个。

关于java - 从 double 转换为 String 但保留前导零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39023046/

相关文章:

java - 识别字符串中的特定字符并将其删除 - 不起作用

php - 如何从.html 页面中提取链接和标题?

excel - 在 Excel 中检查/检测动态数组溢出

java - 如何在 Java Netbeans 平台模块化项目中设置 VM 选项?

java - 多个 JDialog 模式到父级?

c# - 无法将 FileInfo.Name 项从 string[] 添加到 List<string> 字段

java - 如何使用 Apache POI 读取 xlsx 文件中的记录数?

Excel:在与另一列匹配的列中查找最小/最大值

java - 如何在 Android 中禁用以前的 Activity

java - 跨 Java 包 Autowiring Spring Beans