找回密码
 加入
搜索
查看: 12840|回复: 26

[AU3基础] [已解决]求保存Excel数据到二维数组,请大大们看看,小弟初次接触

 火.. [复制链接]
发表于 2011-5-24 17:14:36 | 显示全部楼层 |阅读模式
本帖最后由 hetinghtht 于 2011-6-7 10:09 编辑

现有一个excel表格,我想读取这个表格中的所有信息到一个二维数组中,
我想得到效果是,维数决定行数,字段用下标来表示,求大大们给个方法,我一直搜索没找到,还有希望不要读取excel信息时弹出excel的窗口,谢谢,附近中是表格范例

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2011-5-24 17:42:24 | 显示全部楼层
#include <array.au3>

$Workbook=objget(@ScriptDir&"\学生成绩表.xls")
with $workbook.worksheets("Sheet1")
        $a_Arr=.range("a1").currentregion.value
        .parent.close(false)
EndWith
_ArrayDisplay($a_Arr)

评分

参与人数 1金钱 +10 收起 理由
tryhi + 10

查看全部评分

 楼主| 发表于 2011-5-24 18:18:32 | 显示全部楼层
回复 2# kevinch
请问$a_Arr如何写入到数组中?
我只看到数组列出来了,可是我不知道怎么去保存他们到我的二维数组中去.请教了
发表于 2011-5-24 18:27:39 | 显示全部楼层
$a_Arr得到的就是一个二维数组,直接用就行了
发表于 2011-5-24 23:18:20 | 显示全部楼层
回复  kevinch
请问$a_Arr如何写入到数组中?
我只看到数组列出来了,可是我不知道怎么去保存他们到我的二 ...
hetinghtht 发表于 2011-5-24 18:18


如何写到数组,看这个回复好像你还不知道什么是数组
 楼主| 发表于 2011-5-25 09:39:58 | 显示全部楼层
回复 5# tryhi
确实不会怎么用,初学者啊,还请高手请教下
如果说我要输出表格里面的每个学生总成绩和每个学生平均成绩,那么怎么去应用这个数组呢?

还有的话请教个变量定义的问题,一般有数字的变量怎么来定义名称好呢?
比如说:列出数学、物理、化学总分>180分的学生,列出三科成绩
我的定义好长啊$strMathPhyChemLessthanOneHundredEightyOfThreeSubject
如何去缩写而且又能让别人看懂意思呢?
 楼主| 发表于 2011-5-25 09:41:05 | 显示全部楼层
回复 4# kevinch
谢谢啊,再请教个问题.我对数组确实概念比较模糊,特别是二维数组.
如果说我要输出表格里面的每个学生总成绩和每个学生平均成绩,那么怎么去应用这个数组呢?
发表于 2011-5-25 09:45:16 | 显示全部楼层
学习了   2楼的 不错
发表于 2011-5-25 10:41:18 | 显示全部楼层
回复  kevinch
谢谢啊,再请教个问题.我对数组确实概念比较模糊,特别是二维数组.
如果说我要输出表格里面 ...
hetinghtht 发表于 2011-5-25 09:41

excel直接就可以解决啦,如果你一定要用au3的话,可以继续调用excel的公式计算,或者直接用循环从数组中计算得出结果,晚上有空给个实例你看下。
 楼主| 发表于 2011-5-25 15:55:11 | 显示全部楼层
回复 9# kevinch
嗯  谢谢
发表于 2011-5-25 19:21:14 | 显示全部楼层
#include <array.au3>

$Workbook=objget(@ScriptDir&"\学生成绩表.xls")
with $Workbook.worksheets("Sheet1")
        $a_Arr=.range("a1").currentregion.value
        .parent.close(false)
EndWith
ReDim $a_Arr[UBound($a_Arr)+2][UBound($a_Arr,2)]
$a_Arr[UBound($a_Arr)-2][0]="平均分"
$a_Arr[UBound($a_Arr)-1][0]="总分"
;_ArrayDisplay($a_Arr)
for $i_Col=1 to UBound($a_Arr,2)-1
        $i_N=0
        $i_Count=0
        For $i_Row=2 to ubound($a_Arr)-3
                $i_N+=1
                $i_Count+=$a_Arr[$i_Row][$i_Col]
        Next
        $a_Arr[ubound($a_Arr)-2][$i_Col]=StringFormat("%.1f",$i_Count/$i_N)
        $a_Arr[ubound($a_Arr)-1][$i_Col]=$i_Count
Next
_ArrayDisplay($a_Arr)
读取到数组后处理的
发表于 2011-5-25 19:21:43 | 显示全部楼层
#include <array.au3>

$o_Excel=ObjCreate("excel.application")
$o_Excel.visible=False
$Workbook=$o_Excel.workbooks.open(@ScriptDir&"\学生成绩表.xls")
with $Workbook.worksheets("Sheet1").cells(1,$Workbook.worksheets("Sheet1").columns.count).end(1)
        .offset(0,1)="平均分"
        .offset(1,1).resize(.parent.cells(.parent.rows.count,1).end(3).row-1,1).formular1c1="=Text(SUM(RC3:RC"&.column&")/COUNT(RC3:RC"&.column&"),""0.0"")"
        .offset(0,2)="总分"
        .offset(1,2).resize(.parent.cells(.parent.rows.count,1).end(3).row-1,1).formular1c1="=SUM(RC3:RC"&.column&")"
    $a_Arr=.parent.range("a1").currentregion.value
EndWith
$Workbook.close(False)
$o_Excel.quit
_ArrayDisplay($a_Arr)
利用Excel处理完成后再读入数组的
发表于 2011-5-25 20:27:54 | 显示全部楼层
学习了,很不错的方法
 楼主| 发表于 2011-5-26 15:56:20 | 显示全部楼层
回复 12# kevinch
谢谢兄弟
发表于 2011-5-26 17:06:53 | 显示全部楼层
记得将帖子加上 【已解决】
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-6-26 23:48 , Processed in 0.087808 second(s), 25 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表