在delphi7.0中如何将数据导入到excel中?

时间:2023-01-17 20:39:57
前台:delphi7.0,是一个简单的程序,对数据实现排序汇总。
后台:access,数据表为data,包含6个字段,分别为a,b,c,d,e,f.
现在想要将DBGrid1中显示的数据导入到excel中,不知道语句怎么写,请大家帮忙?谢谢!!

20 个解决方案

#1


你是想把数据库里的数据直接全部导出到EXCEL里呢,还是说把数据库里的数据先显示在DBgrid中有时候要做一定的增减修改之后再导出到excel中呢?

#2


随便搜一搜也能找到答案啦
若是较复杂的,偶提供有偿支持

#3


DELPHI有操作WORD的库的,虽然不太好用,但简单的输入还是可以的

#4


给你一篇文章:

在DELPHI中操作Excel

 

□ 曾剑平

 

在数据库应用软件的开发过程中,经常需要的数据转换成Excel文字,让用户作进一步的数据处理。而Borland Delphi是开发数据库应用系统的常用工具,如何在Delphi中操作Excel呢?

 

我们知道,在Microsoft office软件中有一种内嵌的编程语言,即VBA,它是一种宏语言、VB的子集。利用它,你可以编写出功能强大的代码,如打开文件、修改数据、保存数据、设置字体等。另一方面,Microsoft office软件中的宏能以VBA代码的形式记录下你的操作过程,因此借助宏操作,可以很轻松地实现某一功能,并把这些代码稍作修改嵌入你的软件中。但是VBA有一个缺点,它必需有Microsoft office操作平台,在哪里编写,必须在哪里执行。例如在Excel下编写的一段VBA代码,则它只有在Excel下才能执行。

 

关于Excel中的VBA编程方法、Excel对象属性、方法说明可以在Microsoft office的安装(完全安装)目录下的VBAXL8.hlp帮助文件中找到。

 

因此,只有把VBA代码嵌入到Borland Delphi中,才能实现用Delphi操作Excel。

 

下面,以Delphi为例,说明这种调用方法。

 

Unit excel;

 

Interface

 

Uses

 

  Windows,Messages,SysUtils,Classes,Graphics,Controls,Forms,Dialogs,StdCtrls,ComObj,

 

  { ComObj是操作OLE对象的函数集}

 

Type

 

  TForm1=class(TForm)

 

Button1:TButton;

 

Procedure Button1Click(Sender:Tobject);

 

  Private 

 

{ Private declaration}

 

  Public 

 

{ Public declaration }

 

  end;

 

 

 

var

 

  Form1:Tform1; 

 

Implementation

 

{$R *.DFM}

 

procedure TForm1.Button1Click(sender:Tobject);

 

var

 

  eclApp,WordBook:Variant;  {声明为OLE Automation对象}

 

  xlsFileName:string;

 

begin

 

  xlsFileName:=’ex.xls’;

 

  try

 

    {创建OLE对象:Excel Application与WordBook}

 

eclApp:=CreateOleObject(‘Excel.Application’);

 

WorkBook:=CreateOleObject(Excel.Sheet’);

 

  Except

 

Application.MessageBox(‘你的机器没有安装Microsoft Excel’,

 

’使用Microsoft Excel’,MB_OK+MB_ICONWarning);

 

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(1,4):=’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.

 

 

 

   了解了上述操作过程后,我们就可以很容易地将数据库中的数据转换成Excel文件。

#5


EXCEL的操作有多种方法,最常用的是通过OLE方式
具体方法请搜以前帖子

#6



//use comobj   ,要放一个savedialog
procedure TRemind_F.Btn1Click(Sender: TObject);
var
    excelApp,WorkBook:olevariant;
    xlsFileName:string;
    i,j:integer;
begin
  if  dlgSave1.Execute  then
  begin
    xlsFileName:=dlgSave1.FileName;
  end else
  begin
    Exit;
  end;



  try
    excelApp:=CreateOleObject('Excel.Application');
    WorkBook:=CreateOleObject('Excel.Sheet');
  except
    Application.MessageBox('系统没有安装Microsoft   Excel','Microsoft   Excel',MB_OK+MB_ICONWarning);
    Exit;
  end;

  try
    //列名,字段名
    WorkBook:=excelApp.workbooks.Add;
    for   i:=0   to   dbg1.Columns.Count-1 do
    begin
      excelApp.Cells(1,i+1):=dbg1.Columns[i].Title.Caption;
    end;

    dbg1.DataSource.DataSet.First;
    j:=2;
    while not dbg1.DataSource.DataSet.Eof do
    begin
      for   i:=0   to   dbg1.Columns.Count-1   do
      begin
        excelApp.Cells(j,i+1):=dbg1.Fields[i].Value;
      end;
      dbg1.DataSource.DataSet.Next;
      inc(j);
    end;

    WorkBook.SaveAS(xlsFileName);
    WorkBook.close;
  except
    ShowMessage('文件导出失败!');
    Exit;
  end;
  Application.MessageBox('保存成功!','恭喜',MB_OK   +   MB_ICONINFORMATION);
end;

#7


一:用Ole自动化服务,创建一个OLE自动化对像
二:用第三方控件,如Ehlib,dev express

#8


没那么烦的,开头uses cxgridexportlink;
事件中
procedure TfrmDaGongYiZhiZuo.cxButton5Click(Sender: TObject);
var
  filename:string;
begin
   if SaveDialog1.Execute then
   begin
      filename:=SaveDialog1.FileName;
      ExportGridToExcel(filename,cxGrid2,True,True,True,'xls');
      showmessage('数据导出成功!');
   end;
end;

#9


EXCEL的操作有多种方法,最常用的是通过OLE方式.6楼的就是一个简单的例子。仔细看一下。

#10


同意!!!!!!!!!!!!!!!!         

#11


引用 8 楼 xiy_funny_girl 的回复:
没那么烦的,开头uses cxgridexportlink;
事件中
procedure TfrmDaGongYiZhiZuo.cxButton5Click(Sender: TObject);
var
  filename:string;
begin
  if SaveDialog1.Execute then
  begin
      filename:=SaveDialog1.FileName;
      ExportGridToExcel(filename,cxGrid2,True,True,True,'xls');
      showmessage('数据导出成功!');
  end;
end;


前提要安装什么控件?

#12


DEPHI第三方控件cxgrid,你可以上网直接下载用第三方控件包,组件,bpl,什么的,以后编程都会有很多规律性的东西,第三方控件会把很多代码写好的,你直接引用就行了,不像DEPHI自带的控件,真是写的累死了

#13


引用 8 楼 xiy_funny_girl 的回复:
没那么烦的,开头uses cxgridexportlink;
事件中
procedure TfrmDaGongYiZhiZuo.cxButton5Click(Sender: TObject);
var
  filename:string;
begin
  if SaveDialog1.Execute then
  begin
      filename:=SaveDialog1.FileName;
      ExportGridToExcel(filename,cxGrid2,True,True,True,'xls');
      showmessage('数据导出成功!');
  end;
end;


你这个好像要装cxGrid吧。

#14


procedure DBGridExportData(DBGridName: TDBGrid); //DBGrid导入Excel
var
  myexcel: Variant;
  workbook: olevariant;
  worksheet: olevariant;
  i, j, n, t: Integer;
  SaveDialog: TSaveDialog;
  xlsFileName: string;
begin
  if not DBGridName.DataSource.DataSet.Active then Exit;
  SaveDialog := TSaveDialog.Create(Application);
  SaveDialog.DefaultExt := '.xls';
  SaveDialog.Filter := 'Excel文件|*.xls|所有文件|*.*';
  if SaveDialog.Execute then
  begin
    xlsFileName := SaveDialog.FileName;
    //xlsFileName := 'apws.xls';
    try
      try
        myexcel := createoleobject('excel.application'); //
        myexcel.application.workbooks.add;
        myexcel.caption := '批发市场导出数据';
        workbook := myexcel.application.workbooks[1];
        worksheet := workbook.worksheets.item[1];
      except
        showmessage('不能建立 EXCEL !' + #13#10 + '请检查是否已经安装了 excell.');
        abort;
        exit;
      end;
      i := 1;
      j := 1;
      for n := 0 to DBGridName.FieldCount - 1 do
      begin
        if DBGridName.Columns[n].Visible then
        begin
          worksheet.cells(i, j) := DBGridName.Columns[n].Title.Caption;
          j := j + 1;
        end;
      end;
      with DBGridName.DataSource.DataSet do
      begin
        First;
        while not Eof do
        begin
          inc(i);
          n := 0;
          for j := 0 to DBGridName.FieldCount - 1 do
          begin
            if DBGridName.Columns[j].Visible then
            begin
              t := j - n;
              if isNumericEx(fieldbyname(DBGridName.Fields[j].FieldName).AsString) then
                worksheet.cells[i, t + 1] := '''' + (fieldbyname(DBGridName.Fields[j].FieldName).AsString)
              else
                worksheet.cells[i, t + 1] := (fieldbyname(DBGridName.Fields[j].FieldName).AsString);
            end
            else
              inc(n);
          end;
          Next;
        end;
      end;
      if FileExists(xlsFileName) then
      begin
        if Application.MessageBox('文件已经存在!' + #13 + #10 + '是否确定进行替换?' + #13 + #10 + #13 + #10 +
          '若选择"取消",则将在当前目录中' + #13 + #10 +
          '生成名为apwstemp.xls的临时文件', '提示', MB_OKCANCEL +
          MB_ICONQUESTION + MB_SYSTEMMODAL) = IDOK then
        begin
          DeleteFile(PChar(xlsFileName));
          workbook.SaveAs(xlsFileName);
          workbook.Close;
          myexcel.Quit;
          myexcel := Unassigned;
        end
        else
        begin
          if FileExists(PChar(ExtractFileDir(xlsFileName) + '\' + 'apwstemp.xls')) then
          begin
            DeleteFile(PChar(ExtractFileDir(xlsFileName) + '\' + 'apwstemp.xls'));
          end;
          WorkBook.SaveAs(ExtractFileDir(xlsFileName) + '\' + 'apwstemp.xls');
          WorkBook.Close;
          myexcel.Quit;
          myexcel := Unassigned;
        end;
      end
      else
      begin
        WorkBook.SaveAs(xlsFileName);
        WorkBook.Close;
        myexcel.Quit;
        myexcel := Unassigned;
      end;
    except
      Application.MessageBox('不能正确操作Excel文件!' + #13 + #10 + #13 + #10 + '可能是該文件已被其他程序打开, 或系統错误',
        '警告', MB_OK + MB_ICONSTOP + MB_SYSTEMMODAL);
      WorkBook.Close;
      myexcel.Quit;
      myexcel := Unassigned;
    end;
  end;
end;

#15


如果不是有特殊的要求,就用第三方控件,很方便.

我有的就是dev express

#16


看6楼回复,不错例子

#17


引用 14 楼 gaojunling518 的回复:
procedure DBGridExportData(DBGridName: TDBGrid); //DBGrid导入Excel
var
  myexcel: Variant;
  workbook: olevariant;
  worksheet: olevariant;
  i, j, n, t: Integer;
  SaveDialog: TSaveDialog;
  xls……

楼上说的方法是对的>>>>>>>>>>>>>>>>>>>>>
我以前就是这样引用的>>>>>>>>>>>>>>>>>>>>>

#18


我曾经用过,好像是根据excel的格式写数据,当然只能写一个sheet,速度很快,用delphi提供的组件当数据很多时,超慢!!

#19


用文件流来写入excel,速度很快的,具体方法我忘了,你可以查查!!

#20


这贴子回有什么意思呢?一个月了,难道还没搞定。也不知道结贴

#1


你是想把数据库里的数据直接全部导出到EXCEL里呢,还是说把数据库里的数据先显示在DBgrid中有时候要做一定的增减修改之后再导出到excel中呢?

#2


随便搜一搜也能找到答案啦
若是较复杂的,偶提供有偿支持

#3


DELPHI有操作WORD的库的,虽然不太好用,但简单的输入还是可以的

#4


给你一篇文章:

在DELPHI中操作Excel

 

□ 曾剑平

 

在数据库应用软件的开发过程中,经常需要的数据转换成Excel文字,让用户作进一步的数据处理。而Borland Delphi是开发数据库应用系统的常用工具,如何在Delphi中操作Excel呢?

 

我们知道,在Microsoft office软件中有一种内嵌的编程语言,即VBA,它是一种宏语言、VB的子集。利用它,你可以编写出功能强大的代码,如打开文件、修改数据、保存数据、设置字体等。另一方面,Microsoft office软件中的宏能以VBA代码的形式记录下你的操作过程,因此借助宏操作,可以很轻松地实现某一功能,并把这些代码稍作修改嵌入你的软件中。但是VBA有一个缺点,它必需有Microsoft office操作平台,在哪里编写,必须在哪里执行。例如在Excel下编写的一段VBA代码,则它只有在Excel下才能执行。

 

关于Excel中的VBA编程方法、Excel对象属性、方法说明可以在Microsoft office的安装(完全安装)目录下的VBAXL8.hlp帮助文件中找到。

 

因此,只有把VBA代码嵌入到Borland Delphi中,才能实现用Delphi操作Excel。

 

下面,以Delphi为例,说明这种调用方法。

 

Unit excel;

 

Interface

 

Uses

 

  Windows,Messages,SysUtils,Classes,Graphics,Controls,Forms,Dialogs,StdCtrls,ComObj,

 

  { ComObj是操作OLE对象的函数集}

 

Type

 

  TForm1=class(TForm)

 

Button1:TButton;

 

Procedure Button1Click(Sender:Tobject);

 

  Private 

 

{ Private declaration}

 

  Public 

 

{ Public declaration }

 

  end;

 

 

 

var

 

  Form1:Tform1; 

 

Implementation

 

{$R *.DFM}

 

procedure TForm1.Button1Click(sender:Tobject);

 

var

 

  eclApp,WordBook:Variant;  {声明为OLE Automation对象}

 

  xlsFileName:string;

 

begin

 

  xlsFileName:=’ex.xls’;

 

  try

 

    {创建OLE对象:Excel Application与WordBook}

 

eclApp:=CreateOleObject(‘Excel.Application’);

 

WorkBook:=CreateOleObject(Excel.Sheet’);

 

  Except

 

Application.MessageBox(‘你的机器没有安装Microsoft Excel’,

 

’使用Microsoft Excel’,MB_OK+MB_ICONWarning);

 

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(1,4):=’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.

 

 

 

   了解了上述操作过程后,我们就可以很容易地将数据库中的数据转换成Excel文件。

#5


EXCEL的操作有多种方法,最常用的是通过OLE方式
具体方法请搜以前帖子

#6



//use comobj   ,要放一个savedialog
procedure TRemind_F.Btn1Click(Sender: TObject);
var
    excelApp,WorkBook:olevariant;
    xlsFileName:string;
    i,j:integer;
begin
  if  dlgSave1.Execute  then
  begin
    xlsFileName:=dlgSave1.FileName;
  end else
  begin
    Exit;
  end;



  try
    excelApp:=CreateOleObject('Excel.Application');
    WorkBook:=CreateOleObject('Excel.Sheet');
  except
    Application.MessageBox('系统没有安装Microsoft   Excel','Microsoft   Excel',MB_OK+MB_ICONWarning);
    Exit;
  end;

  try
    //列名,字段名
    WorkBook:=excelApp.workbooks.Add;
    for   i:=0   to   dbg1.Columns.Count-1 do
    begin
      excelApp.Cells(1,i+1):=dbg1.Columns[i].Title.Caption;
    end;

    dbg1.DataSource.DataSet.First;
    j:=2;
    while not dbg1.DataSource.DataSet.Eof do
    begin
      for   i:=0   to   dbg1.Columns.Count-1   do
      begin
        excelApp.Cells(j,i+1):=dbg1.Fields[i].Value;
      end;
      dbg1.DataSource.DataSet.Next;
      inc(j);
    end;

    WorkBook.SaveAS(xlsFileName);
    WorkBook.close;
  except
    ShowMessage('文件导出失败!');
    Exit;
  end;
  Application.MessageBox('保存成功!','恭喜',MB_OK   +   MB_ICONINFORMATION);
end;

#7


一:用Ole自动化服务,创建一个OLE自动化对像
二:用第三方控件,如Ehlib,dev express

#8


没那么烦的,开头uses cxgridexportlink;
事件中
procedure TfrmDaGongYiZhiZuo.cxButton5Click(Sender: TObject);
var
  filename:string;
begin
   if SaveDialog1.Execute then
   begin
      filename:=SaveDialog1.FileName;
      ExportGridToExcel(filename,cxGrid2,True,True,True,'xls');
      showmessage('数据导出成功!');
   end;
end;

#9


EXCEL的操作有多种方法,最常用的是通过OLE方式.6楼的就是一个简单的例子。仔细看一下。

#10


同意!!!!!!!!!!!!!!!!         

#11


引用 8 楼 xiy_funny_girl 的回复:
没那么烦的,开头uses cxgridexportlink;
事件中
procedure TfrmDaGongYiZhiZuo.cxButton5Click(Sender: TObject);
var
  filename:string;
begin
  if SaveDialog1.Execute then
  begin
      filename:=SaveDialog1.FileName;
      ExportGridToExcel(filename,cxGrid2,True,True,True,'xls');
      showmessage('数据导出成功!');
  end;
end;


前提要安装什么控件?

#12


DEPHI第三方控件cxgrid,你可以上网直接下载用第三方控件包,组件,bpl,什么的,以后编程都会有很多规律性的东西,第三方控件会把很多代码写好的,你直接引用就行了,不像DEPHI自带的控件,真是写的累死了

#13


引用 8 楼 xiy_funny_girl 的回复:
没那么烦的,开头uses cxgridexportlink;
事件中
procedure TfrmDaGongYiZhiZuo.cxButton5Click(Sender: TObject);
var
  filename:string;
begin
  if SaveDialog1.Execute then
  begin
      filename:=SaveDialog1.FileName;
      ExportGridToExcel(filename,cxGrid2,True,True,True,'xls');
      showmessage('数据导出成功!');
  end;
end;


你这个好像要装cxGrid吧。

#14


procedure DBGridExportData(DBGridName: TDBGrid); //DBGrid导入Excel
var
  myexcel: Variant;
  workbook: olevariant;
  worksheet: olevariant;
  i, j, n, t: Integer;
  SaveDialog: TSaveDialog;
  xlsFileName: string;
begin
  if not DBGridName.DataSource.DataSet.Active then Exit;
  SaveDialog := TSaveDialog.Create(Application);
  SaveDialog.DefaultExt := '.xls';
  SaveDialog.Filter := 'Excel文件|*.xls|所有文件|*.*';
  if SaveDialog.Execute then
  begin
    xlsFileName := SaveDialog.FileName;
    //xlsFileName := 'apws.xls';
    try
      try
        myexcel := createoleobject('excel.application'); //
        myexcel.application.workbooks.add;
        myexcel.caption := '批发市场导出数据';
        workbook := myexcel.application.workbooks[1];
        worksheet := workbook.worksheets.item[1];
      except
        showmessage('不能建立 EXCEL !' + #13#10 + '请检查是否已经安装了 excell.');
        abort;
        exit;
      end;
      i := 1;
      j := 1;
      for n := 0 to DBGridName.FieldCount - 1 do
      begin
        if DBGridName.Columns[n].Visible then
        begin
          worksheet.cells(i, j) := DBGridName.Columns[n].Title.Caption;
          j := j + 1;
        end;
      end;
      with DBGridName.DataSource.DataSet do
      begin
        First;
        while not Eof do
        begin
          inc(i);
          n := 0;
          for j := 0 to DBGridName.FieldCount - 1 do
          begin
            if DBGridName.Columns[j].Visible then
            begin
              t := j - n;
              if isNumericEx(fieldbyname(DBGridName.Fields[j].FieldName).AsString) then
                worksheet.cells[i, t + 1] := '''' + (fieldbyname(DBGridName.Fields[j].FieldName).AsString)
              else
                worksheet.cells[i, t + 1] := (fieldbyname(DBGridName.Fields[j].FieldName).AsString);
            end
            else
              inc(n);
          end;
          Next;
        end;
      end;
      if FileExists(xlsFileName) then
      begin
        if Application.MessageBox('文件已经存在!' + #13 + #10 + '是否确定进行替换?' + #13 + #10 + #13 + #10 +
          '若选择"取消",则将在当前目录中' + #13 + #10 +
          '生成名为apwstemp.xls的临时文件', '提示', MB_OKCANCEL +
          MB_ICONQUESTION + MB_SYSTEMMODAL) = IDOK then
        begin
          DeleteFile(PChar(xlsFileName));
          workbook.SaveAs(xlsFileName);
          workbook.Close;
          myexcel.Quit;
          myexcel := Unassigned;
        end
        else
        begin
          if FileExists(PChar(ExtractFileDir(xlsFileName) + '\' + 'apwstemp.xls')) then
          begin
            DeleteFile(PChar(ExtractFileDir(xlsFileName) + '\' + 'apwstemp.xls'));
          end;
          WorkBook.SaveAs(ExtractFileDir(xlsFileName) + '\' + 'apwstemp.xls');
          WorkBook.Close;
          myexcel.Quit;
          myexcel := Unassigned;
        end;
      end
      else
      begin
        WorkBook.SaveAs(xlsFileName);
        WorkBook.Close;
        myexcel.Quit;
        myexcel := Unassigned;
      end;
    except
      Application.MessageBox('不能正确操作Excel文件!' + #13 + #10 + #13 + #10 + '可能是該文件已被其他程序打开, 或系統错误',
        '警告', MB_OK + MB_ICONSTOP + MB_SYSTEMMODAL);
      WorkBook.Close;
      myexcel.Quit;
      myexcel := Unassigned;
    end;
  end;
end;

#15


如果不是有特殊的要求,就用第三方控件,很方便.

我有的就是dev express

#16


看6楼回复,不错例子

#17


引用 14 楼 gaojunling518 的回复:
procedure DBGridExportData(DBGridName: TDBGrid); //DBGrid导入Excel
var
  myexcel: Variant;
  workbook: olevariant;
  worksheet: olevariant;
  i, j, n, t: Integer;
  SaveDialog: TSaveDialog;
  xls……

楼上说的方法是对的>>>>>>>>>>>>>>>>>>>>>
我以前就是这样引用的>>>>>>>>>>>>>>>>>>>>>

#18


我曾经用过,好像是根据excel的格式写数据,当然只能写一个sheet,速度很快,用delphi提供的组件当数据很多时,超慢!!

#19


用文件流来写入excel,速度很快的,具体方法我忘了,你可以查查!!

#20


这贴子回有什么意思呢?一个月了,难道还没搞定。也不知道结贴

#21