2012-05-21 9 views
5

我們在基於Java的Web應用程序中使用Display tag library如何防止使用顯示標籤將數據導出到excel?

除了只使用顯示標籤庫來顯示列表,我們還使用它來將數據導出到Excel工作表正常工作。

問題是,數據是包裝在Excel工作表列

我需要點擊單元格以展開單元格才能看到完整的數據。

有什麼辦法可以防止這種數據的封裝嗎? Excel工作表單元格是否可以根據其中的數據寬度進行調整?

+0

我可以直接與您檢查Ashish是否執行CTRL + A,然後雙擊任意兩列標題之間的垂直線以根據工作表中顯示的文本數據調整列的大小,這對您的用戶來說是不可接受的解決方法嗎? –

+0

@Rob不,實際上這是我們目前正在做的。但用戶不想再這樣做。 :( – ashishjmeshram

+0

Ashish,這很有用,因爲這個解決方法完全描述了在導出期間/導出前需要完成的工作。我看了一下Display Tag,編譯並將示例部署到Tomcat 6.0.14。在示例的Export頁面沒有重現的問題在Excel中的單元格的大小正確,你能提供一些樣本數據,將複製這個問題? –

回答

2

是細胞可autoformated,如果您使用的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

2

它看起來像this blog entry討論DisplayTag的excel導出機制,並向您展示如何修改Excel導出以綁定到自定義HSSF表編寫器。

總結:

  • 寫一個實現org.displaytag.export.BinaryExportView(或延長DisplayTag的DefaultHssfExportView)
  • 說實現需要委託給擴展DisplayTag的HssfTableWriter一個新的類(或複製/粘貼原來從DisplayTag到新的來源,因爲它聽起來像一堆訪問器方法上有不必要的私人)
  • 重寫(或更改)HssfTableWriter中的特定方法(我認爲它叫做writeBottomBanner())
  • 更新您的displaytag.properties文件,該行: export.excel.class = xyzMyExcelExportView

這就是說,我期待在DisplayTag 1.2的源代碼,它似乎已經擴大列用於自動調整大小(http://displaytag.sourceforge.net/1.2/displaytag-export-poi/xref/org/displaytag/render/HssfTableWriter.html#347)。您正在使用DisplayTag 1.2,還是使用早期版本?如果您使用的是早期版本,則升級到1.2將解決您的問題。或者我誤解了數據被「包裹」的含義?

+0

感謝您的答案。並看看它是否有效。 – ashishjmeshram

相關問題