我有一个问题是,我已经生成了一个excel表,其中包含许多包含Data的列。现在有一个名为abc_ID的列,来自后端的值是long类型,如下所示
//shown below how the value is passed for that column
private Long abc_Id;
abcdeed.abc_Id(13243534540L);
HSSFCellStyle[] cellStyles = new HSSFCellStyle[11];
HSSFCellStyle styleHeader = null;
HSSFCellStyle styleHeaderRBorder = null;
HSSFCellStyle cellStyleReportName = null;
HSSFCellStyle cellStyle00 = null;
HSSFCellStyle style_WhiteBg = null;
我已经设置了以下abc_ID列的单元格样式
if(columnHeaders[i].equals("abc_Id") && abcdeed.getabc_Id() != null){
cell.setCellValue(abcdeed.getabc_Id());
cell.setCellStyle(cellStyles[9]);
现在的问题是,最终生成excel表时,当我打开excel表时,第一列abc_Id的值看起来是压缩的,并且其中的值最初是指数类型,这是因为该列是压缩类型I希望列宽应该扩展一个,值不应该是指数类型,我试图增加cellStyles但它不起作用。请提出解决方案。
答案 0 :(得分:1)
在该特定Cell的所有行中使用CELL_TYPE_STRING。
rows.getCell(abc_Id_Cell_No).setCellType(Cell.CELL_TYPE_STRING);
并在最后
Sheet.autoSizeColumn(abc_Id_Cell_No);
这会将所有单元格值更改为String,autoSizeColumn将调整该列宽。
答案 1 :(得分:0)
您的单元格显示指数的原因与您的单元格宽度无关,而是与您放入的值类型有关。
如果您的数字是作为字符串输入的,那么单元格可能会隐藏视图中的整个值,但单元格中仍然存在完整值。
因为您的值是一个数字,您需要编辑单元格的数字格式参数,以便它显示您希望在小数点后显示的位数。您可以查看有效的number format codes作为参考。