在Java Poi(Excel)中更改单元格格式(长度?)
我一直在寻找一种方法来做到这一点,但只找到了一些调整列大小的方法,但还不够。在Java Poi(Excel)中更改单元格格式(长度?)
It's简单:
当I'm书面方式到一个Excel文件,我得到一个点,数字获得比10.000.000高,格式变化,例如:
行11:9.800.000
行12:9.900.000
行13:1.0E7
行14:1.01E7
我该如何防止这种情况发生?我需要整个号码,因为我稍后从我的代码中再次访问这些信息。
(我不能手动编辑出类拔萃,我dinamically创建它,我想(和希望)存在一些Java POI类变量,我可以分配一个值,这个改变?)
谢谢你们。
最简单的方法可能是在从Excel文件中提取它时转换该值。
BigDecimal bigNumber = new BigDecimal(cell.getNumericCellValue());
//Use bigNumber when doing the calculations
这工作。谢谢! – Tuzane
根据你的榜样,你必须设置DataFormat为"#.000"
:
DataFormat format = workbook.createDataFormat();
CellStyle cellStyle = workbook.createCellStyle();
cellStyle.setDataFormat(format.getFormat("#.000"));
cell.setCellStyle(cellStyle);
其中:
0 - 数字占位符。例如,如果您键入8.9并且您希望它显示为8.90,则使用格式#.00
# - 数字占位符。遵循与0符号相同的规则,但当您键入的数字在小数点的任何一边的位数少于格式中的#符号时,Excel不会显示额外的零。例如,如果自定义格式为#。##,并且在单元格中键入8.9,则会显示数字8.9。
更多的Excel格式:How to control and understand settings in the Format Cells dialog box in Excel
不工作。无论如何感谢您的尝试。 – Tuzane
这是一个单元格格式设置,缺省情况下使用Excel中指数格式数字低于一定值时,对2013年的版本是低于1E10。而对于旧版本,我猜它是1E7的。
为了解决这个问题,你需要创建XLS文件,使用HSSFCellStyle之前,单元格的格式在Java代码中,请检查下面的代码:
HSSFCellStyle style = workbook.createCellStyle();
style.setDataFormat(workbook.createDataFormat().getFormat("#"));
Double d = 10000000000.0;
thecell.setCellValue(d);
thecell.setCellType(Cell.CELL_TYPE_NUMERIC);
thecell.setCellStyle(style);
您可能还需要重新大小的列配合通过添加
sheet.autoSizeColumn(0);
这里的数量是与所述单元格的格式(A1)和不具有它(B1)的输出为例:
不要忘记导入必要的类。
你将什么样的格式应用到单元格中?如果它不是已经被请求的数字比那更多,如果你改变它会发生什么? – Gagravarr