[Flex] as3xls读取excel,修改保存单表(一)

经过大神修改过的as3xls支持中文,并可以修改保存单一sheet,保存后原有的excel样式均会消失,目前仅能如此。

<?xml version="1.0" encoding="utf-8"?>
<s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009" 
                       xmlns:s="library://ns.adobe.com/flex/spark" 
                       xmlns:mx="library://ns.adobe.com/flex/mx"
                       creationComplete="windowedapplication1_creationCompleteHandler(event)">
    <fx:Script>
        <![CDATA[
            import com.as3xls.xls.ExcelFile;
            import com.as3xls.xls.Sheet;
            
            import mx.events.FlexEvent;
            
            private var _mbytes:ByteArray;
            private var _excelFile:ExcelFile;
            private var _sheet:Sheet;
            private var _xls:ExcelFile;
            protected function windowedapplication1_creationCompleteHandler(event:FlexEvent):void
            {
                var file:File = new File("E:/AS/Examples/ReadExcel/src/样表.xls");
                //读取文件
                var stream:FileStream = new FileStream();
                stream.open(file,FileMode.READ);
                var ba:ByteArray = new ByteArray();
                stream.readBytes(ba);
                stream.close();
                
                _xls = new ExcelFile();
                _xls.loadFromByteArray(ba);
                var sheet:Sheet = _xls.sheets[1];
                var rows:int = sheet.rows;
                trace(rows);
                trace(sheet.getCell(0,0));
                //修改表值
                for(var i:int = 1;i<rows;i++){
                    sheet.setCell(i,3,Math.floor(Math.random()*2000).toString());
                }
            }
            private function saveData():void
            {
                //写文件
                _mbytes = _xls.saveToByteArray(1,"GB2312");//目前只能保存单个sheet数据
                var file:File = File.desktopDirectory.resolvePath("data.xls");
                var fs:FileStream = new FileStream();
                fs.open(file, flash.filesystem.FileMode.WRITE);
                fs.writeBytes(_mbytes);
                fs.close();
            }
            
            protected function saveBtn_clickHandler(event:MouseEvent):void
            {
                saveData();
            }
            
        ]]>
    </fx:Script>
    <fx:Declarations>
        <!-- 将非可视元素(例如服务、值对象)放在此处 -->
    </fx:Declarations>
    <s:Button id="saveBtn" label="保存" left="10" top="10" click="saveBtn_clickHandler(event)">
        
    </s:Button>
</s:WindowedApplication>

 

posted on 2015-11-10 11:23  晏过留痕  阅读(1055)  评论(0编辑  收藏  举报