delphi读取工作表的一个奇怪的问题
我想读取第一个工作表,myExcel.workSheets[1].activate;这样用是可以,但对于有些EXCEL,我用myExcel.workSheets[1].activate; 读取不出任何内容,也不报错。
非要把workSheets[1]改为workSheets[2],才可以读出第一个工作表的内容,在别的电脑试也是一样的。
不知是何原因?
代码如下:
var
myExcel: Variant;
iRow: integer;
begin
....
myExcel.workBooks.open('EXCEL文件路径');
myExcel.workSheets[1].Activate; //有时要把1改为2才能读第一个工作表sheet1的内容。
for iRow:=2 to 65535 do
begin
.
.
.
end;
end;
[解决办法]
不会吧,我没遇到过,不过可以这样
myExcel.workSheets['Sheet1'].Activate;
[解决办法]
它的第一个sheet是隐藏的?
[解决办法]
可以先取出所有工作薄名称,用ADO连接Excel,再用GetTableNames方法
你说的这个奇怪问题,我用了这么久,真没遇到过;
是不是你的程序在某个地方控制了,用这个有问题的Excel文件,新建一个工程试试
[解决办法]
跟隐藏没关系,比如隐藏了sheet1,那么对于workSheets[1]来说就是sheet2
[解决办法]
7#说的是隐藏sheet1后, workSheets[1]就是sheet2
[解决办法]
还是向楼上所说的那样,用一个ADOConnection组件,直连excel表格,用ADOConnection的GetTableNames方法取出所有的工作表名,放在COMBOBOX组件中,然后选择表名,打开工作表中数据,就可以了。另外我也碰到一个古怪的问题,有的EXCEL表格,不是全部,会出现两个表名,假如一个是KCZ,另一个就是KCZ_,后面有个下划线,我也是百思不得其解,打开出错,就把它排除,不显示。