我正在尝试从 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 内部,此数据可能仅存储为 10000
或 10000.0
等,并且由于格式原因,前导零仅存在。当您使用 HSSF 将此数字数据导入 Java 时,它也会以 10000
或 10000.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/