Exportieren Sie Ihre Datentabelle in Excel-und PDF-Datei mit Primefaces
Verwende ich POI & Itext jar-export der Daten nach PDF oder Excel Datei, ich möchte einen Bericht generieren, der die Daten enthält, die von datatable, aber hier ist, was bekam ich als Ergebnis
Als Sie sehen, die Felder enthalten Variablen nicht die Daten aus der datatable.
Ich möchte, dass die Datei containe Daten wie id, name, E-Mail... Bitte jeder Vorschlag
Dies ist mein FormateurController.java
package com.controller;
import com.dao.FormateurDao;
import com.dao.InterfaceFormateur;
import com.lowagie.text.BadElementException;
import com.lowagie.text.Document;
import com.lowagie.text.DocumentException;
import com.lowagie.text.Image;
import com.lowagie.text.PageSize;
import com.model.Formateur;
import java.awt.event.ActionEvent;
import java.io.File;
import java.io.IOException;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;
import javax.faces.model.DataModel;
import javax.faces.model.ListDataModel;
import javax.servlet.ServletContext;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.hssf.util.HSSFColor;
/**
*
* @author Ucf
*/
@ManagedBean
@SessionScoped
public class FormateurController {
private Formateur formateur;
private DataModel listFormateurs;
private Formateur selectedFormateur;
private Formateur[] selectedFormateurs;
private List<Formateur> filteredFormateurs;
public Formateur getFormateurs() {
if(this.formateur == null){
this.formateur = new Formateur();
}
return formateur;
}
public void setFormateurs(Formateur formateur) {
this.formateur = formateur;
}
public DataModel getListFormateurs() {
List<Formateur> lista = new FormateurDao().list();
listFormateurs = new ListDataModel(lista);
return listFormateurs;
}
public void preparerajouterFormateur(ActionEvent actionEvent){
formateur = new Formateur();
}
public void preparermodifierFormateur(ActionEvent actionEvent){
formateur = (Formateur)(listFormateurs.getRowData());
}
public void ajouter(ActionEvent actionEvent){
InterfaceFormateur dao = new FormateurDao();
dao.enregistrer(formateur);
}
public void modifier(ActionEvent actionEvent){
InterfaceFormateur dao = new FormateurDao();
dao.actualiser(formateur);
}
public String exclure(){
Formateur employers = (Formateur)(listFormateurs.getRowData());
InterfaceFormateur dao = new FormateurDao();
dao.supprimer(employers);
return "index";
}
public Formateur getSelectedFormateur() {
return selectedFormateur;
}
public void setSelectedFormateur(Formateur selectedFormateur) {
this.selectedFormateur = selectedFormateur;
}
public List<Formateur> getFilteredFormateurs() {
return filteredFormateurs;
}
public void setFilteredFormateurs(List<Formateur> filteredFormateurs) {
this.filteredFormateurs = filteredFormateurs;
}
public Formateur[] getSelectedFormateurs() {
return selectedFormateurs;
}
public void setSelectedFormateurs(Formateur[] selectedFormateurs) {
this.selectedFormateurs = selectedFormateurs;
}
public void postProcessXLS(Object document) {
HSSFWorkbook wb = (HSSFWorkbook) document;
HSSFSheet sheet = wb.getSheetAt(0);
HSSFRow header = sheet.getRow(0);
HSSFCellStyle cellStyle = wb.createCellStyle();
cellStyle.setFillForegroundColor(HSSFColor.GREEN.index);
cellStyle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
for(int i=0; i < header.getPhysicalNumberOfCells();i++) {
HSSFCell cell = header.getCell(i);
cell.setCellStyle(cellStyle);
}
}
public void preProcessPDF(Object document) throws IOException, BadElementException, DocumentException {
Document pdf = (Document) document;
pdf.open();
pdf.setPageSize(PageSize.A4);
ServletContext servletContext = (ServletContext) FacesContext.getCurrentInstance().getExternalContext().getContext();
String logo = servletContext.getRealPath("") + File.separator + "images" + File.separator + "ACTUS-0-740-econocom-logo.gif";
pdf.add(Image.getInstance(logo));
}
public String redirectFormateur(){
return "ModifierFournisseur.xhtml";
}
}
dies ist mein index.xhtml
<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://xmlns.jcp.org/jsf/html"
xmlns:p="http://primefaces.org/ui"
xmlns:f="http://xmlns.jcp.org/jsf/core">
<h:head>
<title>Gestion de réservation pour une formation</title>
</h:head>
<h:body>
<p:layout fullPage="true">
<p:layoutUnit position="north" size="150">
<center> <h1>Gestion de réservation pour une formation</h1></center>
</p:layoutUnit>
<p:layoutUnit position="west" size="200" rendered="true" collapsible="true" resizable="true" closable="true" header="menu">
<h:form>
<p:commandLink value="Nouveau formateur" actionListener="#{formateurController.preparerajouterFormateur(actionEvent)}" onclick="dlgFormateur.show();" />
</h:form>
</p:layoutUnit>
<p:layoutUnit position="center">
<h:form id="form">
<p:dialog widgetVar="dlgFormateur" resizable="false" height="400" width="450" header="Ajout formateur" position="center">
<p:panelGrid columns="2">
<h:outputText value="nom"/>
<p:inputText id="adresse2" value="#{formateurController.formateurs.adresse}"/>
<h:outputText value="cin"/>
<p:inputText id="cin2" value="#{formateurController.formateurs.cin}"/>
<h:outputText value="email"/>
<p:inputText id="email2" value="#{formateurController.formateurs.email}"/>
<h:outputText value="nom"/>
<p:inputText id="nom2" value="#{formateurController.formateurs.nom}"/>
<h:outputText value="prenom"/>
<p:inputText id="prenom2" value="#{formateurController.formateurs.prenom}"/>
<h:outputText value="pseudo"/>
<p:inputText id="pseudo2" value="#{formateurController.formateurs.pseudo}"/>
<h:outputText value="sexe"/>
<p:inputText id="sexe2" value="#{formateurController.formateurs.sexe}"/>
<h:outputText value="telephone"/>
<p:inputText id="telephone2" value="#{formateurController.formateurs.telephone}"/>
<p:commandButton value="enregistrer" id="eng" actionListener="#{formateurController.ajouter(actionEvent)}" update="dataformateur" oncomplete="dlgFormateur.hide()"/>
</p:panelGrid>
</p:dialog>
<p:dataTable id="dataformateur" value="#{formateurController.listFormateurs}" var="formateur" rowKey="#{formateur.formateurId}" paginator="true" rows="10" selection="#{formateurController.selectedFormateurs}" selectionMode="multiple" filteredValue="#{formateurController.filteredFormateurs}" rowsPerPageTemplate="5,10,20,30">
<p:ajax event="rowSelect" update=":form:display" oncomplete="formateurDialog.show()" />
<f:facet name="header">
List of Formateurs
</f:facet>
<p:column headerText="Id" sortBy="#{formateur.formateurId}" filterBy="#{formateur.formateurId}" id="id_formateur">
#{formateur.formateurId}
</p:column>
<p:column headerText="Adresse" sortBy="#{formateur.adresse}" filterBy="#{formateur.adresse}" id="adresse">
#{formateur.adresse}
</p:column>
<p:column headerText="CIN" sortBy="#{formateur.cin}" filterBy="#{formateur.cin}" id="cin">
#{formateur.cin}
</p:column>
<p:column headerText="Email" sortBy="#{formateur.email}" filterBy="#{formateur.email}" id="email">
#{formateur.email}
</p:column>
<p:column headerText="Nom" sortBy="#{formateur.nom}" filterBy="#{formateur.nom}" id="nom">
#{formateur.nom}
</p:column>
<p:column headerText="Prenom" sortBy="#{formateur.prenom}" filterBy="#{formateur.prenom}" id="prenom">
#{formateur.prenom}
</p:column>
<p:column headerText="Pseudo" sortBy="#{formateur.pseudo}" filterBy="#{formateur.pseudo}" id="pseudo">
#{formateur.pseudo}
</p:column>
<p:column headerText="Sexe" sortBy="#{formateur.sexe}" filterBy="#{formateur.sexe}" id="sexe">
#{formateur.sexe}
</p:column>
<p:column headerText="Telephone" sortBy="#{formateur.telephone}" filterBy="#{formateur.telephone}" id="telephone">
#{formateur.telephone}
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="Excluir" />
</f:facet>
<p:commandLink value="Excluir" action="#{formateurController.exclure()}" onclick="if(!confirm('Existe déjà #{formateur.nom}?'))return false;" update ="dataformateur"/>
</p:column>
</p:dataTable>
<h:panelGrid columns="2">
<p:panel header="Export All Data">
<h:commandLink>
<p:graphicImage value="/images/excel.png" />
<p:dataExporter type="xls" target="dataformateur" fileName="formateurs" postProcessor="#{formateurController.postProcessXLS}" />
</h:commandLink>
<h:commandLink>
<p:graphicImage value="/images/pdf.png" />
<p:dataExporter type="pdf" target="dataformateur" fileName="formateurs"/>
</h:commandLink>
<h:commandLink>
<p:graphicImage value="/images/csv.png" />
<p:dataExporter type="csv" target="formateur" fileName="formateurs" />
</h:commandLink>
<h:commandLink>
<p:graphicImage value="/images/xml.png" />
<p:dataExporter type="xml" target="formateur" fileName="formateurs" />
</h:commandLink>
</p:panel>
<p:panel header="Export Page Data">
<h:commandLink>
<p:graphicImage value="/images/excel.png" />
<p:dataExporter type="xls" target="formateur" fileName="formateurs" pageOnly="true"/>
</h:commandLink>
<h:commandLink>
<p:graphicImage value="/images/pdf.png" />
<p:dataExporter type="pdf" target="formateur" fileName="formateurs" pageOnly="true"/>
</h:commandLink>
<h:commandLink>
<p:graphicImage value="/images/csv.png" />
<p:dataExporter type="csv" target="formateur" fileName="formateurs" pageOnly="true"/>
</h:commandLink>
<h:commandLink>
<p:graphicImage value="/images/xml.png" />
<p:dataExporter type="xml" target="formateur" fileName="formateurs" pageOnly="true"/>
</h:commandLink>
</p:panel>
</h:panelGrid>
<p:dialog header="Formateur Detail" widgetVar="formateurDialog" resizable="false"
width="300" showEffect="explode" hideEffect="explode">
<p:dataList id="display"
value="#{formateurController.selectedFormateurs}"
var="selectedFormateur" type="definition">
Id: #{selectedFormateur.formateurId}, Adresse: #{selectedFormateur.adresse}
</p:dataList>
</p:dialog>
</h:form>
</p:layoutUnit>
</p:layout>
</h:body>
</html>
Wäre ich dankbar für Ihr feedback.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sollten Sie instanziieren Formateur am Anfang selbst wie:
Wenn du den getter, Sie sind prüfen, ob formateur ist null, aber es wurde nicht initialisiert, noch nicht. Das könnte das problem sein, soweit ich das verstanden habe. Ich bin nicht sicher, ob Sie überprüfen können, ob ein Objekt null ist, wenn es nicht selbst angelegt/initialisiert. Also, vielleicht versuchen Sie initialisieren es in der declarataion selbst ODER versuchen Sie, den Zustand, in dem Sie überprüfen, ob es null ist.
Es ist, weil Sie drucken die Variablen und nicht eine outputtext mit dem WERT der Felder. Ich brauchte zwei Stunden, um es herauszufinden.
Statt
schreiben