使用Apache POI设置Excel列宽数值不准确问题求助
Apache POI设置Excel列宽与预期不符问题解答
问题原因
Apache POI的sheet.setColumnWidth()方法的第二个参数单位为1/256个字符宽度单位,这里的字符宽度单位取的是Excel工作簿默认字体下单个半角数字0的显示宽度。
而Excel界面显示的列宽数值,会自动扣除单元格边框、网格线的预留边距,不会和你设置的字符宽度完全对应:你设置的是100个字符宽度对应的100*256参数,Excel扣除约0.78个字符的预留空间后,最终显示的列宽就是99.22。
解决方案
如果需要Excel界面显示列宽刚好为100,你可以在设置时增加对应预留宽度的调整系数,参考代码如下:
// 0.78为常规默认字体(Calibri/宋体11号)下的预留调整系数,可根据实际使用字体微调 sheet.setColumnWidth(0, (int) Math.round((100 + 0.78) * 256));
内容的提问来源于stack exchange,提问作者Hans
相关产品推荐
相关产品推荐

