我正在编辑一个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);

难道我做错了什么 ? 还有其他方法吗?

===============>>#1 票数:2

@maraca thx为我提供的帮助是:

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

因此格式更改带来了不同

===============>>#2 票数:1

setCellType正式文档( link ):

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

因此,只需切换语句即可使用:

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

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

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

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

(仅出于显示原则,不要每次都创建新的数据格式,以供重用。)

  ask by Gurman Eduard translate from so

未解决问题?本站智能推荐: