【发布时间】:2026-01-04 18:10:01
【问题描述】:
我有三个高级数据网格,我需要将其数据导出到 Excel。我已将网格的数据合并到一个数组集合中。
现在我需要将该数组集合导出为 csv 或 excel 格式 (.xlsx)。我找到的示例都是将数据网格导出到 excel/csv。我需要知道如何将 arraycollection 导出到 csv。
请帮助。
【问题讨论】:
标签: apache-flex export-to-csv arraycollection
我有三个高级数据网格,我需要将其数据导出到 Excel。我已将网格的数据合并到一个数组集合中。
现在我需要将该数组集合导出为 csv 或 excel 格式 (.xlsx)。我找到的示例都是将数据网格导出到 excel/csv。我需要知道如何将 arraycollection 导出到 csv。
请帮助。
【问题讨论】:
标签: apache-flex export-to-csv arraycollection
由于 CSV 格式很简单,您只需遍历数组元素并将文件创建为字符串。
这是示例代码的一部分
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());
大卫
【讨论】: