1

我正在使用 Apache POI 构建一个 Excel 文件。添加所有内容后,我使用sheet.autoSizeColumn(i).

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

间距不够的示例 Excel 文件

编辑

在我的 Windows 开发盒上,我尝试将字体设置为 Verdana,使用font.setFontName("Verdana"). 所有的内容都肯定会更改为 Verdana,并且列上的大小是完美的。在 Linux 生产机器上,我使用 Gagravarr 在以下注释中引用的 Java 代码打印出 Java 看到的字体列表。我试过Monospaced了,但间距与上面的屏幕截图相同。然后我尝试Dingbats了,当间距真的关闭时,内容仍然可读(它不应该是)(见下面的截图)。

在此处输入图像描述

4

2 回答 2

3

此外,openjdk 和 Oracle JDK 不使用相同的字体引擎(SUN∕Oracle 保留其旧版引擎,因为担心任何更改都会破坏编码错误的应用程序)。openjdk 很可能会在 linux 上更好地处理字体,因为它重用了与系统其余部分相同的字体库,而不是重新发明方轮。

字体是法律上的噩梦;Linux 字体许可通常足够自由,您可以在任何地方复制、修改和部署它们,但反之则不然(微软非常小心地为任何愚蠢到依赖 Windows 字体构建应用程序的人创建供应商锁定)

于 2013-07-11T18:47:40.773 回答
2

我不确定这是否会解决您的问题,但如果您问过“有没有办法在自动调整大小后添加一点填充?”....是的,您可以通过以下方式做到这一点。

testSheet.autoSizeColumn(ColIndex);
testSheet.setColumnWidth(ColIndex ,testSheet.getColumnWidth(ColIndex)+PaddingWidth);
于 2013-07-10T04:01:39.817 回答