adocon.ConnectionString:='microsoft.Jet.OLDB.4.0;Data Source=E:\tree; Extended Properties="Excel 8.0,HDR=YES;";Persist Security Info=false';
  adocon.LoginPrompt:=false;
  adocon.Connected:=true;
  adocon.Execute('select * into bb.xls from tb1 IN [ODBC] [ODBC;Driver=SQL Server;UID=sa;PWD=;Server=summer;DataBase=OA;]');
我上面的代码总是提示:“[microsoft][odbc 驱动管理器]未发现数据源名称
并且未指定默认驱动程序”

解决方案 »

  1.   

    晕,用execl的Com接口,先从数据库读取数据,再写到execl里。
      

  2.   

    procedure TForm3.Excel4Click(Sender: TObject);   //将联合查询的结构转为excel表
    var       xlsFilename :string;
              eclApp,WorkBook :variant ;
              a_filedNo,i,j :integer;
    begin
              a_filedNo :=Form3.DBGrid4.FieldCount  ;
              xlsFileName :='关于学生成绩基本信息.xls';          try
                      eclApp :=CreateOleObject('Excel.Application');
                      WorkBook :=CreateOleObject('Excel.Sheet');
              except
                      showmessage('您的系统没有安装MS EXCEL');
                      exit;
              end;          try
                        WorkBook :=eclApp.workBooks.add ;
                        for i :=1 to  a_FiledNo do      //转化字段名;
                         begin
                                //eclApp.cells(1,i) :=Form3.DBGrid4.Columns[i-1].Title.caption ;
                                eclApp.cells(1,i) :=Form3.DBGrid4.Fields[i-1].FieldName ;
                         end;                    Form3.DBGrid4.DataSource.DataSet.First ;
                        for i :=1 to  Form3.a_recno   do    //Form3.a_recno                       begin
                                for j :=1 to  a_filedNo do  //转化一个记录
                                  begin
                                          eclApp.cells(i+1,j) :=Form3.DbGrid4.Fields[j-1].Value ;
                                  end;
                                Form3.DBGrid4.DataSource.DataSet.Next ;
                          end;
                    try
                         WorkBook.saveas(ExtractFilePath(Application.ExeName )+xlsFileName);
                         WorkBook.close;
                         showmessage('保存EXECL文件成功,路径为:'+ExtractFilePath(Application.ExeName )+xlsFileName);
                      except
                               showmessage('保存文件出错');
                      end;
                   except
                     showmessage('不能正确操作EXECL文件,可能该文件已经被其他程序占用或系统错误');
                     WorkBook.close;
                     eclApp.quit;
                     eclApp :=Unassigned;
             end;
    end;
      

  3.   

    procedure   TForm_Q_prjcount.PrintExcel();
    var i,j:integer;
    CONST    Ex:array[0..25]  of char=('A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z');
    begin   try
            excel := CreateOLEObject('Excel.Application');
        except
            EXCEL:=NULL;
            Application.MessageBox('ÇëÏÈ°²×°Excel97/2000¡£',pchar(application.Title),MB_OK+MB_ICONERROR);
            EXIT;
        end;
        excel.Visible := true;
        try
            book:=excel.Workbooks.Add(ExtractFilePath(Application.ExeName)+'report\q_prj_count.xls');
            sheet := Book.Worksheets[1];
        except
           DJSHOW('ûÓÐÕÒµ½±¨±íÎļþ£¡');
        end;
        sheet.cells(1,1):='¹¤×÷Á¿Í³¼Æ';    try
           for  i:=1 to query1.FieldCount do
               sheet.cells(2,i):=query1.Fields[i-1].FieldName;
           j:=3;
           while not query1.eof do
             begin
                 for  i:=1 to query1.FieldCount do
                    sheet.cells(j,i):=trim(query1.fields[i-1].asstring);
                 j:=j+1;
                 query1.next;
             end;
             ranges:=sheet.range['a2:'+Ex[query1.FieldCount-1]+inttostr(j-1)];
             ranges.Borders.LineStyle := 1;
        except
          djshow('дÈëÊý¾Ý³ö´í£¡');
        end;end;var     range06,excel,book,sheet,ranges:variant;
    这个问题收缩以前的贴子肯定不少
      

  4.   

    procedure TForm3.Excel4Click(Sender: TObject);   //将联合查询的结构转为excel表
    var       xlsFilename :string;
              eclApp,WorkBook :variant ;
              a_filedNo,i,j :integer;
    begin
              a_filedNo :=Form3.DBGrid4.FieldCount  ;
              xlsFileName :='关于学生成绩基本信息.xls';          try
                      eclApp :=CreateOleObject('Excel.Application');
                      WorkBook :=CreateOleObject('Excel.Sheet');
              except
                      showmessage('您的系统没有安装MS EXCEL');
                      exit;
              end;          try
                        WorkBook :=eclApp.workBooks.add ;
                        for i :=1 to  a_FiledNo do      //转化字段名;
                         begin
                                //eclApp.cells(1,i) :=Form3.DBGrid4.Columns[i-1].Title.caption ;
                                eclApp.cells(1,i) :=Form3.DBGrid4.Fields[i-1].FieldName ;
                         end;                    Form3.DBGrid4.DataSource.DataSet.First ;
                        for i :=1 to  Form3.a_recno   do    //Form3.a_recno                       begin
                                for j :=1 to  a_filedNo do  //转化一个记录
                                  begin
                                          eclApp.cells(i+1,j) :=Form3.DbGrid4.Fields[j-1].Value ;
                                  end;
                                Form3.DBGrid4.DataSource.DataSet.Next ;
                          end;
                    try
                         WorkBook.saveas(ExtractFilePath(Application.ExeName )+xlsFileName);
                         WorkBook.close;
                         showmessage('保存EXECL文件成功,路径为:'+ExtractFilePath(Application.ExeName )+xlsFileName);
                      except
                               showmessage('保存文件出错');
                      end;
                   except
                     showmessage('不能正确操作EXECL文件,可能该文件已经被其他程序占用或系统错误');
                     WorkBook.close;
                     eclApp.quit;
                     eclApp :=Unassigned;
             end;
    end;
      

  5.   

    INSERT INTO   OPENDATASOURCE('Microsoft.JET.OLEDB.4.0',   'Extended Properties=Excel 8.0;Data source=C:\training\bb.xls')...[Filiale1$]   (bestand, produkt) VALUES (20, 'Test')
      

  6.   

    但是:好象从SQL   SERVER的表导入Excel ,这样写行吗?
      

  7.   

    insert into OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
    'Data Source="c:\Temp.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...table1 (A1,A2,A3) values (1,2,3)EXEC master..xp_cmdshell 'bcp "SELECT au_fname, au_lname FROM pubs..authors ORDER BY au_lname" queryout C:\ authors.xls -c -Sservername -Usa -Ppassword'http://www.csdn.net/develop/Read_Article.asp?Id=18623