增加列的宽度而不是指数值

时间:2013-07-03 04:27:03

标签: java apache-poi poi-hssf

我有一个问题是,我已经生成了一个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但它不起作用。请提出解决方案。

2 个答案:

答案 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作为参考。