如何使用display标签阻止导出到excel的数据包装?

时间:2012-05-21 08:39:22

标签: java export-to-excel displaytag

我们在基于Java的Web应用程序中使用Display tag library

除了使用显示标记库显示列表之外,我们还使用它将数据导出到excel表,这样工作正常。

问题是数据包装在Excel工作表列中。

我需要单击单元格以展开单元格以查看完整数据。

有没有办法防止这种数据包裹? Excel工作表单元格可以根据其中的数据宽度自行调整吗?

3 个答案:

答案 0 :(得分:2)

是单元格可以自动格式化,如果您使用POI与HSSF一起创建文档。 如果不是我建议您使用它只需打开现有文档并自动调整所需的列  

后,您创建了所有单元格,但在保存文档之前,您只需调用此方法重新调整列大小。 例如,我对表格中的所有列都这样做了:

//
// Create an instance of workbook and sheet
//
HSSFWorkbook workbook = new HSSFWorkbook();
HSSFSheet sheet = workbook.createSheet();
sheet.setAutobreaks(true);
 .
 .//code in which you create actual rows and cells HERE  
 .
//auto formating to fit the page
for(int i=0; i<repModel.getReportHeaders().length;i++){
sheet.autoSizeColumn((short) (i+1));     
}

以下是用于启动poi的最佳链接:Busy Developers' Guide to HSSF and XSSF Features

答案 1 :(得分:2)

看起来this blog entry讨论了DisplayTag的Excel导出机制,并向您展示了如何修改Excel导出以绑定到自定义HSSF表编写器。

总结:

  • 编写实现org.displaytag.export.BinaryExportView(或扩展DisplayTag的DefaultHssfExportView)
  • 所述实现需要委托一个扩展DisplayTag的HssfTableWriter的新类(或者将原始文件从DisplayTag复制/粘贴到新的源中,因为它听起来像是一堆不必要的私有访问器方法)。
  • 覆盖(或更改)HssfTableWriter中的特定方法(我认为它叫做writeBottomBanner())
  • 使用以下行更新displaytag.properties文件: export.excel.class = x.y.z.MyExcelExportView

那就是说,我正在查看DisplayTag 1.2中的源代码,它似乎已经在扩展自动调整大小的列(http://displaytag.sourceforge.net/1.2/displaytag-export-poi/xref /org/displaytag/render/HssfTableWriter.html#347)。您使用的是DisplayTag 1.2,还是使用的是早期版本?如果您使用的是早期版本,则升级到1.2可能会解决您的问题。或者我误解了你被“包裹”的数据意味着什么?

答案 2 :(得分:1)

如果您使用HSSF Poi生成Excel文档,那么您应该能够调整列宽:

http://poi.apache.org/apidocs/org/apache/poi/hssf/usermodel/HSSFSheet.html#setColumnWidth%28int,%20int%29