Exportação de Arquivos

Projeto feito em JSF2 e Prime Faces 4.0 para exportação de arquivo em vários formatos, por exemplo: PDF, Excel, CSV e XML.


As Libs utilizadas no projeto:

- all-themes-1.0.10.jar
- com.lowagie.text_2.1.7.v2.jar
- commons-beanutils-1.8.0.jar
- commons-collections-3.2.1.jar
- commons-digester-2.0.jar
- commons-logging-1.1.1.jar
- itext-2.1.7.jar
- javax.faces-2.0.11.jar
- jsf-api.jar
- jsf-impl.jar
- jstl.jar
- jxl.jar
- mysql-connector-java-5.1.23-bin.jar
- poi-3.9.jar
- primefaces-4.0-sources.jar
- primefaces-4.0.jar
- standard.jar

Classe Produto

package entity;

import java.io.Serializable;

public class Produto implements Serializable{
 
	private static final long serialVersionUID = 1L;
	private Integer idProduto;
	private String  nome;
	private Double  preco;
	private Integer quantidade;
	private Double total = 0.;
	
	public Produto() {
	
	}

	public Produto(Integer idProduto, String nome, Double preco, Integer quantidade) {
		this.idProduto = idProduto;
		this.nome = nome;
		this.preco = preco;
		this.quantidade = quantidade;
	}

	@Override
	public String toString() {
		return "Produto [idProduto=" + idProduto + ", nome=" + nome + ", preco=" + preco + ", quantidade=" + quantidade	+ ", total=" + total + "]";
	}

	public Integer getIdProduto() {
		return idProduto;
	}
	public void setIdProduto(Integer idProduto) {
		this.idProduto = idProduto;
	}
	public String getNome() {
		return nome;
	}
	public void setNome(String nome) {
		this.nome = nome;
	}
	public Double getPreco() {
		return preco;
	}
	public void setPreco(Double preco) {
		this.preco = preco;
	}
	public Integer getQuantidade() {
		return quantidade;
	}
	public void setQuantidade(Integer quantidade) {
		this.quantidade = quantidade;
	}
	public Double getTotal() {
		return total;
	}
	public void setTotal(Double total) {
		this.total = total;
	}
}

Classe Dao

package persistence;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

public class Dao {

	Connection con;
	PreparedStatement stmt;
	ResultSet rs;
	
	public void open() throws Exception{
		Class.forName("com.mysql.jdbc.Driver"); 
		con = DriverManager.
		  getConnection("jdbc:mysql://localhost:3306/nomedobanco","usuario","senha");
	}	
	
	public void close() throws Exception{
		con.close();
	}
}    

Classe ProdutoDao

package persistence;

import java.util.ArrayList;
import java.util.List;
import entity.Produto;

public class ProdutoDao extends Dao {
	
	public void create(Produto p)throws Exception{
		open();
		 stmt = con.prepareStatement(" insert into produto values (null,?,?,?)");
		   stmt.setString(1, p.getNome());
		   stmt.setDouble(2, p.getPreco());
		   stmt.setInt(3, p.getQuantidade());
		  stmt.execute();
		  stmt.close();
		close();
	}

	public List findAll() throws Exception{
		open();
		List lista = new ArrayList();
		stmt = con.prepareStatement("select * from produto");
		rs = stmt.executeQuery();
		while(rs.next()){
			Produto p = new Produto();
			  p.setIdProduto(rs.getInt(1));
			  p.setNome(rs.getString(2));
			  p.setPreco(rs.getDouble(3));
			  p.setQuantidade(rs.getInt(4));
			  lista.add(p); //armazena na Lista 3 produtos ...
		}
		close();
		return lista;
	}
}    

sistema.xhtml

<!DOCTYPE html >

<html xmlns="http://www.w3.org/1999/xhtml"
	xmlns:h="http://java.sun.com/jsf/html"
	xmlns:f="http://java.sun.com/jsf/core"
	xmlns:p="http://primefaces.org/ui">
 
 <h:head>
 
 </h:head>
 
 <h:body>
  <p:tabView    id="tab1">
   <p:tab title="Sistema Produto">
   
     <h:form id="form1">
     <p:panelGrid columns="2"> 
      <h:outputText value="Nome" />
      <p:inputText value="#{mb.produto.nome}" required="true" 
           requiredMessage="Entre com Nome" />
     
      <h:outputText value="preco" />
      <p:inputText value="#{mb.produto.preco}"  required="true"
            requiredMessage="Entre com Preco"
      />
     
     <h:outputText value="Quantidade" />
      <p:inputText value="#{mb.produto.quantidade}"  required="true"
            requiredMessage="Entre com Quantidade"  />
      
           
      </p:panelGrid>  
        <p:commandButton  value="Gravar Produto"
          action="#{mb.gravar}"
          ajax="true" update=":tab1:form1, :tab1:form2, @form"></p:commandButton>
                      
     <p:messages></p:messages>
     <p:growl></p:growl>
     
     </h:form>
     
    </p:tab>
    
    
<p:tab title="Consulta Produto">
    <h:form id="form2">
    <p:dataTable id="tabela" value="#{mb.lista}" var="linha" paginator="true"
      rowsPerPageTemplate="3,6,9,12" 
      paginatorTemplate="{CurrentPageReport} {FirstPageLink}
         {PreviousPageLink} {NextPageLink} {LastPageLink} {PageLinks}"
                        rows="3"
     >
          <p:column headerText="IdProduto">
             <h:outputText value="#{linha.idProduto}" />
          </p:column>              
          <p:column headerText="Nome">
              <h:outputText value="#{linha.nome}" />
          </p:column>              
          <p:column headerText="Preco">
              <h:outputText value="#{linha.preco}" />
          </p:column>
          <p:column headerText="Quantidade">
              <h:outputText value="#{linha.quantidade}" />
          </p:column>
    
    </p:dataTable> 
     </h:form>
    </p:tab>    
     
     
<p:tab title="Exportacao">
     <h:form id="form3">
     <p:panelGrid columns="2">
       <p:panel header="Export Data">
         <h:commandLink>
            <p:graphicImage value="img/excel.png" width="100px"
             height="100px"></p:graphicImage>
             <p:dataExporter target=":tab1:form2:tabela"  type="xls"
              fileName="RelatorioProdutos"></p:dataExporter>
         </h:commandLink>
       
       <h:commandLink>
            <p:graphicImage value="img/pdf.png" width="100px"
             height="100px"></p:graphicImage>
             <p:dataExporter target=":tab1:form2:tabela"  type="pdf"
              fileName="RelatorioProdutos"></p:dataExporter>
         </h:commandLink>
       
       <h:commandLink>
            <p:graphicImage value="img/csv.png" width="100px"
             height="100px"></p:graphicImage>
             <p:dataExporter target=":tab1:form2:tabela"  type="csv"
              fileName="RelatorioProdutos"></p:dataExporter>
         </h:commandLink>
       
       <h:commandLink>
       
       
            <p:graphicImage value="img/xml.png" width="100px"
             height="100px"></p:graphicImage>
             <p:dataExporter target=":tab1:form2:tabela"  type="xml"
              fileName="RelatorioProdutos"></p:dataExporter>
              
         </h:commandLink>
       
       </p:panel>
     </p:panelGrid>
     </h:form>
     </p:tab>
     
</p:tabView>
 </h:body>

</html>    

Rodando o sistema...

Gravando um produto...

Produto gravado...

Clicando na aba de Consulta...

Clicando na aba de Exportação...

Clicando em exportar XML e abrindo o arquivo...

Clicando em exportar PDF...