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); }