Flash player 10 写本地文件导出CSV
必须将编译器版本设为10.0.0以上,设置如下
FlexBuilder:
Flex项目- 右键 - Properties -flex compiler - required flash player version
Flex类库项目- 右键 - Properties - flex library compiler - additional compiler aguments: --target-player=10.0.0
命令行:
mxmlc -target-player 10.0.0
compc -target-player 10.0.0
---
private var fr:FileReference;//called when the user clicks the load file buttonprivate function saveFile(data:Object, fileName:String):void {//create the FileReference instancefr=new FileReference();//listen for the file has been savedfr.addEventListener(Event.COMPLETE, onFileSave);//listen for when then cancel out of the save dialogfr.addEventListener(Event.CANCEL,onCancel);//listen for any errors that occur while writing the filefr.addEventListener(IOErrorEvent.IO_ERROR, onSaveError);//open a native save file dialog, using the default file namefr.save(data, fileName)}/***** File Save Event Handlers ******///called once the file has been savedprivate function onFileSave(e:Event):void {trace("File Saved");}private function onCancel(e:Event):void {trace("File save select canceled.");fr=null;}private function onSaveError(e:IOErrorEvent):void {trace("Error Saving File : " + e.text);fr=null;}private function export():void {var csv:CSV=new CSV();csv.embededHeader=false csv.header=['label 1', 'label 2', '姓名', 'label 4'] csv.addRecordSet( ['1','b','c','k'] ) csv.addRecordSet( ['0','b','g','d'], -1 ) csv.encode()trace( 'Is string: ' + (csv.data is String) + '\r' + csv.data );var g:String=csv.data + ""; //解决中文问题var b:ByteArray=new ByteArray();b.writeMultiByte(g, "GBK");trace("length = " + b.length);trace("bytesAvailable = " + b.bytesAvailable);trace("position = " + b.position);b.position=0;saveFile(b, "Export.csv");}
封装了一个工具类
package com.nsn.utils {import flash.events.Event;import flash.events.IOErrorEvent;import flash.net.FileReference;public class FileUtils {public function FileUtils() {}private var fr:FileReference;//保存成功回调函数private var onDoneCallback:Function;//IOError 回调函数private var onErrorCallback:Function;//取消保存回调函数private var onCancelCallback:Function;/** * 保存文件 * @param data 要保存的数据 * @param fileName 文件名称 * @param onDone 保存成功回调函数 * @param onError IOError 回调函数 * @param onCancel 取消保存回调函数 * * 示例: * <code> * FileUtils.save(...); * </code> */public static function save(data:Object, fileName:String, onDone:Function=null, onError:Function=null, onCancel:Function=null):void {new FileUtils().saveFile(data, fileName, onDone, onError, onCancel);}//called when the user clicks the load file buttonpublic function saveFile(data:Object, fileName:String, onDone:Function=null, onError:Function=null, onCancel:Function=null):void {onDoneCallback = onDone;onErrorCallback = onError;onCancelCallback = onCancel;//create the FileReference instancefr=new FileReference();//listen for the file has been savedfr.addEventListener(Event.COMPLETE, onFileSave);//listen for when then cancel out of the save dialogfr.addEventListener(Event.CANCEL,onCancel);//listen for any errors that occur while writing the filefr.addEventListener(IOErrorEvent.IO_ERROR, onSaveError);//open a native save file dialog, using the default file namefr.save(data, fileName)}/***** File Save Event Handlers ******///called once the file has been savedprivate function onFileSave(e:Event):void {trace("File Saved");fr=null;if(onDoneCallback != null){onDoneCallback(e);}onDoneCallback = null;}//called if the user cancels out of the file save dialogprivate function onCancel(e:Event):void {trace("File save select canceled.");fr=null;if(onCancelCallback != null){onCancelCallback(e);}onCancelCallback = null;}//called if an error occurs while saving the fileprivate function onSaveError(e:IOErrorEvent):void {trace("Error Saving File : " + e.text);fr=null;if(onErrorCallback != null){onErrorCallback(e);}onErrorCallback = null;}}}