Excel导出工作在本地,在服务器上运行时,字段变得隐藏

好的,所以我有一个SmartGWT Web应用程序,我有一些报表运行在列表网格中。

按照使用listgrid.exportclientdata()的示例,使用Smartgwt内置的导出导出到excel;

这是问题:

当在本地运行时,所有工作正常,我可以打开XLSX文件并查看所有数据。

当从服务器运行时,包含数据的列将被隐藏! 如果我手动从Excel内做“取消隐藏”的事情,我可以看到列…

我的本地环境是运行Sun Java的Mac OSX Mountain Lion(也是早些时候尝试的)。 prod服务器是运行OpenJDK的Debian。

不知道这是否会有什么关系,我不知道如何去解决它…在两个环境中运行我的webapp在Tomcat6上。

对于其他人来说,在黑暗中searchstackoverflow无效的谜语的答案:

这是由于某些字体在OpenJDK中不可用,而没有任何错误logging在任何地方…

我在Debian上切换到Sun的JDK,现在Excel文件打开并显示正确。

当面对这个似乎与Java Bug有关的POI Bug时 ,也会发生这种情况。

如果是将字体改为Calibri以外的情况,或者使用7u21以上的jre应该可以解决问题。 您也可以通过使用类似这样的代码来减轻问题并避免列被完全折叠sheet.autoSizeColumn(x); if (sheet.getColumnWidth(x) == 0) { // autosize failed use MIN_WIDTH sheet.setColumnWidth(x, MIN_WIDTH); } sheet.autoSizeColumn(x); if (sheet.getColumnWidth(x) == 0) { // autosize failed use MIN_WIDTH sheet.setColumnWidth(x, MIN_WIDTH); }