我想在execl中选定的几行,或整张表复制到dbgrid的数据后面,它们的列属性一致,应怎么实现?
或者在SQL server中实现此功能也行(在表中实现插入execl文件)

解决方案 »

  1.   

    EXECL文件也可以当作数据库去处理
    可以用ADO直接连使用ADOExpress创建Microsoft Excel 浏览器 
    作者: David Intersimone 
    日期: 2000年08月22日 
    .打开Delphi,创建新的Application。2.在Form中放置ADODataSet3.将CommandType的属性设为cmdTableDirect。
    ADODataSet和BDEDataSet访问数据表相类似。对于ADO来说,要说明数据源然后利用数据感
    知(data-aware)控件将数据显示在应用程序中。首先要设置的是CommandType,它用来告
    诉ADO引擎准备调用什么样的命令。4.设置ConnectionString属性
    ConnectionString属性告诉ADO如何联接数据源。点击省略号会显示ConnectionString对话
    框。我们要自己创建ConnectionString所以选择Use Connection String,然后点击Build
    按钮激活Data Link Properties对话框。首先要做的是选择我们要用的数据提供者(Data 
    Provider)以取得数据,以为要访问的对象是Excel,所以我们选择Microsoft JET OLEDB 
    4.0 Provider,点击NEXT。下一步是要选择联接的具体对象,通过Browse按钮,选择任意
    一个Excel文件或者使用我们提供的样例文件Forecast.xls。在测试ConnectionString之前,
    我们还要手动的添加Extended Property,点击OK返回到ConnectionString对话框然后输入
    ’Extended Properties=Excel 8.0;’别忘了每一个ConnectionString实体都需要用分号
    隔离。这是要对ADO声明我们需要Excel支持并使类库关联到Excel 8.0上。点击Build按钮,
    然后点击TEST,如果返回正确的结果,这一步的工作就完成了。5.设置CommandText属性
    该属性变成下来表单,允许你选择数据源中定义的表,选择a$。6.在Form中放置Datasource(Data Access)组件,和DBGrid(Data Controls)。
    我们需要将ADODataset连接到网格上显示数据。将DBGrid的DataSource属性设置为
    DataSource1,DataSource的ADODataSet属性设置为ADODataSet1。7.将ADODataSet的Active属性设为True
    通过激活ADODataSet,我们可以在设计模式下测试查询的运行状态。来自于EXCEL的数据
    将显示在网格中。
      

  2.   

    先设置所对应的列。然后再导入。下面向execl导入,你选判断是否存在,然后反过来向sql server插入即可。方法相反
    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls,comobj;type
      TForm1 = class(TForm)
        Button1: TButton;
        procedure Button1Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
    var 
      eclApp,WorkBook:Variant;
        //声明为OLE Automation 对象
      xlsFileName:string;
    begin
      xlsFileName:='ex.xls';
      try
    //创建OLE对象Excel Application与 WorkBook
      eclApp:=CreateOleObject('Excel.Application');
      WorkBook:=CreateOleobject('Excel.Sheet');
      except
      ShowMessage('您的机器里未安装Microsoft Excel。');
      Exit;
      end;
      try
      ShowMessage('下面演示:新建一个XLS文件,并写入数据,最后关闭它。');
      workBook:=eclApp.workBooks.Add;
      eclApp.Cells(1 , 1):='字符型';
      eclApp.Cells(2 , 1):='Excel文件';
      eclApp.Cells(1 , 2):='Money型';
      eclApp.Cells(2 , 2):=10.01;
      eclApp.Cells(1 , 3):='日期型';
      eclApp.Cells(2 , 3):=Date;
      WorkBook.saveas(xlsFileName);
      WorkBook.close;
      ShowMessage('下面演示:打开刚创建的XLS文件,并修改其中的内容,然后,由用户决定是否保存。');
      WorkBook:=eclApp.workBooks.Open(xlsFileName);
      eclApp.Cells(2 , 1):='Excel文件类型';
      if MessageDlg(xlsFileName+'文件已被修改,是否保存?',mtConfirmation, [mbYes, mbNo], 0) = mrYes then
      WorkBook.save
      else
      workBook.Saved := True; //放弃修改
      WorkBook.Close;
      eclApp.Quit;
    //退出Excel Application
    //释放VARIANT变量
      eclApp:=Unassigned;
      except
      ShowMessage('不能正确操作Excel文件。可能是该文件已被其他程序打开, 或系统错误。');
      WorkBook.close;
      eclApp.Quit;
    //释放VARIANT变量
      eclApp:=Unassigned;
    end;
    end;end.
      

  3.   

    用ado直接联excel的sheet就行了,esu(ESU)说的很明白了
      

  4.   

    用ado直接联excel的sheet就行了,esu(ESU)说的很明白了