DELPHI中 EXCEL和SQLSEVER2000互相导入导出要怎么样才能实现啊??
    我之前也自己在网上搜了好多帖  但是都是只有代码,具体用什么控件以及怎么实现都没有讲.
  就像Procedure ExportExcelFile(FileName: string; bWriteTitle: Boolean; aDataSet: TDataSet);
    procedure WriteStringCell(AValue: string);
    procedure WriteStringCell(AValue: string);
    Procedure WriteExcelFile(FileName: string; bWriteTitle: Boolean; aDataSet: TDataSet);
   Procedure ReadExcelFile(FileName: string);
  这些东西我都不知道是怎么加到代码里面去的,我看了一下每个控件EVENT  里面好像都没有这些啊.
  哪位大虾能给出详细的文档??  或者有自己的方法能实现EXCEL和SQLSEVER2000导入导出也可以啊.最好能说的详细点.      

解决方案 »

  1.   

    DELPHI中 EXCEL和SQLSEVER2000互相导入导出1、直接用DTS
    2/、用一个adoquery之类的组件连接数据库,用ole或者组件的办法连接excel,然后一个读,一个写
      

  2.   

    楼上的这位,能不能详细点啊???
      小弟接触DELPHI时日尚浅,所以还有好多不懂的地方啊.有不有详细的过程,包括控件和代码.谢谢了啊!!
      还有我的另外一个疑问能不能解答啊??
      就是procedure WriteStringCell(AValue: string);的问题...
      

  3.   


    你的代码不能直接应用
    他的意思是EXCEL可以在SQL里导入,再用DELPHI里的ADOQUERY进行联接
      

  4.   

    从Excel到入到SQL Server 2000ADOQuery1.SQL.Clear;
    if Trim(MyWorkBook.WorkSheets[1].Cells[i,1])<>'' then do
    begin
    ADOQuery1.SQL.Add('insert into B(BID,Bcaption,DFF,TF)');
              ADOQuery1.SQL.Add('values('''+uppercase(Trim(MyWorkBook.WorkSheets[1].Cells[i,1]))+''','''+uppercase(Trim(MyWorkBook.WorkSheets[1].Cells[i,2]))+''','''+uppercase(Trim(MyWorkBook.WorkSheets[1].Cells[i,5]))+''',cast('''+uppercase(Trim(MyWorkBook.WorkSheets[1].Cells[i,6]))+''' as int))');
              ADOQuery1.ExecSQL; 
    i:=i+1;                                                   
    end从SQL Server 2000导出到Excel直接由DBGrid导出为Excel文件的代码如下:uses  ComObj;procedure TSearchinforfrm.Button11Click(Sender: TObject);
    var
      eclApp,WorkBook:olevariant;
      xlsFileName:string;
      i,j:integer;
    begin  if SaveDialog1.Execute then
          xlsFileName:=SaveDialog1.FileName;     try
          eclApp:=CreateOleObject('Excel.Application');
          WorkBook:=CreateOleObject('Excel.Sheet');
         except
          Application.MessageBox('系统没有安装Microsoft Excel','Microsoft Excel',MB_OK+MB_ICONWarning);
          Exit;
         end;     try
           WorkBook:=eclApp.workbooks.Add;
         for i:=0 to DBGrid1.Columns.Count-1 do
          begin
             eclApp.Cells(1,i+1):=DBGrid1.Columns[i].FieldName;
          end;      DBGrid1.DataSource.DataSet.First;
          j:=2;
          while not DBGrid1.DataSource.DataSet.Eof do
          begin
           for i:=0 to DBGrid1.DataSource.DataSet.FieldCount-1 do
            begin
             eclApp.Cells(j,i+1):=DBGrid1.DataSource.DataSet.Fields[i].Value;
            end;
            DBGrid1.DataSource.DataSet.Next;
            inc(j);
          end;       WorkBook.SaveAS(xlsFileName);
           WorkBook.close;
          except
             ShowMessage('文件导出失败!');
             Exit;
          end;
         Application.MessageBox('保存成功!','恭喜',MB_OK + MB_ICONINFORMATION);
    end;直接调用EXCEL控件可能会出现这样的问题!最好用代码实现导出功能!uses
        ComObj, Excel2000, OleServer;procedure TPCodemainfrm.SaveToXlsClick(Sender: TObject);
    var
      i,j:integer;
      s,t:string;
      Excelid: Variant;
    begin if ComboBox1.Text='' then
     begin
       with dms.AdoRecords do
        begin      Close;
          SQL.Clear;
          SQL.Text := 'exec SearchRecords';
          //SQL.LoadFromFile(WPath+'\SQL\SearchRecords.sql');
          Open;      try
           Excelid:=CreateOleObject('Excel.Application');
          except
           on Exception do raise exception.Create('无法创建Xls文件,请确认是否安装EXCEL')
          end;     Excelid.Visible := True;
         Excelid.WorkBooks.Add;
         Excelid.worksheets[1].range['A1:V1'].Merge(True);     Excelid.worksheets[1].range['A1:V1'].HorizontalAlignment := $FFFFEFF4;
         Excelid.WorkSheets[1].Cells[1,1].Value :='P-Codes代码浏览表';     Excelid.worksheets[1].range['A2:V2'].HorizontalAlignment := $FFFFEFF4;
         Excelid.worksheets[1].range['A2:V2'].VerticalAlignment := $FFFFEFF4;     Excelid.worksheets[1].range['A1:V2'].font.bold:=true;     Excelid.worksheets[1].Range['A2:V2'].Font.Name:='宋体';
         Excelid.worksheets[1].Range['A2:V2'].Font.Size := 12;     Excelid.worksheets[1].Columns[1].ColumnWidth := 5;
         Excelid.worksheets[1].Columns[2].ColumnWidth := 6;  j:=2;      Excelid.WorkSheets[1].Cells[j,1].Value := '编号';
          Excelid.WorkSheets[1].Cells[j,2].Value := 'P11**';  i:=3;
      dms.AdoRecords.First;
      while not dms.AdoRecords.Eof do
        begin
          Excelid.WorkSheets[1].Cells[i,1].Value := Trim(dms.AdoRecords.FieldByName('ident').AsString);
          Excelid.WorkSheets[1].Cells[i,2].Value := Trim(dms.AdoRecords.FieldByName('a1').AsString);
          Inc(i);
          dms.AdoRecords.Next;
        end;
      end;
          s:='A3:V'+IntToStr(dms.AdoRecords.RecordCount+3);
          Excelid.worksheets[1].Range[s].Font.Name := '宋体';
          Excelid.worksheets[1].Range[s].Font.Size := 10;
          Excelid.worksheets[1].Range[s].Borders.LineStyle := 1; end;
    end;
      

  5.   

    我是说在DELPHI中通过编写代码实现它们之间的导入导出,好像用"流"可以做,有不有谁会???
          要详细过程(包括控件,控件的属性还有代码).
      谁教我把这个问题搞定了50分就是你的了!