Lomadee, uma nova espécie na web. A maior plataforma de afiliados da América Latina



Luiz Henrique de Angeli

luizdeangeli@gmail.com


Gerar Excel, Html e Word de um Datagrid

quarta-feira, 16 de setembro de 2009



Pessoal fiz um exemplo que gera um documento do Excel, HTML ou Word dos dados de um DataGrid. É bem simples e utiliza o FileReference para salvar os arquivos.

Atenção: fique atento a codificação de caracteres que você utiliza no Flex e a que você utiliza na hora de gerar os documentos, pois pode ter problemas com acentuação das palavras.

Observação : para compilar esse projeto você precisa alterar a versão do flash player para 10, para isso clique com o botão direito no projeto, acesse a opção "Flex Compiler" e altere o campo "Require Flash Player version" para 10.0.0.

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
 <mx:TitleWindow x="154" y="59" styleName="opaquePanel">
  <mx:DataGrid id="dtgLista" width="400" height="174" dataProvider="{dtpLista}">
   <mx:columns>
    <mx:DataGridColumn headerText="Codigo" dataField="codigo"/>
    <mx:DataGridColumn headerText="Nome" dataField="nome"/>
    <mx:DataGridColumn headerText="Idade" dataField="idade"/>
   </mx:columns>
  </mx:DataGrid>
  <mx:ControlBar horizontalAlign="right">
   <mx:Box direction="horizontal">
    <mx:RadioButtonGroup id="rdgTipo"/>
    <mx:RadioButton value="xls" label="XLS" groupName="rdgTipo" selected="true"/>
    <mx:RadioButton value="html" y="45" label="HTML" groupName="rdgTipo"/>
    <mx:RadioButton value="doc" label="DOC" groupName="rdgTipo"/> 
   </mx:Box>
   <mx:Button label="Salvar Documento" click="gerar(dtgLista)"/>
  </mx:ControlBar>
 </mx:TitleWindow>

 <mx:Script>
  <![CDATA[
   import mx.controls.Alert;
   import mx.controls.DataGrid;

   [Bindable] private var dtpLista : Object = 
    [
    {codigo : '1',nome : 'Luiz',idade : 23},
    {codigo : '2',nome : 'Maria',idade : 20},
    {codigo : '3',nome : 'Carlos',idade : 2},
    {codigo : '4',nome : 'Da Silva',idade : 15},
    {codigo : '5',nome : 'Marcela',idade : 28},
    {codigo : '6',nome : 'André',idade : 24},
    {codigo : '7',nome : 'José',idade : 23},
    {codigo : '8',nome : 'Silva',idade : 21},
    {codigo : '9',nome : '',idade : 5},
    ];

   private function gerar(dtg : DataGrid):void
   {
    var i   : int;
    var j   : int;
    var html  : String = "";

    html+="<html><body>";
    html+="<head>";
    html+="<meta http-equiv='Content-Type' content='text/html; charset=utf-8'>";
    html+="</head>";
    html+="<table border=1>";

    //TITULOS DAS COLUNAS
    html+="<tr>";     
    for(i=0;i<dtg.columns.length;i++)
    {
     html+="<td><b>"+dtg.columns[i].headerText+"</b></td>";
    }    
    html+="</tr>";     

    //DADOS DO GRID
    for(j=0;j<dtg.dataProvider.length;j++)
    {
     html+="<tr>";
     for(i=0;i<dtg.columns.length;i++)
     {      
      if(dtg.dataProvider[j][dtg.columns[i].dataField]){       
       html+="<td>"+(dtg.dataProvider[j][dtg.columns[i].dataField].toString() ? dtg.dataProvider[j][dtg.columns[i].dataField].toString() : " ")+"</td>";
      }else{
       html+="<td> </td>";
      }
     }
     html+="</tr>";
    }

    html+="</table>";

    html+="</body></html>";

    new FileReference().save(html,"arquivo." + rdgTipo.selectedValue);
   }
  ]]>
 </mx:Script> 

</mx:Application>

0 comentários:


Submarino.com.br
Submarino.com.br