Poi改变风格后如何改变细胞类型

时间:2015-05-16 17:50:56

标签: java excel apache-poi

我正在编辑xlsx文件,我试图在数字单元格中找到一些错误并使其变为粗体。 数字很​​大,例如:13882004729568

找到它们并将字体更改为粗体(或更改前景色)后,单元格类型将更改为其默认状态,我得到:b1.3882E + 13 甚至在尝试将类型更改为数字之后。

XSSFFont italic = wb.createFont();
italic.setFontName("Arial");
italic.setItalic(true);
CellStyle italicStyle = wb.createCellStyle();
italicStyle.setFont(italic);
cell.setCellStyle(italicStyle);
cell.setCellType(XSSFCell.CELL_TYPE_NUMERIC);

我做错了吗? 这是另一种方式吗?

2 个答案:

答案 0 :(得分:1)

setCellTypelink)的官方文档:

  

设置单元格类型(数字,公式或字符串)。   如果单元格当前包含值,则将转换该值以匹配新类型(如果可能)。但是,格式化通常会在此过程中丢失。

所以,只需切换语句就可以了:

cell.setCellType(XSSFCell.CELL_TYPE_NUMERIC);
cell.setCellStyle(italicStyle);

另一种可能性是你用完了样式,因为你每次都会创建一个新样式。创建一次样式并重复使用。

您可以在更改单元格类型之前获取样式,也可以设置格式:

italicStyle.setDataFormat(wb.createDataFormat().getFormat("0"));

(只是为了显示原则,每次都不要创建新的数据格式,重复使用。)

答案 1 :(得分:1)

@maraca thx的帮助 我做的是:

XSSFDataFormat df = wb.createDataFormat();
italicStyle.setDataFormat(df.getFormat("##0"));

因此格式更改产生了差异