insert into OPENDATASOURCE('Microsoft.Jet.OLEDB.4.0',
'Data Source=D:\book.xls;Extended Properties=EXCEL 5.0')...[sheet1$]
select Customer .name ,Product .fullname
from [v_Order]

解决方案 »

  1.   

    这个公共代码中的一段导出excel
    procedure DBGridExp(MyForm:TForm);
    var
     xlsFileName,Ext:string;
     OldCursor:TCursor;
     SavDlg1:TSaveDialog;
     ExpClass:TDBGridEhExportClass;begin SavDlg1:=TSaveDialog.Create(nil);
     SavDlg1.Filter:='EXCEL Files|*.xls|CSV Files|*.csv|HTML Files|*.html|RTF Files|*.rtf|TEXT Files|*.txt|Unicode TEXT Files|*.txt';  if ( MyForm.ActiveControl is TDBGridEh ) then
      begin    if ( ( MyForm.ActiveControl as TDBGridEh ).DataSource.DataSet.Active ) then
        begin     if SavDlg1.Execute then
         begin      case SavDlg1.FilterIndex of
           1: begin ExpClass := TDBGridEhExportAsXLS; Ext := 'xls'; end;
           2: begin ExpClass := TDBGridEhExportAsCSV; Ext := 'csv'; end;
           3: begin ExpClass := TDBGridEhExportAsHTML; Ext := 'html'; end;
           4: begin ExpClass := TDBGridEhExportAsRTF; Ext := 'rtf'; end;
           5: begin ExpClass := TDBGridEhExportAsText; Ext := 'txt'; end;
           6: begin ExpClass := TDBGridEhExportAsUnicodeText; Ext := 'txt'; end;
          else
           ExpClass := nil; Ext := '';
          end;      xlsFileName:=SavDlg1.FileName + '.'+Ext;
          OldCursor:=Screen.Cursor ;
          Screen.Cursor :=crhourglass;
          try
           SaveDBGridEhToExportFile(ExpClass, MyForm.ActiveControl as TDBGridEh, xlsFileName,True);
           Application.MessageBox('数据导出成功!','系统提示',MB_OK+MB_IconInformation);
          finally
           Screen.Cursor :=OldCursor;
          end; //try
        end;   end;
      end; SavDlg1.Free;end;
      

  2.   

    建议使用第三方控件,不需调Excel的资源,速度快。
      

  3.   

    dbgrideh里的demo有一个复制,可以参考;
    insert into OPENDATASOURCE('Microsoft.Jet.OLEDB.4.0',
    'Data Source=D:\book.xls;Extended Properties=EXCEL 5.0')...[sheet1$]
    select Customer .name ,Product .fullname
    from [v_Order]
    这个也可以,excel不可能有100W条row记录,肯定要分sheet了,一个一个的导入
      

  4.   

    Excel 2010可以支持1048576行,2007版不知道支持多少行,2003版好像是65536行吧。另一个方案:拼Insert语句,100行或1000行执行一次。应该能快一些吧。
      

  5.   

    insert into 表(字段)
    select  * from OPENDATASOURCE('Microsoft.Jet.OLEDB.4.0',
    'Data Source=D:\book.xls;Extended Properties=EXCEL 5.0')...[sheet1$]
      

  6.   

    用ado连接excel再用sql语句操作insert 表对表