我正在使用poi版本: 3.14
我访问Excel( .xlsx )文件
this.workbook = WorkbookFactory.create(new FileInputStream(f.getPath()));
this.workbook.setMissingCellPolicy(Row.CREATE_NULL_AS_BLANK);
this.sheet = workbook.getSheetAt(0);
以下是应用于单元格的.xlsx文件中的自定义格式 . 我想在我的代码中显示单元格值 .
如您所见,文件中可见的单元格值为“031642153283700100” . 此外,当我在此特定单元格上显示时,值将更改为“42153283700100”(未应用自定义格式的数据) .
EDIT
原始单元格类型为CELL_TYPE_NUMERIC .
==>
如何在java代码中显示格式化的值“031642153283700100”?
我试过了 :
-
cell.toString()=> "42153283700100"
-
cell.getNumericCellValue()=> "42153283700100"
使用以前的单元格类型转换
cell.setCellType(Cell.CELL_TYPE_STRING);
-
cell.getStringCellValue()=> "42153283700100"
-
cell.getRichStringCellValue()=>“42153283700100”
-
带有formatCellValue(cell)方法的旧HSSFDataFormatter =>“421532837001000316”
2 回答
对于数字格式,您应该使用
CellGeneralFormatter
或CellNumberFormatter
.例:
Edit
好的,让我们有一个更一般的例子 . 以上内容不适用于日期(我已经知道的),但也不适用于所有数字格式 . 后者我认为
CellNumberFormatter
应该这样做,但事实并非如此 . 不幸的是,它甚至会产生一些适当数字格式的错误 .在
Excel
中,数字格式最多可包含4个以分号分隔的部分 . 第一部分用于大于0的数字,第二部分用于小于0的数字,第三部分用于等于0的数字,第四部分用于文本 .format > 0
;format < 0
;format = 0
;text
由于
CellNumberFormatter
没有正确处理,我们应该在使用CellNumberFormatter
之前完成 .你可以试试这个