为什么我将"号码存储为文本"几个值上的错误?

时间:2015-10-29 11:39:07

标签: java excel apache-poi

我想使用Apache Poi在电子表格中创建一些行。为此,我必须格式化数字以满足某些规范

所以我的初始数字是一个double(在String><中),就像这个

String initial = "1234.56";

我希望以这种格式存储它

String wanted = "1 234";

所以我使用这段代码来解析它(它工作正常)

wanted = NumberFormat.getNumberInstance(Locale.FRANCE).format(Double.valueOf(initial).intValue())

但是当我创建电子表格并打开它(使用excel)时,我收到此错误一些值

  

以文字形式存储的号码

我尝试使用

解决它
cell.setCellType(Cell.CELL_TYPE_NUMERIC);

但它不起作用。

奇怪的是,这个错误不在所有值上(所有值都来自同一个函数)。请参阅此屏幕截图,例如

Screenshot of the error

我做错了什么吗?我错过了什么 ?有人有想法解决它吗?

1 个答案:

答案 0 :(得分:2)

使用

解决问题
HSSFCellStyle style = workbook.createCellStyle();
style.setDataFormat(HSSFDataFormat.getBuiltinFormat("#,##0"));

int value = Double.valueOf(initial).intValue();
cell.setCellValue(value);

我已经尝试过使用此DataFormat,但为了工作,您需要插入一个数字,而不是String。

cell.setCellValue("12345");  //Will be inserted as 12345. Echec !
cell.setCellValue(Integer.valueOf("12345"));  //Will be inserted as 12 345. Success ;)