我想做个小程序,它要能够导入EXCEL表,导入后在DELPHI中要能够像是操作数据库一样可以操作!
高手们帮帮忙啊!

解决方案 »

  1.   

    就把excel当做数据库(文本),健个ODBC连接就可以操作了.
      

  2.   

    http://software.ccidnet.com/pub/disp/Article?columnID=295&articleID=36375&pageNO=1怎么样,是不是你想要得
      

  3.   

    把excel当做数据库,做个连接就可以操作了
    如用ado方法:在delphi中加入adoconnection控件,双击后选择jet 4.0 ole db,在连接页中
    选择数据库的名字(.xls),再双击全部(all)页中的Extended Properties,在value中
    填入Excel 8.0,OK!
    在控件ADODataSet1的CommandText属性中选择了select *  from Sheet1$后,别忘了在
    Sheet1$的两边加上中括号[],否则出现“FROM子句语法错误”。或者用ADOQuery1控件:在
    它的SQL属性中写入:select * from [Sheet1$]。
      

  4.   

    unit gzscpas;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, DB, ADODB, ComCtrls, StdCtrls,comobj,inifiles;type
      TgzscForm = class(TForm)
        Button1: TButton;
        DateTimePicker1: TDateTimePicker;
        ADOQuery1: TADOQuery;
        procedure Button1Click(Sender: TObject);
        procedure FormClose(Sender: TObject; var Action: TCloseAction);
        procedure FormDestroy(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      gzscForm: TgzscForm;
      app_path:string;implementation{$R *.dfm}procedure TgzscForm.Button1Click(Sender: TObject);
     var
         ExcelApp,rangee:variant;
         i,row:integer;
         time1,time2,path :string;
      begin
        app_path:=extractfilepath(application.ExeName);
        with Tinifile.create(app_path+'pay.ini') do
          begin
            path :=app_path+'\page\2003.xls';
            end;
        time1:=formatdatetime('mm',DateTimePicker1.Date);
        time2:=formatdatetime('yyyy',DateTimePicker1.Date);
        ExcelApp:=createoleobject('excel.application');
        ExcelApp.WorkBooks.Open( path );
        ExcelApp.WorkSheets[2].Activate;
        ExcelApp.Cells[3,1].Activate;
        rangee:=ExcelApp.activecell;
        with adoquery1 do
        begin
        close;
        sql.Clear ;
        sql.add('select * from gz where month(gzsfrq)='+time1+' and year(gzsfrq)='+time2 );
        open;
        for i:=0 to fields.Count -1 do
        begin
        rangee.value:=fields[i].DisplayLabel ;
        if i=6  then
        begin
        rangee.value :=time2+time1;
        rangee:=rangee.next;
        end;
        case I of
        4..5: rangee.value :='';
        0..1: rangee.value :='';
        else
        rangee:=rangee.next;
        end;
        end;
        first;
        row:=4;
        while not eof do
        begin
        rangee:=ExcelApp.range['a'+inttostr(row),'a'+ inttostr(row)];
        for i:=0 to fields.Count -1 do
        begin
          rangee.value:=fields[i].AsString ;
          rangee:=rangee.next;
        end;
        next;
        inc(row);
        end;
        end;
        ExcelApp.Visible := True;
        ExcelApp.ActiveSheet.PrintPreview;
      end;procedure TgzscForm.FormClose(Sender: TObject; var Action: TCloseAction);
    begin
    action:=cafree;
    end;procedure TgzscForm.FormDestroy(Sender: TObject);
    begin
    gzscform:=nil;
    end;end.
    试试这段代码如何?我是通过了,就看您如何使用拉!