2012-05-21 25 views
5

Wir verwenden die Display tag library in unserer Java-basierten Webanwendung.Wie verhindert man die Umhüllung von exportierten Daten mit Hilfe des Anzeige-Tags?

Abgesehen davon, dass wir nur die Tag-Bibliothek verwenden, um Listen anzuzeigen, verwenden wir sie auch, um Daten in Excel-Tabellen zu exportieren, was gut funktioniert.

Das Problem ist, dass die Daten in den Excel-Tabellenspalten eingewickelt sind.

Ich muss auf die Zelle klicken, um die Zelle zu erweitern, um die vollständigen Daten zu sehen.

Gibt es eine Möglichkeit, diesen Datenumbruch zu verhindern? Kann Excel Sheet Zellen sich an die Breite der Daten anpassen?

+0

Kann ich nur mit Ihnen, Ashish, überprüfen, dass STRG + A und dann Doppelklick auf die vertikale Linie zwischen zwei Spaltenüberschriften, um die Größe der Spalte entsprechend den Textdaten im Arbeitsblatt ist eine inakzeptable Workaround für Ihre Benutzer? –

+0

@Rob Nein, genau das machen wir gerade. Aber die Benutzer wollen das nicht mehr tun. :( – ashishjmeshram

+0

Ashish, das ist nützlich zu wissen, wie diese Problemumgehung beschreibt perfekt, was vor/während des Exports getan werden muss. Ich habe Display Tag, kompiliert und die Proben zu Tomcat 6.0.14 auf der Export-Seite des Beispiels bereitgestellt nicht reproduzieren das Problem. Die Zellen in Excel wurden korrekt dimensioniert. Können Sie einige Beispieldaten zur Verfügung stellen, die dieses Problem replizieren würden? –

Antwort

2

Ja Zellen autoformated werden können, wenn Sie POI mit ihm arbeiten HSSF um ein Dokument zu erstellen. Wenn nicht, empfehle ich Ihnen, es zu verwenden, öffnen Sie einfach ein vorhandenes Dokument und passen Sie die Spalten automatisch an, die Sie benötigen.

Nach haben Sie alle Ihre Zellen erstellt, aber bevor Sie das Dokument speichern, rufen Sie einfach diese Methode auf, die die Spalte neu einstellt. zum Beispiel habe ich es für alle meine Spalten auf einem Blatt wie folgt aus:

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

Und hier ist eine beste Verbindung mit poi zu starten zu verwenden: Busy Developers' Guide to HSSF and XSSF Features

2

Es ist wie this blog entry sieht diskutiert DisplayTag der Excel-Exportmechanismus und zeigt Ihnen, wie Sie den Excel-Export ändern, um ihn an einen benutzerdefinierten HSSF-Tabellenschreiber anzubinden.

Fassen wir zusammen:

  • eine Implementierung org.displaytag.export.BinaryExportView schreiben (oder erweitern DisplayTag des DefaultHssfExportView)
  • Diese Implementierung zu einer neuen Klasse delegieren muss, die DisplayTag des HssfTableWriter (oder Kopieren/Einfügen erstreckt das Original aus DisplayTag in neue Quelle, da klingt es wie ein Haufen von Accessormethoden dort unnötig sind privat)
  • Überschreibung (oder Änderung) das spezielle Verfahren in HssfTableWriter (ich denke, es writeBottomBanner (genannt))
  • Update-Datei Ihre displaytag.properties mit dieser Zeile: export.excel.class = xyzMyExcelExportView

Das heißt, ich bin in DisplayTag 1.2 auf den Quellcode suchen und es scheint bereits die Säule ausbauen für die automatische Größenanpassung (http://displaytag.sourceforge.net/1.2/displaytag-export-poi/xref/org/displaytag/render/HssfTableWriter.html#347). Verwenden Sie DisplayTag 1.2 oder verwenden Sie eine frühere Version? Wenn Sie eine frühere Version verwenden, wird das Problem möglicherweise durch einen Upgrade auf Version 1.2 behoben. Oder verstehe ich nicht, was Sie damit meinen, dass die Daten "eingepackt" sind?

+0

Thanks für die Antwort und sehen, ob es funktioniert. – ashishjmeshram