Flex将arraycollection导出到csv / excel

时间:2013-11-27 07:17:03

标签: flex export-to-csv arraycollection

我有三个高级数据网格,我需要将数据导出到excel。我已经将网格数据合并到一个数组集中。

现在我需要将该arraycollection导出为csv或excel格式(.xlsx)。我发现的例子都是将datagrid导出到excel / csv。我需要知道如何将arraycollection导出到csv。

请帮助。

1 个答案:

答案 0 :(得分:0)

由于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