Export Datagrid to CVS/Excel

Althought we can export datagrid to Excel sheet using as3xls library, but if
datagrid column length is more then 256 character then it will get truncate.
so I deside to export in cvs formate.I have created custom AS class, to export
datagrid you have to create object of that class by passing datagrid id and
dataprovider as a contructor argument.and call createCSV()method.

package
{
import com.as3xls.xls.ExcelFile;
import com.as3xls.xls.Sheet;

import flash.events.*;
import flash.net.*;
import flash.utils.*;

import mx.collections.ArrayCollection;
import mx.controls.Alert;
import mx.controls.DataGrid;
import mx.controls.dataGridClasses.DataGridColumn;

public class ExportToExcelorCVS
{
private var _grid:DataGrid;
private var _dataProvider:ArrayCollection;

public function ExportToExcelorCVS(grid_:DataGrid, dataProvider_:ArrayCollection)
{
_grid = grid_;
_dataProvider = dataProvider_;
}


protected function handleIOError(event:Event):void {
Alert.show("Cannot write to file.please make sure the file is closed", "Export Error");
}

public function createCSV(filename_:String = "export.csv"):void
{
var finalCSVString:String = "";
var csvLine:String = "";
var column:DataGridColumn;
var cellString:String = "";
var isCellExist:Boolean = false;
for each (column in _grid.columns) {
if (column.visible) {
cellString = column.headerText;
csvLine += (csvLine == "" ? "" : ",") + "\"" + cellString + "\"";
}
}
finalCSVString += (finalCSVString == "" ? "" : "\n") + csvLine;

for each(var rowItem:Object in _dataProvider)
{
csvLine = "";

for each (column in _grid.columns)
{
isCellExist = false;
if(column.visible)
{
if(column.dataField && rowItem.hasOwnProperty(column.dataField) && rowItem[column.dataField] != null)
{
cellString = rowItem[column.dataField];
isCellExist = true;

}
// add cell to row line
if(isCellExist){
csvLine += (csvLine == "" ? "" : ",") + "\"" + cellString + "\"";
}
}
}
finalCSVString += (finalCSVString == "" ? "" : "\n") + csvLine;
}

var csvBytes:ByteArray = new ByteArray();
csvBytes.writeUTFBytes(finalCSVString);

var csvFile:FileReference = new FileReference();
csvFile.addEventListener(IOErrorEvent.IO_ERROR, handleIOError);
csvFile.save(csvBytes,filename_);
}

}
}

Neeraj