初始时想使用as3xls(http://code.google.com/p/as3xls/)直接导出Excel xls文件 ,
但是此xls文件在Office 2010尝试打开出现文件损坏的提示, 无法浏览。
因此打算直接导出csv文件。
//
导出csv
public static function exportToCSV(dataGrid:DataGrid):void{
var dataProviderCollection:ArrayCollection = dataGrid.dataProvider as ArrayCollection;
var rowCount:int = dataProviderCollection.length;
var ExcelStr:Array = []; // 保存表格所有行
var columnsFiledText:Array = new Array(); // 列标题
var columnsFiledName:Array = new Array(); // 列数据字段
for each( var column:DataGridColumn in dataGrid.columns){
// 保存Datagrid列标题
columnsFiledText.push(column.headerText.toString());
// 保存DataGrid列数据字段名
columnsFiledName.push(column.dataField.toString());
}
// 保存标题行
ExcelStr.push(columnsFiledText.join(",").toString());
for( var r:int = 0;r<rowCount;r++){
var rowData: Object = dataProviderCollection.getItemAt(r);
var csvRow:Array =new Array(); // 定义一行数据
for each( var col: String in columnsFiledName){
trace(rowData[col]);
csvRow.push(rowData[col]); // 保存每一行的单元格数据
}
// 保存一行数据
ExcelStr.push(csvRow.join(",").toString());
}
var bytes:ByteArray = new ByteArray();
var fileReference:FileReference = new FileReference();
bytes.writeMultiByte(ExcelStr.join("\r\n"),"gb2312");
fileReference.save(bytes,"test.csv");
}
public static function exportToCSV(dataGrid:DataGrid):void{
var dataProviderCollection:ArrayCollection = dataGrid.dataProvider as ArrayCollection;
var rowCount:int = dataProviderCollection.length;
var ExcelStr:Array = []; // 保存表格所有行
var columnsFiledText:Array = new Array(); // 列标题
var columnsFiledName:Array = new Array(); // 列数据字段
for each( var column:DataGridColumn in dataGrid.columns){
// 保存Datagrid列标题
columnsFiledText.push(column.headerText.toString());
// 保存DataGrid列数据字段名
columnsFiledName.push(column.dataField.toString());
}
// 保存标题行
ExcelStr.push(columnsFiledText.join(",").toString());
for( var r:int = 0;r<rowCount;r++){
var rowData: Object = dataProviderCollection.getItemAt(r);
var csvRow:Array =new Array(); // 定义一行数据
for each( var col: String in columnsFiledName){
trace(rowData[col]);
csvRow.push(rowData[col]); // 保存每一行的单元格数据
}
// 保存一行数据
ExcelStr.push(csvRow.join(",").toString());
}
var bytes:ByteArray = new ByteArray();
var fileReference:FileReference = new FileReference();
bytes.writeMultiByte(ExcelStr.join("\r\n"),"gb2312");
fileReference.save(bytes,"test.csv");
}