Colección de matrices de exportación flexible a csv/excel
Frecuentes
Visto 2,232 veces
0
Tengo tres cuadrículas de datos avanzadas cuyos datos necesito exportar para sobresalir. He fusionado los datos de la cuadrícula en una sola colección de matrices.
Ahora necesito exportar esa colección de matrices a formato csv o excel (.xlsx). Los ejemplos que encontré son todos exportando datagrid a excel/csv. Necesito saber cómo exportar arraycollection a csv.
Amablemente ayuda.
1 Respuestas
0
Dado que el formato CSV es simple, puede simplemente iterar sobre los elementos de la matriz y crear el archivo como String.
Esto es parte de un código de ejemplo.
public function exportToCSVStr(data:Array,headersList:Array=null,headerExclude:Array=null):String{
var result:String = "";
for each(var line:String in this.exportToCSV(data,headersList,headerExclude)){
result+=line;
}
return result;
}
public function exportToCSV(data:Array,headersList:Array,headerExclude:Array):Array{
if(headerExclude==null)headerExclude=[];
var hedersToExclude:ArrayCollection = new ArrayCollection(headerExclude);
var result:ArrayList = new ArrayList();
var headers:String = "";
var hList:ArrayList = new ArrayList();
var i:int=0;
if(headersList==null){
for(var h1:String in data[0]){
if(hedersToExclude.contains(h1))
continue;
if(i!=0){
headers+=",";
}
headers+=h1;
hList.addItem(h1);
i++;
}
}else{
for each(var h2:* in headersList){
if(i!=0){
headers+=",";
}
headers+=h2["label"];
hList.addItem(h2["attr"]);
i++;
}
}
headers+=newLineDelim;
result.addItem(headers);
for each(var item:* in data){
var itemStr:String="";
i=0;
for each(var attr:String in hList.toArray()){
if(i!=0){
itemStr+=",";
}
itemStr+=toCSVString(item[attr]);
i++;
}
itemStr+=newLineDelim;
result.addItem(itemStr);
}
return result.toArray();
}
protected function toCSVString(data:*):String{
if(data==null)
return "";
if(data is Date){
return strDelim + dateFormatter.format(data) + strDelim;
} else if(data is String){
return strDelim + data + strDelim;
} else if(data is Number) {
return numberFormatter.format(data);
}else {
return data;
}
}
Y luego puedes crear el archivo con
var fr:FileReference = new FileReference();
fr.save(csvUtil.exportToCSVStr(alist.toArray(),getCsvIncludeHeaders()),getFileNameTitle());
David
respondido 27 nov., 13:08
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas apache-flex export-to-csv arraycollection or haz tu propia pregunta.