我正在编辑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);
我做错了吗? 这是另一种方式吗?
答案 0 :(得分:1)
setCellType
(link)的官方文档:
设置单元格类型(数字,公式或字符串)。 如果单元格当前包含值,则将转换该值以匹配新类型(如果可能)。但是,格式化通常会在此过程中丢失。
所以,只需切换语句就可以了:
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"));
因此格式更改产生了差异