免費論壇 繁體 | 簡體
Sclub交友聊天~加入聊天室當版主
分享
怎么可能? 你确定可以读取?
我用上述代码测试会报错

建议将数据制作成xml格式的进行处理
如果铁了心的要用excel,注意,不要用新版的xlsx格式的,而要用旧版的xls格式的
具体如何实现,我帮不了你
您所在的用户组只能看到部分内容.
如查看全部内容, 请先登录或者注册.
点评
B Color Smilies

您还可以输入:个字符
X

X

TOP

本帖最后由 网雨霏霏 于 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文件内的如下信息: 文本、数字、公式
您所在的用户组只能看到部分内容.
如查看全部内容, 请先登录或者注册.
点评
B Color Smilies

您还可以输入:个字符
X

X

TOP

回复 4# bbb7691


    为何在我这里测试的时候 报错?
用excel打开xls文件   文件 另存为
可以保存为xml格式
不过,无用的信息太多。 需要手动删除许多,才可以使用
您所在的用户组只能看到部分内容.
如查看全部内容, 请先登录或者注册.
点评
B Color Smilies

您还可以输入:个字符
X

X

TOP

本帖最后由 网雨霏霏 于 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)
您所在的用户组只能看到部分内容.
如查看全部内容, 请先登录或者注册.
点评
B Color Smilies

您还可以输入:个字符
X

X

TOP

本帖最后由 网雨霏霏 于 2016-6-14 21:46 编辑

回复 9# bbb7691


  1. var namesz: Array = new Array()
  2. var scoresz: Array = new Array()
  3. var geshu: uint
  4. var myXML: XML;
  5. var loader: URLLoader = new URLLoader(new URLRequest("XMLData.xml"));
  6. loader.addEventListener(Event.COMPLETE, completeHandler);
  7. function completeHandler(e: Event) {
  8.         var getLoader: URLLoader = e.target as URLLoader;
  9.         if (getLoader != null) {
  10.                 myXML = new XML(getLoader.data);

  11.                 geshu = myXML.student.length()
  12.                 for (var i: uint; i < geshu; i++) {
  13.                         namesz[i] = myXML.student.name[i]
  14.                         scoresz[i] = myXML.student.score[i]

  15.                 }
  16.                 trace(namesz, scoresz)
  17.         } else {
  18.                 trace("加载失败!");
  19.         }
  20. }



  21. btn.addEventListener(MouseEvent.CLICK, fl_MouseClickHandler);

  22. function fl_MouseClickHandler(event: MouseEvent): void {
  23.         var suoyin: uint = uint(input.text)

  24.         if (suoyin <= geshu) {
  25.                 if (namesz[suoyin - 1] != "") {
  26.                         out1.text = namesz[suoyin - 1]
  27.                         out2.text = scoresz[suoyin - 1]
  28.                 } else {
  29.                         out1.text = "无此人"
  30.                         out2.text = ""
  31.                 }
  32.         } else {
  33.                 out1.text = "无此人"
  34.                 out2.text = ""
  35.         }

  36. }
复制
您所在的用户组只能看到部分内容.
如查看全部内容, 请先登录或者注册.
点评
B Color Smilies

您还可以输入:个字符
X

X

TOP

临时做的fla文件【用flashCC2014 或CS6可打开】



临时做的fla文件【用flashCC2014 或CS6可打开】
您所在的用户组只能看到部分内容.
如查看全部内容, 请先登录或者注册.
附件: 您需要登录才可以下载或查看附件。没有帐号?注册
点评
B Color Smilies

您还可以输入:个字符
X

X

TOP

本帖最后由 网雨霏霏 于 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个没人的,同样想实现输出框显示“无此人”。问题的

=========为了消除背景的影响===============



=========为了消除背景的影响===============


=========为了消除背景的影响===============


=========为了消除背景的影响===============
您所在的用户组只能看到部分内容.
如查看全部内容, 请先登录或者注册.
点评
B Color Smilies

您还可以输入:个字符
X

X

TOP

 

B Color Image Link Quote Code Smilies
高级模式 | 发新话题

您需要登录后才可以回帖 登录|立即注册

快速
返回顶部
返回首页