Comunidad de diseño web y desarrollo en internet online

Exportar Excel

Citar            
MensajeEscrito el 29 Ago 2012 03:05 pm
Buenos dias actualmente estoy generando un archivo a excel desde flex, pero poseo un problema y es que me lo genera en formato de excel 2 -- un poco vieja.. como podria para que me lo genere en una versión mas actualizada??
adjunto el código que utilizo..

Código Flex :


import com.as3xls.xls.ExcelFile;
   import com.as3xls.xls.Sheet;
   
   import flash.errors.IllegalOperationError;
   import flash.net.FileReference;
   import flash.utils.ByteArray;
   
   import mx.collections.ArrayCollection;
   import mx.collections.ICollectionView;
   import mx.collections.IViewCursor;
   import mx.collections.XMLListCollection;
   import mx.controls.DataGrid;
         
   public class exportExcel
   {
      public function exportExcel()
      {
         throw new IllegalOperationError("Class \"exportExcel\" is static. You can't instance this");
      }
      
      //-----------------------------
      // Public function
      //-----------------------------
      /**
       * 
       * Exporta los datos de un datagrid hacia un Excel.
       * Toma el dataProvider del mismo y las columnas para su exportacion
       * 
       * @param dg          Referencia al datagrid
       * @defaultName         Nombre default con el que se va a generar el archivo excel
       * 
       */
      static public function dataGridExporter(dg:DataGrid, defaultName:String):void
      {
         if (dg == null || dg.dataProvider == null || defaultName == null || defaultName == "")
            return;
         
         var cols:Number = 0;
         var colsValues:Array = [];
         var cantCols:Number = dg.columnCount;
         var fieldT:String;
         var headerT:String;
         
         // armo el listado de headers y variables para cada columna
         for ( ; cols < cantCols; cols++)
         {
            headerT = (dg.columns[cols] as Object).headerText
            fieldT = (dg.columns[cols] as Object).dataField;
            if ( fieldT == null || fieldT == "" || headerT == null || headerT == "")
               continue; 
            colsValues.push({
               header:headerT,
               value:fieldT
            });
         }
         
         if ( colsValues.length == 0 )
            return;
         
         exportExcel.export(dg.dataProvider, colsValues, defaultName);
      }
      
      /**
       * 
       * Export to Excell
       * 
       * @param obj          Objeto simple, XML, XMLList, Array, ArrayCollection o XMLListCollection
       *                   que se quiere exportar a excel
       * @colsValues         Listado de objetos que indican cual es el nombre de la columna
       *                   y que propiedad del objeto se utiliza para sacar los datos de la columna
       *                   {header:"nombre del header", value:"propiedad del objeto que contiene el valor"}
       * @param defaultName   Nombre default con el que se genera el excel
       * 
       */
      static public function export(obj:Object, colsValues:Array, defautlName:String):void
      {
         var _dp:ICollectionView = exportExcel.getDataProviderCollection(obj);
         if ( _dp == null )
            return;
         
         var rows:Number = 0;
         var cols:Number = 0;
         var cantCols:Number = colsValues.length;
         var sheet:Sheet = new Sheet();
         sheet.resize(_dp.length, colsValues.length);
         
         for ( ; cols < cantCols; cols++)
         {
            sheet.setCell(rows, cols, quitarAcentos(colsValues[cols].header));
         }
         
         cols = 0;
         rows++;
         var cursor:IViewCursor = _dp.createCursor();
         while ( !cursor.afterLast )
         {
            for (cols = 0 ; cols < cantCols; cols++)
            {
               if ( (cursor.current as Object).hasOwnProperty(colsValues[cols].value) )
                  sheet.setCell(rows, cols,(quitarAcentos(String( (cursor.current as Object)[colsValues[cols].value])))=="NULL"?"":quitarAcentos(String( (cursor.current as Object)[colsValues[cols].value])));
            }
            
            rows++;
            cursor.moveNext();
         }
         
         var xls:ExcelFile = new ExcelFile();
         xls.sheets.addItem(sheet);
         var bytes:ByteArray = xls.saveToByteArray();
         
         var fr:FileReference = new FileReference();
         fr.save(bytes, defautlName);
      }
      /**Quita los acentos */
      static private function quitarAcentos(textoConAcentos:String):String {
         var texto1:String = textoConAcentos as String;
         var acentos:Array=new Array("á","é","í","ó","ú");
         var sinAcentos:Array=new Array("a","e","i","o","u");
         function CambiaCaracter(texto:String,letraSplit:String,letraCambio:String):String {
            var letras:Array=texto.split(letraSplit);
            var nuevoTexto:String=new String();
            for (var i:int=0;i < letras.length;i++) {
               nuevoTexto+=letras[i];
               nuevoTexto+=letraCambio;
            }
            nuevoTexto=nuevoTexto.substring(0,nuevoTexto.length-1);
            return nuevoTexto;
         }
         for (var i:int=0; i < acentos.length; i++) {
            texto1 = CambiaCaracter(texto1.toLocaleLowerCase(),acentos[i],sinAcentos[i]);
         }
         return texto1.toUpperCase();
      }
      //-----------------------------
      // Private function
      //-----------------------------
      /**
       * 
       * A partir de un elemento pasado se genera un ICollectionView
       * para su correcto recorrido
       * 
       * @param obj         Objeto a convertir a ICollectionView
       * 
       * 
       * @return referencia a un ICollectionView. 
       * 
       */
      static private function getDataProviderCollection(obj:Object):ICollectionView
      {
         if ( (obj is Number && isNaN(obj as Number)) || (!(obj is Number) && obj == null))
         {
            return null;
         }
         else if ( obj is ICollectionView )
         {
            return obj as ICollectionView;
         }
         else if ( obj is Array )
         {
            return new ArrayCollection(obj as Array);
         }
         else if ( obj is XMLList )
         {
            return new XMLListCollection(obj as XMLList);
         }
         else if ( obj is XML )
         {
            var col:XMLListCollection = new XMLListCollection();
            col.addItem(obj);
            return col;
         }
         else if ( obj is Object )
         {
            return new ArrayCollection([obj]);
         }
         else
         {
            return null;
         }
      }
   }



Gracias.

Por bernardo100108

20 de clabLevel



Genero:Masculino  

chrome
Citar            
MensajeEscrito el 29 Ago 2012 03:44 pm
Al parecer estas usando una biblioteca com.as3xls.xls.ExcelFile, deberías consultarle a ellos si tienen un update para un formato mas nuevo. Igual siempre queda exportar como CSV, que por ser texto plano no tiene problemas de compatibilidad

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 29 Ago 2012 03:54 pm
Gracias jorge por responder, lo hare en cvs y estaré comentando..

Gracias.

Por bernardo100108

20 de clabLevel



Genero:Masculino  

chrome

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.