Poi如何更改样式后更改单元格types

我编辑一个xlsx文件,我试图find一些数值单元格的错误,使大胆。 数字很​​大,例如:13882004729568

find它们并将字体更改为粗体(或更改前景色)后,单元格types将更改为默认状态,即使尝试将types更改为数字,也会得到: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); 

难道我做错了什么 ? 这是否是另一种方式呢?

setCellType官方文档( 链接 ):

设置单元格types(数字,公式或string)。 如果单元格当前包含一个值,则该值将转换为与新types匹配(如果可能)。 格式化通常会在这个过程中丢失。

所以,只要切换语句,它应该工作:

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

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

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

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

(只是为了展示原理,不要每次都创build一个新的数据格式,重复使用。)

@maraca thx帮助我做的是:

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

所以格式的变化是有差别的