[Flex] as3xls读取excel,修改保存单表(二)
这个方法仅用了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,修改保存单表(二)的更多相关文章
- [Flex] as3xls读取excel,修改保存单表(一)
经过大神修改过的as3xls支持中文,并可以修改保存单一sheet,保存后原有的excel样式均会消失,目前仅能如此. <?xml version="1.0" encodin ...
- 读取Excel数据到Table表中
方法一: try { List<DBUtility.CommandInfo> list = new List<DBUtility.CommandInfo>(); string ...
- ABAP 读取EXCEL文件到内表
1.选择excel文件: PARAMETERS: P_FILE LIKE RLGRAP-FILENAME OBLIGATORY. AT SELECTION-SCREEN ON VALUE-REQUES ...
- Sqlserver 读取EXCEL
1.1 启用本地读取设置 --启用EXEC sp_configure 'show advanced options', 1RECONFIGUREEXEC sp_configure 'Ad Hoc Di ...
- sql2008读取excel
环境:win7(64位)+sql2008 sql语句: --启用Ad Hoc Distributed Queries: reconfigure reconfigure --使用完成后,关闭Ad Hoc ...
- C#中Form窗体中读取EXCEL的数据
使用OLEDB可以对excel文件进行读取,我们只要把该excel文件作为数据源即可 首先引用Microsoft.EXEL 代码如下: using System; using System.Colle ...
- php读取excel文件 更新修改excel
php读取excel文件示例,还有更新修改功能. 代码: //模板存放目录 $dir = $DOCUMENT_ROOT.'/backoffice/admin/oemcheck/'; $template ...
- C#读取Excel表中的数据时,为何有些行的字段内容读取不到
转载:http://bbs.csdn.net/topics/360220285 1.当某列数据中含有混合类型时,在.NET中使用Microsoft.Jet.OLEDB.4.0来读取Excel文件造成数 ...
- 【转】Python xlrd、xlwt、xlutils读取、修改Excel文件
Python xlrd.xlwt.xlutils读取.修改Excel文件 一.xlrd读取excel 这里介绍一个不错的包xlrs,可以工作在任何平台.这也就意味着你可以在Linux下读取Excel文 ...
随机推荐
- EntityValidationErrors
关于如何查看 EntityValidationErrors 详细信息的解决方法 我们在 EF 的编程中,有时候会遇到这样一个错误: 但是,按照他的提示 "See 'EntityValidat ...
- media type与media query
media type(媒体类型)是css 2中的一个非常有用的属性,通过media type我们可以对不同的设备指定特定的样式,从而实现更丰富的界面.media query(媒体查询)是对media ...
- JSP 相关试题(三)
判断题 1.动态网页和静态网页的根本区别在于服务器端返回的HTML文件是事先存储好的还是由动态网页程序生成的(对 ) 2.Web开发技术包括客户端和服务器端的技术.(对 ) 3.Tomcat和JDK都 ...
- .net framework4与其client profile版本的区别
简而言之,client profile版本是完整版本的一个子集.包含大多数最常用的功能并减小了体积,以便更容易的安装和发布,同时还有微软所声称的一些好处,比如因为减少了某些库,所以使其更加安全等等. ...
- 认识js函数对象(Function Object)
认识函数对象(Function Object) 可以用function关键字定义一个函数,对于每个函数可以为其指定一个函数名,通过函 数名来进行调用.这些都是代码给用户的印象,而在JavaScript ...
- 【linux】日志管理
1.日志文件内容的一般格式 (1)事件发生的日期与时间: (2)发生此事件的主机名: (3)启动此事件的服务名称或函数名称: (4)该信息的实际数据内容. 例如:Mar 14 15:38:00 www ...
- 【shell】 for循环
#!/bin/bash for i in 1,3,4,6 ##有几个数就循环几次 do echo $i done for m in $( cat /root/num.log) ## /root/num ...
- FDATool使用
1. 幅值有两种单位可选,linear和db.切换单位时Toolbox的图例会跟着变化,可以看出两种单位下参数含义不太一样. 线性坐标:例如设置为0.01/0.01,表示通带幅度0.99~1.01,阻 ...
- webstorm 10 设置文件的默认编码
我在使用webstorm时,发现文件的默认编码是GBK 然后我找到了点击此处可以修改这个文件的编码,但是以后新建文件和项目默认生成的文件还是GBK, 设置项目文件的默认编码可以在 File----Se ...
- encodeURIComponent编码后java后台的解码 (AJAX中文解决方案)
encodeURIComponent编码后java后台的解码 (AJAX中文解决方案) 同学的毕业设计出现JavaScript用encodeURIComponentt编码后无法再后台解码的问题. 原来 ...