首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

delphi读取工作表的一个奇怪的有关问题

2013-07-09 
delphi读取工作表的一个奇怪的问题我想读取第一个工作表,myExcel.workSheets[1].activate这样用是可以,但

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文件,新建一个工程试试

[解决办法]

引用:
引用:

它的第一个sheet是隐藏的?

没有隐藏,怎么隐藏呢?


跟隐藏没关系,比如隐藏了sheet1,那么对于workSheets[1]来说就是sheet2
[解决办法]
7#说的是隐藏sheet1后, workSheets[1]就是sheet2
[解决办法]
还是向楼上所说的那样,用一个ADOConnection组件,直连excel表格,用ADOConnection的GetTableNames方法取出所有的工作表名,放在COMBOBOX组件中,然后选择表名,打开工作表中数据,就可以了。另外我也碰到一个古怪的问题,有的EXCEL表格,不是全部,会出现两个表名,假如一个是KCZ,另一个就是KCZ_,后面有个下划线,我也是百思不得其解,打开出错,就把它排除,不显示。

热点排行