最近一直被flex的dg保存到xls文件困扰,今天终于解决了。
首先看一下代码:
/* 输出xls新方法
=========================================
=========================================
*/
import mx.controls.dataGridClasses.DataGridColumn;
import com.as3xls.xls.Cell;
import mx.collections.ArrayCollection;
import com.as3xls.xls.Sheet;
import com.as3xls.xls.ExcelFile;
private var fileReference:FileReference;
private var xls:Class;
private var sheet:Sheet;
[Bindable]
private var fields:Array = new Array();
private function fileReference_Cancel(event:Event):void
{
fileReference = null;
}
private function exportToExcel():void
{
sheet = new Sheet();
var dataProviderCollection:ArrayCollection =netInspectLog;
var rowCount:int = dataProviderCollection.length;
sheet.resize(rowCount + 1,netInspectlogDataGrid.columnCount);
var columns:Array = netInspectlogDataGrid.columns;
var i:int = 0;
for each (var field:DataGridColumn in columns){
fields.push(field.dataField.toString());/* .toString() */
sheet.setCell(0,i,field.dataField.toString());
i++;
}
for(var r:int=0; r < rowCount; r++)
{
var record:Object = dataProviderCollection.getItemAt(r);
/*insert record starting from row no 2 else
headers will be overwritten*/
insertRecordInSheet(r+1,sheet,record);
}
var xls:ExcelFile = new ExcelFile();
xls.sheets.addItem(sheet);
var bytes: ByteArray = xls.saveToByteArray();
var fr:FileReference = new FileReference();
fr.save(bytes,"SampleExport.xls");
}
private function insertRecordInSheet(row:int,shet:Sheet,recod:Object):void
{
var colCount:int = netInspectlogDataGrid.columnCount;
for(var c:int=0; c < colCount; c++)
{
var i:int = 0;
for each(var field:String in fields){
for each (var value:String in recod){
if (recod[field]==null)
recod[field]="";
if (recod[field].toString() == value)
shet.setCell(row,i,value);
}
i++;
}
}
}
注意的是:一定要把as3xls-1.0.1.swc包导入。它可以用来建立xls文件,并写入信息。as3xls-1.0.swc也可以实现建立xls文件,并写入信息,但是它输出的中文是乱码的,而as3xls-1.0.1.swc可以处理中文乱码。这样就可以实现了dg->xls并且无乱码转存了。
这篇博客介绍了如何在Flex中解决datagrid导出到Excel时的中文乱码问题。作者通过引入as3xls库的1.0.1版本,创建并填充Sheet对象,然后保存为Excel文件,成功实现了带有中文数据的datagrid无乱码导出。

144

被折叠的 条评论
为什么被折叠?



