将数组集合灵活导出到csv/excel



我有三个高级数据网格,我需要将其数据导出到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

最新更新