【求助高手】怎样读取excel数据? 百度了一下,下面这个读取的是字符,我想读数值,可以运算的~~ var excelXml:XML; var loader=new URLLoader(); loader.addEventListener(Event.COMPLETE,loadComplete); loader.load(newURLRequest("data.xls")); function loadComplete(e:Event):void { excelXml=new XML(e.target.data); readData(excelXml); } function readData(xml:XML) { var ns=xml.namespace(); var rows=xml..ns::Row; for each (var r in rows) { var cellData=r.ns::Cell.ns::Data.text(); var str:String = ""; for each (var d in cellData) { str+=d+","; } trace(str); } } 貌似读取数值要xml,举例子: 我excel表是酱紫的:
A B C D 1 姓名 性别 学号 成绩 2 小米 男 1 100 3 小猴 女 2 80
如何用as3 读取到呢?(成绩那是要数值哦)要转换xml么? 谢谢~~~~~
最近访问本帖者列表: | |||||||||||||||||||||||||||||||
佛山乌蝇脚
|
|||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||
本帖最后由 网雨霏霏 于 2016-6-8 12:57 编辑
从这里找到一个源码: http://code.google.com/p/as3xls/ 注意:因为谷歌被大陆封印,上述网址需要翻墙才可浏览 如果你无法访问,下载下面的文件【我从上面网址内下载的文件】: http://pan.baidu.com/s/1nvITDhR 【提取码: p4cr】 内含swc文件 以及纯英文的帮助文件 看得我云里雾里的 貌似也没有例子【我是没找到】 你下载研究研究看看吧 下面的是上述网址的作者的简述: Introduction Some time ago I was working on a little project for which I wanted to read and write Excel files in Flex. I Googled hither and yon but sadly I could only find a sample someone tossed out there sans code. So, I put together a little package to read and write Excel files. So far it supports reading text, numbers, formulas, and dates from Excel version 2.x-2003 and writing text, numbers, and dates. Formulas also update to reflect changes in cells they reference. The API is intended to be straightforward and easy to use. There are some samples to play with and the obligatory ASdocs 简而言之: 【1】本类库是为flex【现已更名为flashBuilder,也是创建swf文件的利器。但是纯代码的,与flashIDE差别甚大】开发的。 flashIDE应该也可以用,具体如何操作我就不晓得了 【2】本类库仅支持2003及更加古老的版本的excel创建的xls文件 【3】本类库可以读取xls文件内的如下信息: 文本、数字、公式 | |
佛山乌蝇脚
|
|
回复 5# 网雨霏霏
XMLData.xml文件是酱紫的:<student> <name>Thyme</name> <age>18</age> <score> <English>94</English> <Physics>86</Physics> <Chemistry>99</Chemistry> </score> <grade>B</grade> </student> as3是酱紫的: var myXML:XML; var loader:URLLoader = new URLLoader(new URLRequest("XMLData.xml")); loader.addEventListener(Event.COMPLETE,completeHandler); function completeHandler(e:Event) { var getLoader:URLLoader = e.target as URLLoader; if (getLoader!=null) { myXML = new XML(getLoader.data); trace(myXML.child(0)); trace(myXML.child(2).child(1)); trace(myXML.child(2).child(1)+1); } else { trace("加载失败!"); } } 输出是 Thyme 86 861 读取的只是字符,不是数值。如何读取数值? | |
佛山乌蝇脚
|
|
本帖最后由 网雨霏霏 于 2016-6-12 16:21 编辑
回复 6# bbb7691 AS3可以直接读取xml数据 不用child 然后,你如果确定是String类型的,可以用神马强制转换为数字类型 神马有三种情况: 如果,确保数字是正整数,神马就是uint 如果,数字是整数,但可能有负值,神马就是int 如果,数字会出现小数,神马就是Number 具体代码如下: var wuli:uint//这是新增的一个uint数据类型 var myXML:XML; var loader:URLLoader = new URLLoader(new URLRequest("XMLData.xml")); loader.addEventListener(Event.COMPLETE,completeHandler); function completeHandler(e:Event) { var getLoader:URLLoader = e.target as URLLoader; if (getLoader!=null) { myXML = new XML(getLoader.data); trace(myXML.name); wuli=myXML.score.Physics//这里相当于进行了强制转换,不过是隐式的 //wuli=uint(myXML.score.Physics)这是显式的强转 trace(wuli,wuli+1); } else { trace("加载失败!"); } } 另外,你这个xml文件只有一个<student>的节点,也就是只有一个人。但其实正常情况下应该有多个人吧。 <student>在这里充当了根节点【每一个xml文件都必须 有且只有一个根节点】 所以,你的xml文件的结构需要改一改。形如下面酱紫: <学生数据> <student> <name>Thyme</name> <age>18</age> <score> <English>94</English> <Physics>86</Physics> <Chemistry>99</Chemistry> </score> <grade>B</grade> </student> <!-- 与上面一样的写法,书写第二个student节点--> <!-- 与上面一样的写法,书写第三个student节点--> <!-- ........--> </学生数据> 那么,调用的时候,要获取第一个人的英语成绩: uint(myXML.student[0].score.English) | |
佛山乌蝇脚
|
|
回复 7# 网雨霏霏
高手,我问题又来了。我xml是酱紫的: <cl> <student> <name>A</name> <score>100</score> </student> <student> <name>B</name> <score>50</score> </student> <student> <name></name> <score></score> </student> <student> <name>D</name> <score>80</score> </student> </cl> flash中有三个文本框Input out1 out2 现在我已经能实现在Input中输入数字(作为学号吧),就能在另两个框中显示相应的name和score。 sname = String(mData.student[num - 1].name); sscore = int(mData.student[num - 1].score); //num是学号 问题出现了:1、我只有4个人的名单,如果我输入的数字不是1-4,咋办?如:0、5、6……,如何实现当输入这些数字的时候输出框显示“无此人”?baidu了一下,有个方法是在xml中加上 <student amount="4">,但这个方法好像很麻烦,有其他方法么? 2、xml中第3个没人的,同样想实现输出框显示“无此人”。 | |
佛山乌蝇脚
|
|
本帖最后由 网雨霏霏 于 2016-6-14 21:46 编辑
回复 9# bbb7691
| |
佛山乌蝇脚
|
|
本帖最后由 网雨霏霏 于 2016-6-15 15:30 编辑
回复 12# bbb7691 这几天比较忙 那个回复是昨晚发的 然后,昨晚的网络特别卡 只简单的给出了代码,也没有给注释 这里简要的一说 【1】这个代码无需在xml文件内专门书写节点的个数【调用length()方法可以动态的获取(代码12行,注意,这是一个方法,要在length后面带上小括号)】,前提是,你的xml文件的格式必须非常的规范【你写的就是很标准、很规范的】 因为后续编程时要用到这个个数,所以,必须先定义一个“全局变量”【代码第3行的geshu】,然后在12行那里将数字赋值给这个geshu 【2】由于数据有多个,用数组来存储是比较考靠谱的 所以,代码的1、2这两行定义了两个数组:第一行定义的数组存储的是名字【14行代码使用了for循环进行了赋值,如此这个namesz数组内就包含了所有的名字】 第二行定义的数组存储的是分数【15行代码使用了for循环进行了赋值,如此这个scoresz数组内就包含了所有的分数】 又因为需要在按钮的代码中调用这些数据,所以这两个数组必须定义成“全局变量” 那么,我定义了三个全局变量,放到了代码的最顶部【说是全局,我认为不是很贴切,但大家都这样叫,我就随大流了。这里的全局指的是放在所有的函数体外部进行定义,而且是放在代码的最顶部定义的变量。这样一来,所有的函数体内部都可以直接调用】 【3】26行往后的代码都是按钮上的代码【按钮的实例名我设为btn】 其中:29行 新增了一个名为suoyin的数字类型变量,用于存储用户输入的数字【这个就是局部变量了,只能在按钮的相应函数内部有效,在该函数外部进行访问都是无效的】 31行和39行 是同一个判断 如果用户输入的数字是在真实的范围内 执行32到38行内容 ,如果不在真实范围内,执行39到42行的内容 32行的判断分支35行 是用于解决你的 xml中第3个没人的,同样想实现输出框显示“无此人”。问题的 =========为了消除背景的影响=============== =========为了消除背景的影响=============== =========为了消除背景的影响=============== =========为了消除背景的影响=============== | |
佛山乌蝇脚
|
|