So exportieren rich:dataTable zu excel
Ich würde gerne exportieren, den Inhalt eines <rich:dataTable>
oder <rich:extendedDataTable>
zu excel.
-
Muss ich sehen, dass PrimeFaces hat den "exporter-Funktion" http://www.primefaces.org/showcase/ui/exporter.jsf
-
Ich würde gerne in der Lage sein, etwas zu tun ähnlich wie diese nur mit mit PrimeFaces, aber mit richFaces (version 3.3.3)...(ich würde gerne migrieren, RichFaces 4, der irgendwann in der Zukunft, bin aber hängengeblieben mit 3.3.3 für jetzt)
-
Habe ich gelesen, dass es möglich ist, Ihre eigenen zu bauen mit http://poi.apache.org/, aber ich weiß nicht, wo Sie anfangen auf die Umsetzung von so etwas wie dieses...
Irgendwelche Gedanken darüber, wie am besten, um Vorformling die gewünschte export-und Beispiele würde sehr geschätzt!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Mittels POI in JSF ist das nicht wirklich anders aus mit POI in reinem Java. Nur eine Sammlung von Gegenständen, die jeden Datensatz. Müssen Sie bereits haben, wie man einen datatable, die auch bringt eine solche Sammlung. Sie müssen nur Durchlaufen genau die gleichen Sammlung zum erstellen einer excel-Tabelle, in der POI.
Hier ein kickoff Beispiel, wo
items
ist einList<Item>
die man auch in der datatable:Damit bieten diese als download auf der JSF-Antwort, die Sie brauchen, um die
ExternalContext#getResponseOutputStream()
alssomeOutputStream
. Sie müssen auch die Antwort content-Typ (so dass der browser weiß, welche Anwendung zugeordnet werden) und die Antwort der content-disposition - (, so dass Sie geöffnet wird, als eine Anlage, die über einen gültigen Dateinamen).Ende,
FacesContext#responseComplete()
muss aufgerufen werden, um zu verhindern, dass JSF aus der Durchführung der Standard-navigation task (die würden nur korrupte Excel-Datei durch Anhängen einige HTML-Ausgabe der Seite navigiert, um am Ende).Beachten Sie, dass die oben genannten JSF-Beispiel wird davon ausgegangen, JSF 2.x. Wenn man eigentlich mit JSF 1.x, die nicht in mehrere Bequemlichkeit
ExternalContext
delegate-Methoden, dann würden Sie brauchen, zu greifen, die raw -HttpServletResponse
durchExternalContext#getResponse()
und die Aktionen auf Sie. Siehe auch Wie ein Datei-download von einer JSF-backing bean?<a4j:htmlCommandLink>
zu behandeln, diese operation. Der bereitgestellte code wird erzwungen, eine download-und man kann nicht laden Sie die Datei mit einem ajax-request. Unter der Annahme dieser code ist aufBean#toExcel()
haben, sollten Sie diese JSF-code in Ihre Seite:<a4j:htmlCommandLink action="#{bean.toExcel}" target="_blank" value="To Excel" />
oder ähnliche, je nach Bedarf.<h:commandLink>
. Dieser Haftungsausschluss ist auch schon in der vorigen verknüpfte Frage stackoverflow.com/questions/9391838/...import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.usermodel.Workbook;
Workbook
oder ein Duplikat älteren versioniert POI-Bibliothek an anderer Stelle in classpath. Die KlasseWorkbook
wird auch von JExcelAPI (POI hat es als Schnittstelle). Vielleicht haben Sie es auch in den Klassenpfad um einige experiment? Trotzdem prüfen die Importe, und vergleichen Sie diese mit den Einträgen in meinem vorherigen Kommentar.Brauchte ich auch diese Funktionalität, so nahm ich die primefaces dataExporter Komponente und verändert es, um es mit Richfaces. Ich fügte auch die Fähigkeit zu exportieren collapsibleSubTable Innenseiten Tabellen.
Primefaces und Richfaces sind opensource, fühlen Sie sich frei, es zu verbessern.
Paket mit Quellen und Beispiele:
bundle