2013-11-27 3 views
0

У меня есть три продвинутых данных, данные которых мне нужно экспортировать в excel. Я объединил данные сетки в один массив.Flex export arraycollection to csv/excel

Теперь мне нужно экспортировать это arraycollection в формат csv или excel (.xlsx). Я нашел примеры, экспортирующие datagrid в excel/csv. Мне нужно знать, как экспортировать arraycollection в csv.

Просьба помочь.

ответ

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

+0

Благодаря David.Some код, отсутствующие в приведенном выше коде – FlexCoder27