自动resize时,Apache POI不能提供足够的空间

我正在用Apache POI构build一个Excel文件。 添加完所有内容后,我使用sheet.autoSizeColumn(i)自动调整列的大小。

有时候它不能提供足够的空间。 我已经尝试过VerdanaCalibri-Regular (必须从Calibri切换到Calibri-Regular,因为autosize在我们的Windows 7机器上突然变得非常疯狂,但是在我们的Linux机器上运行良好,这对我来说是个谜)。 有什么我可以做的,以解决这个问题? 或者有没有办法在自动调整后添加一些填充?

示例Excel文件没有足够的间隔

编辑

在我的Windows开发盒上,我尝试用font.setFontName("Verdana")将字体设置为Verdana。 所有的内容都明确地改变到Verdana和列的大小是完美的。 在Linux生产环境中,我使用了Gagravarr在下面的注释中引用的Java代码来打印出Java所看到的字体列表。 我试过Monospaced但是间隔和上面的截图一样。 然后我试了一下Dingbats ,内容仍然是可读的(不应该是这样),而间距真的是closures的(见下面的截图)。

在这里输入图像说明

我不确定这是否能够解决您的问题,但是如果您询问“是否有一种方法可以在自动调整后添加一点填充?”….是的,您可以按照以下方法进行。

 testSheet.autoSizeColumn(ColIndex); testSheet.setColumnWidth(ColIndex ,testSheet.getColumnWidth(ColIndex)+PaddingWidth); 

另外openjdk和Oracle JDK不使用相同的字体引擎(SUN / Oracle保留其传统引擎,因为担心任何更改都会破坏编码严重的应用程序)。 很有可能openjdk在linux上可以更好地处理字体,因为它会像系统其他部分一样重用相同的字体库,而不是重新创build一个方形的轮子。

字体是一个合法的噩梦; Linux字体许可通常是足够自由的,你可以在任何地方复制,修改和部署它们,但是反过来却是不正确的(微软非常小心地为任何愚蠢的人创build供应商locking,以根据Windows字体来构build应用程序)