我有三个高级数据网格,我需要将其数据导出到excel。我已经将网格的数据合并到一个数组集合中。
现在我需要将数组集合导出为csv或excel格式(.xlsx)。我发现的例子都是将数据网格导出为excel.csv。我需要知道如何将数组集合导出到csv。
请帮忙。
由于CSV格式很简单,您只需迭代数组元素并将文件创建为String。
这是示例代码的一部分
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;
}
}
然后你可以用创建文件
var fr:FileReference = new FileReference();
fr.save(csvUtil.exportToCSVStr(alist.toArray(),getCsvIncludeHeaders()),getFileNameTitle());
Davide