这个方法仅用了as3xls读取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="initViews(event)" width="1024" height="1000">
<fx:Script>
<![CDATA[
import com.as3xls.xls.ExcelFile;
import com.as3xls.xls.Sheet; import mx.events.FlexEvent; private var _headerArr:Array = [];
private var _dataArr:Array = [];
protected function initViews(event:FlexEvent):void
{
var file:File = new File("E:/AS/Examples/ReadAndSaveExcel/src/样表.xls");
//读取文件
var stream:FileStream = new FileStream();
stream.open(file,FileMode.READ);
var ba:ByteArray = new ByteArray();
stream.readBytes(ba);
stream.close(); var xls:ExcelFile = new ExcelFile();
xls.loadFromByteArray(ba);
trace(xls.sheets.length);
var sheet:Sheet = xls.sheets[1];
var rowLen:int = sheet.rows;
var cloumnLen:int = sheet.cols;
//trace(sheet.getCell(0,0).value,sheet.getCell(0,1).value,sheet.getCell(2,0).value);
trace(rowLen,cloumnLen); for(var i:int = 0;i<cloumnLen;i++){
_headerArr.push(sheet.getCell(0,i).value);
}
for(var j:int = 0;j<_headerArr.length;j++){
var title:TextField = getText(120,20,_headerArr[j]);
title.x = j*120+100;
title.y =0;
container.addChild(title);
} for(j = 1;j<rowLen;j++){
if(sheet.getCell(j,i).value == ""){
//trace("为空");
}else{ }
var obj:Object = {};
for(i = 0;i<_headerArr.length;i++){
if(i == 3){
obj[_headerArr[i]] = Math.floor(Math.random()*2000).toString();
}else{
obj[_headerArr[i]] = sheet.getCell(j,i).value;
}
}
_dataArr.push(obj);
var count:int = 0;
for(var n:int = 0;n<_headerArr.length;n++){
var t:TextField = getText(120,20,obj[_headerArr[n]]);
t.x = 120*count+100;
t.y = 20*j;
count++;
container.addChild(t);
}
}
}
protected function saveBtn_clickHandler(event:MouseEvent):void
{
save(_dataArr,_headerArr,_headerArr);
}
private function save(datas:Array,headerArr:Array,objArr:Array):void
{
var xlsStr:String = "<html><head></head><body><table>";
xlsStr += "<tr>";
for each(var fieldHead:String in headerArr)
{
xlsStr += "<td>" + fieldHead + "</td>";
}
xlsStr += "</tr>";
for each(var item:Object in datas)
{
xlsStr += "<tr>";
for each(var field:String in objArr)
{
xlsStr += "<td>" + item[field] + "</td>";
}
xlsStr += "</tr>";
}
xlsStr += "</table></body></html>"; var bytes:ByteArray = new ByteArray();
//bytes.writeUTFBytes(xlsStr);
bytes.writeMultiByte(xlsStr, "GB2312");
new FileReference().save(bytes, "data.xlsx"); //运用File可以达到同样效果,而且不用弹出保存对话框
/*var file:File = File.desktopDirectory.resolvePath("data.xls");
var fs:FileStream = new FileStream();
fs.open(file, flash.filesystem.FileMode.WRITE);
fs.writeMultiByte(xlsStr,"GB2312");
fs.close();*/
} private function getText(w:Number,h:Number,text:String):TextField
{
var t:TextField = new TextField();
t.width = w;
t.height = h;
//t.autoSize = "center";
t.selectable = false;
t.border = true;
t.text = text;
return t;
}
]]>
</fx:Script>
<fx:Declarations>
<!-- 将非可视元素(例如服务、值对象)放在此处 -->
</fx:Declarations>
<s:Scroller width="900" height="800">
<s:Group width="100%" height="100%">
<mx:UIComponent id="container" width="800" height="100%"/>
</s:Group>
</s:Scroller>
<s:Button id="saveBtn" label="保存" left="910" top="10" click="saveBtn_clickHandler(event)"> </s:Button>
</s:WindowedApplication>

[Flex] as3xls读取excel,修改保存单表(二)的更多相关文章

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

    经过大神修改过的as3xls支持中文,并可以修改保存单一sheet,保存后原有的excel样式均会消失,目前仅能如此. <?xml version="1.0" encodin ...

  2. 读取Excel数据到Table表中

    方法一: try { List<DBUtility.CommandInfo> list = new List<DBUtility.CommandInfo>(); string ...

  3. ABAP 读取EXCEL文件到内表

    1.选择excel文件: PARAMETERS: P_FILE LIKE RLGRAP-FILENAME OBLIGATORY. AT SELECTION-SCREEN ON VALUE-REQUES ...

  4. Sqlserver 读取EXCEL

    1.1 启用本地读取设置 --启用EXEC sp_configure 'show advanced options', 1RECONFIGUREEXEC sp_configure 'Ad Hoc Di ...

  5. sql2008读取excel

    环境:win7(64位)+sql2008 sql语句: --启用Ad Hoc Distributed Queries: reconfigure reconfigure --使用完成后,关闭Ad Hoc ...

  6. C#中Form窗体中读取EXCEL的数据

    使用OLEDB可以对excel文件进行读取,我们只要把该excel文件作为数据源即可 首先引用Microsoft.EXEL 代码如下: using System; using System.Colle ...

  7. php读取excel文件 更新修改excel

    php读取excel文件示例,还有更新修改功能. 代码: //模板存放目录 $dir = $DOCUMENT_ROOT.'/backoffice/admin/oemcheck/'; $template ...

  8. C#读取Excel表中的数据时,为何有些行的字段内容读取不到

    转载:http://bbs.csdn.net/topics/360220285 1.当某列数据中含有混合类型时,在.NET中使用Microsoft.Jet.OLEDB.4.0来读取Excel文件造成数 ...

  9. 【转】Python xlrd、xlwt、xlutils读取、修改Excel文件

    Python xlrd.xlwt.xlutils读取.修改Excel文件 一.xlrd读取excel 这里介绍一个不错的包xlrs,可以工作在任何平台.这也就意味着你可以在Linux下读取Excel文 ...

随机推荐

  1. c语言编程中%g是什么格式

    %g用来输出实数,它根据数值的大小,自动选f格式或e格式(选择输出时占宽度较小的一种),且不输出无意义的0.即%g是根据结果自动选择科学记数法还是一般的小数记数法 printf("%g\n& ...

  2. wikioi 1203 判断浮点数是否相等

    /*======================================================================== 1203 判断浮点数是否相等 题目描述 Descr ...

  3. OpenJudge计算概论-扩号匹配问题【这个用到了栈的思想】

    /*====================================================================== 扩号匹配问题 总时间限制: 1000ms 内存限制: ...

  4. js 动态 activex 组件

    function writeObject(){ var obj = document.getElementById("mydelphi"); if(!obj){ var divob ...

  5. linux 下 nginx 启动服务器 80端口被占用问题

    把80端口占用的程序杀死 sudo fuser -k 80/tcp rm -fr 文件   ----删除文件及文加下的所有文件 echo > filename  ---清空文件的内容

  6. 关于iis站点无法读取 服务器共享目录的问题

    也是权限问题,具体解决方法如下: 1. 找到该站点所在的应用程序池>>高级设置>>进程模型>>设置标志账号,如下图所示 2. 设置账号之后,找到该共享目录>& ...

  7. 【SVN】win7 搭建SVN服务器

    介绍 SVN分为客户端和服务端: 服务端: 常用的主要有2个,分别为: 1. VisualSvn Server:免费,集成了Subsersion和Apache,安装使用非常简单: 2. SubVers ...

  8. php返回状态200或者300的写法

    header("HTTP/1.0 200 OK"); phpinfo(); header("HTTP/1.0 300 OK"); phpinfo();

  9. KindEditor得不到textarea值的解决方法----摘至天涯

    以前有朋友遇到过这个问题,就是KindEditor在火狐下或者其他浏览器下都无法得到textarea文本框的值,点击表单提交按钮得到的是空白.昨天天涯PHP博客[http://blog.phpha.c ...

  10. worker_pool的例子

    鉴于poolboy的坑,pooler不支持r18,又有在知乎上看到大神推荐worker_pool这个进程池框架(工作者进程在创建时崩溃,worker_pool不受影响),所以研究了下,贴个小例子 my ...