Delphi程序里,能不能在不打开Excel文件的情况下,直接读取Excel文件里的选区数据?
(注意,前提:仅仅启动Excel应用,而不在Excel里打开该文件,Delphi程序能读取其数据吗?)以前我用Lotus123时,就可以。现在改用Excel,不知道Excel这点怎样?请各位给点提示

解决方案 »

  1.   

    不打开文件读个鬼?
    可以不显示。Visible设置为False就不显示了。
      

  2.   

    用ADO数据库控件连接,然后按照数据表数据处理
    var
      s: TStrings;
    begin
      OpenDialog1.Filter := 'Excel 文件(*.xls)|*.xls';
      if OpenDialog1.Execute then
      begin
        s := TStringList.Create;    
        ADOConnection1.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;Password="";Data Source=' + OpenDialog1.FileName + ';Extended Properties=excel 8.0;Persist Security Info=True';
        ADOConnection1.LoginPrompt := False;
        ADOConnection1.Connected := True;
        ADOConnection1.GetTableNames(s);
        ADODataSet1.Connection := ADOConnection1;
        ADODataSet1.CommandText := 'select * from [' + s[0] + ']';
        //s[0]通常是'Sheet1$', 代表第一页,为了安全字符串中的 [] 应该保留去掉,因为'select * from Sheet1$'的SQL会报错,而为'select * from [Sheet1$]'不会
        ADODataSet1.Open;
        //ADODataSet1中即为Excel文件中的数据,文件第1行为FieldName,其他为数据
        s.Free;
      end;
    end;
      

  3.   

    用XLSReadWrite2构件很方便的
    ...
        xlsw: TXLSReadWriteII2;
       xlsr: TXLSDbRead2;
    ...
    xlsw.Read;
    with xlsw.Sheets.Items[0],mycard do //第一个sheet
    begin
      for  r:=起始行 to 终止行(LastRow为最后一行) do
       begin
          varval:= AsString[列,r];
         ...
    end;
    end;
      

  4.   

    只能是打开这个文件,而不显示这个文件,delphi是可以实现的,挺简单的
      

  5.   

    以前在用Lotus 123时,可以用Range.Read(另一工作簿选区参数),注意:“另一工作簿选区”是没有打开的。Excel真的就没有类似的功能?(我刚开始使用Excel,烦请各位帮我确认一下),好吗?
      

  6.   

    http://blog.csdn.net/swayi21/archive/2004/08.aspx