我正在尝试从double转换为String。它正在工作,但它正在删除所有前导零。例如,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);
}
}
答案 0 :(得分:0)
我猜这里发生的事情是Excel中的数字数据格式为00010000
。但是,在Excel内部,这些数据可能只是存储为10000
或10000.0
等,并且由于您的格式化而导致前导零。当您使用HSSF
将此数值数据导入Java时,它也会以10000
或10000.0
等形式出现。正如其他人已经提到的那样,Java中没有“前导”零{ {1}}原始类型。所以当你转换为double
时,当然没有前导零,因为它们根本就不存在。
可能的解决方法:
如果将Excel数字列格式化为文本,然后将其导入,则应为以下String
条件触发这些值:
if
然后,您可以直接读取文本值,引导零和全部,并保留Excel电子表格中存在的信息。
我没有对此进行测试,但如果我遇到您的问题,这可能是我会尝试的。