2010년 5월 4일 화요일

flash player 10에서 로컬파일(excel) 읽기

http://github.com/djw/as3xls

 

<?xml version="1.0" encoding="utf-8" ?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml">
 <mx:Script>
  <![CDATA[
   import com.as3xls.xls.ExcelFile;
   import com.as3xls.xls.Sheet;
   import flash.events.Event;
   import flash.net.FileReference;
   import flash.utils.ByteArray;
   import mx.collections.ArrayCollection;
   import mx.controls.Alert;
   
     
   private var fl:FileReference;
   
   private function loadExcel():void
   {
    fl = new FileReference();
    fl.addEventListener(Event.SELECT, function(e:Event):void { FileReference(e.target).load(); } );
    fl.addEventListener(Event.COMPLETE, loadCompleteHandler);
    fl.browse();
   }
   
   private function loadCompleteHandler(e:Event):void
   {
    convert(FileReference(e.target).data)
   }
   
   private function convert(data:ByteArray):void
   {
    try
    {
     var excelFile:ExcelFile = new ExcelFile();
     excelFile.loadFromByteArray(data);
     var sheet:Sheet = excelFile.sheets[0];
     
     grid.dataProvider = sheet.values;
    }
    catch(error:Error)
    {
     Alert.show("Fail to convert excel")
    }
   }
   
   private function saveCSV():void
   {
    var arr:Array = (grid.dataProvider.source as Array);
    var str:String = "";
    for (var i:int = 0; i < arr.length; i++)
    {
     str += arr[i].toString()
     str += "\r\n"
    }
   
    fl = new FileReference();
    fl.save(str, "astro_"+(new Date().getTime())+".csv");
   }
   
   
   
  ]]>
 </mx:Script>
 <mx:Button label="Load Excel File from Local" click="loadExcel()" />
 <mx:DataGrid id="grid" editable="true" width="450" sortableColumns="true" draggableColumns="false" />
 <mx:Button label="Save DataGrid to CSV File" click="saveCSV()" />
</mx:Application>

댓글 없음:

댓글 쓰기