2009-11-02 22 views
8

¿Cómo exporto datos en mi cuadrícula de datos a un archivo Excel en Flex?¿Cómo exportar una cuadrícula de datos a un archivo de Excel en Flex?

¿Alguien puede dar algunos ejemplos para eso? Estoy navegando, pero no pude encontrar un solo ejemplo de ese tipo.

EDITAR

navegado mucho y descubrió cómo convertir los datos a formato csv datagrid. Ahora, ¿cómo convertir eso para sobresalir? ¿Hay alguna manera de hacerlo sin usar ningún script de servidor? ¿No se puede hacer solo en Flex?

+0

¿Cuál es su tecnología del lado del servidor? –

+0

usando java Servlets en eclipse – Angeline

Respuesta

1

Excel lee la tabla HTML como un tipo de hoja de cálculo. Simplemente lea la cuadrícula fila por fila, columna por columna y produzca un conjunto de celdas de tabla HTML y produzca un archivo llamado whatever.xls.

+0

Lo he creado en forma de tablas html. ¿Cómo producir un archivo de Excel? – Angeline

1

Si tiene un back-end de servlet Java, puede usar un servlet para generar el archivo.

Mi único Flex -sólo idea era sacar los datos de CSV a una ventana emergente con un área de texto que el usuario podía copiar y pegar en un archivo.

3

Hay as3xls para usted en write xls file. Solo admite una sola hoja (pero creo que está bien).

Pero creo que usar csv o html como lo indican @susichan y @Rafal Ziolkowski será más simple si no necesitas usar las funciones de Excel (como la fórmula de celda).

Ah, y hay csvlib para escribir csv. Para html, hazlo como escribir XML estará bien.

0

as3xls parece leer bien, pero escribir archivos de Excel es otra historia. No puede escribir libros de hojas múltiples, [la mayoría de las veces] no puede leer sus propios archivos, y cuando Excel puede leer lo que as3xls escupe, tiene que hacer varias copias para sacar toda la basura. Un verdadero fastidio. Estoy trabajando en el uso de NativeProcess de AIR 2.0 para llamar a un script de Python para que haga la escritura y creo que tendré que exportar la cuadrícula de datos/ArrayCollection al CSV primero ... parece un largo camino. No puedo creer que no haya una mejor opción de ActionScript para eliminar con Excel. ¿Es realmente tan raro de una tarea?

1

primera descarga de archivos SWC en el siguiente enlace

Link

Ahora tiene que hacer poco de trabajo sólo tienes que copiar el código y dar nombres de columna apropiada.

public function roExport_export_Result(e:ResultEvent):void 
     { 
      if(e.result.length != 0) 
      { 
       btnExportToExcel.enabled = true; 

       var arrExportResult:Array = e.result as Array; 

       xlsFile = new ExcelFile(); 
       var sheet:Sheet = new Sheet(); 

       sheet.resize(arrExportResult.length+1,14); 

       sheet.setCell(0,0,'Id'); 
       sheet.setCell(0,1,'Full Name'); 
       sheet.setCell(0,2,'Gender'); 
       sheet.setCell(0,3,'Birth Date'); 
       sheet.setCell(0,4,'College Name'); 
       sheet.setCell(0,5,'Qualification'); 
       sheet.setCell(0,6,'Email Id'); 
       sheet.setCell(0,7,'Mobile'); 
       sheet.setCell(0,8,'Position Applied For'); 
       sheet.setCell(0,9,'Technology Interested'); 
       sheet.setCell(0,10,'User Name'); 
       sheet.setCell(0,11,'Password'); 
       sheet.setCell(0,12,'Exam Date'); 
       sheet.setCell(0,13,'Percentage'); 
       sheet.setCell(0,14,'IsActive'); 

       for(var i:int=0;i<arrExportResult.length;i++) 
       { 
        sheet.setCell(i+1, 0, arrExportResult[i].Id); 
        sheet.setCell(i+1, 1, arrExportResult[i].FullName); 
        if(arrExportResult[i].Gender == 1) 
        { 
         arrExportResult[i].Gender = "Male" 
        } 
        else 
        { 
         arrExportResult[i].Gender = "Female"; 
        } 
        sheet.setCell(i+1, 2, arrExportResult[i].Gender); 
        var date:String = arrExportResult[i].BirthDate.date.toString(); 
        var month:String = (arrExportResult[i].BirthDate.month + 1).toString(); 
        var year:String = arrExportResult[i].BirthDate.fullYear.toString(); 
        var bDate:String = date + "/" + month + "/" + year; 
        arrExportResult[i].BirthDate = bDate; 
        sheet.setCell(i+1, 3, arrExportResult[i].BirthDate); 
        sheet.setCell(i+1, 4, arrExportResult[i].CollegeId); 
        sheet.setCell(i+1, 5, arrExportResult[i].QualificationId); 
        sheet.setCell(i+1, 6, arrExportResult[i].EmailId); 
        sheet.setCell(i+1, 7, arrExportResult[i].Mobile); 
        sheet.setCell(i+1, 8, arrExportResult[i].PositionName); 
        sheet.setCell(i+1, 9, arrExportResult[i].TechForTraining); 
        sheet.setCell(i+1, 10, arrExportResult[i].UserName); 
        sheet.setCell(i+1, 11, arrExportResult[i].Password); 
        var date:String = arrExportResult[i].CreatedDate.date.toString(); 
        var month:String = (arrExportResult[i].CreatedDate.month + 1).toString(); 
        var year:String = arrExportResult[i].CreatedDate.fullYear.toString(); 
        var hour:String = arrExportResult[i].CreatedDate.hours.toString(); 
        var min:String = arrExportResult[i].CreatedDate.minutes.toString(); 
        var sec:String = arrExportResult[i].CreatedDate.seconds.toString(); 
        var cDate:String = date + "/" + month + "/" + year + " " + hour + ":" + min + ":" + sec; 
        arrExportResult[i].CreatedDate = cDate; 
        sheet.setCell(i+1, 12, arrExportResult[i].CreatedDate); 
        sheet.setCell(i+1, 13, arrExportResult[i].Percentage); 
        sheet.setCell(i+1, 14, arrExportResult[i].IsActive); 
       } 

       dataGridResult.dataProvider = arrExportResult; 

       xlsFile.sheets.addItem(sheet);  
       bytes = xlsFile.saveToByteArray();     
      } 
      else 
      { 
       arrExportResult = new Array(); 
       dataGridResult.dataProvider = arrExportResult; 
       btnExportToExcel.enabled = false; 
       xlsFile = new ExcelFile(); 
       var sheet:Sheet = new Sheet(); 
       Alert.show("No Records Found",parentApplication.alertTitle); 
      } 
     } 
Cuestiones relacionadas