使用NPOI已经有一段时间了,一直用着很好,但最近遇到了这样一个问题:使用NPOI创建的xlsx文件在WPS中打开并使用打印预览一切正常,使用Excel 2019打印预览则会出现宽度不足,打印页数增加的情况,且设置好的行高也对不上。
经过反复检查,发现问题是出在两个软件的默认字体上面。通过打开文件后修改“常规”单元格样式可以解决。使用WPS打开后“常规”单元格样式的字体为“宋体”,而Excel2019打开是“等线”,所有未设置过的字体的单元格字体默认均为“等线”。如果使用WPS打开并保存后再使用Excel2019打开则会一切正常。
不知道有没有什么办法解决这一问题。在创建xlsx文件时设置每个单元格的默认字体。
经过反复查找资料,终于找到了解决办法,代码如下,感谢各位回复:
IFont font = workbook.GetFontAt(0);//默认的字体
font.FontName = "宋体";
((XSSFFont)font).SetFamily(NPOI.SS.UserModel.FontFamily.MODERN);
((XSSFFont)font).SetScheme(FontScheme.NONE);
参考:https://www.freesion.com/article/6410674446/
https://stackoverflow.com/questions/39686790/apache-poi-default-style-for-workbook
只看到单元格设置字体方法,没看到全局设置字体。
对啊,找不到这个功能,以前旧版的Excel默认字体不是等线的都没问题,现在新版的换成等线了,如果不处理一下直接导出PDF会打印格式出问题。
经过反复查找资料,终于找到了解决办法,代码如下,感谢各位回复:
IFont font = workbook.GetFontAt(0);//默认的字体
font.FontName = "宋体";
((XSSFFont)font).SetFamily(NPOI.SS.UserModel.FontFamily.MODERN);
((XSSFFont)font).SetScheme(FontScheme.NONE);
参考:https://www.freesion.com/article/6410674446/
https://stackoverflow.com/questions/39686790/apache-poi-default-style-for-workbook