ziyaxian 发表于 2009-12-31 15:11:32

用_ExcelReadSheetToArray取得一个EXCEL表的行数太慢,请问还有没有别的方法?

本帖最后由 ziyaxian 于 2010-1-4 15:10 编辑

我有多个EXCEL表都在5、6百行左右,我想每个表一行一行的处理数据,但用_ExcelReadSheetToArray取表的行数时过慢,请问还有没有别的快的方法取得一个EXCEL表的行数,谢谢!!

pchome2000 发表于 2009-12-31 15:15:14

得到工作最后一行有内容的行数
$Q = $oExcel.Sheets("工作表名").Range("B65536").End($xlUp).Row + 1

ziyaxian 发表于 2009-12-31 18:03:15

请问这个$xlUp是什么呢?

pchome2000 发表于 2009-12-31 20:51:58

$xlUp表示第一行

pchome2000 发表于 2010-1-1 10:42:51

本帖最后由 pchome2000 于 2010-1-1 10:48 编辑

Global Const $xlUp = -4162         
local $oexcel = _excelbootopen("c:\test.xls")
$Q = $oExcel.Sheets("工作表名").Range("A65536").End($xlUp).Row + 1
;A列第65536行之上的最后有数据的单元格所在行数
msgbox(0,"test",$q)

ziyaxian 发表于 2010-1-1 12:59:03

谢谢,比原来快多了,还有个问题想问一下,我只想取得这个表的行数而不打开这个表,有什么方法做到吗?

pchome2000 发表于 2010-1-1 17:51:35

local $oexcel = _excelbootopen("c:\test.xls", 0)
0是隐藏打开,1是可见打开

flyingrabbit 发表于 2010-5-10 10:12:55

学习了。谢谢

king8462 发表于 2011-1-10 21:36:33

#include <Excel.au3>
Global Const $xlUp = -4162
local $oexcel = _ExcelBookOpen("c:\ceshi.xls")
$q = $oExcel.Sheets("sfz").Range("A65536").End($xlUp).Row + 1
;A列第65536行之上的最后有数据的单元格所在行数
msgbox(0,"test",$q)

运行上面的代码出错:

$q = $oExcel.Sheets("sfz").Range("A65536").End($xlUp).Row + 1
$q = $oExcel^ ERROR

红枫雨 发表于 2011-1-28 13:02:56

呵呵,又发现了新大陆,节省了不少时间,学习了!

sango 发表于 2011-2-11 12:20:07

学习了,谢谢

suiyefeng 发表于 2011-9-1 21:22:36

真是谢谢了,,有问题来论坛真没错,,

xlj310 发表于 2012-5-27 22:50:38

Global Const $xlUp = -4162
可否解释一下啊?
不过确实可以得到正解~!
这是等到有数据的最后一行

xlj310 发表于 2012-5-27 23:10:22

刚刚百度了一下,发现了那个-4162的意思



只能记下了

xlj310 发表于 2012-5-27 23:11:35

$oExcel.Sheets("sfz").Range("A65536").End($xlUp).Row + 1
是从A列的第65536行开始,向上找到第一个有数据的单元格,再加1就是有数据单元格下面的单元格。
页: [1] 2
查看完整版本: 用_ExcelReadSheetToArray取得一个EXCEL表的行数太慢,请问还有没有别的方法?