从双精度转换为string,但保持前导零
我正试图从双重转换为string。 它正在工作,但它正在删除所有前导零。 例如,00010000正在更改为10000和01更改为1.我正在尝试读取一个xls文件,它certificate是困难的。
运行程序时数字的数量是不知道的,所以我想不出解决这个问题的办法。 谁能帮忙?
以下是我的代码:
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
等等的10000.0
。正如其他人已经提到的那样,在Java double
原始types中没有“前导”零。 所以,当你转换成一个String
,当然没有前导零,因为他们根本不存在。
可能的解决方法:
如果您将Excel数字列设置为文本格式,然后导入它,则以下if
条件应激发这些值:
if (cell.getCellType() == HSSFCell.CELL_TYPE_STRING) { lineList.add(cell.getStringCellValue()); }
然后您可以直接读取文本值,引导零和全部,并保留Excel电子表格中的信息。
我没有testing过这个,但是如果我面对你的问题,这可能是我会尝试的。