CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Delphi >  数据库相关

如何将数据写入excel指定worksheet当中

楼主gardenyang(天高云淡)2003-06-02 12:35:19 在 Delphi / 数据库相关 提问

如题  
  最好能够按照quickreprot显示的格式写入excel,问了很久了,没有人回答! 问题点数:200、回复次数:4Top

1 楼langshuquan(抗日统一联盟-狼狼狼)回复于 2003-06-02 12:47:44 得分 100

//数据导出至excel  
  procedure   TDataModule_public.WriteExcel(AdsData:   TTable;   sName,   Title:   string);  
  var  
      ExcelApplication1:   TExcelApplication;  
      ExcelWorksheet1:   TExcelWorksheet;  
      ExcelWorkbook1:   TExcelWorkbook;  
      i,   j:   integer;  
      filename:   string;  
  begin  
      filename   :=   sName;  
      try  
          ExcelApplication1   :=   TExcelApplication.Create(Application);  
          ExcelWorksheet1   :=   TExcelWorksheet.Create(Application);  
          ExcelWorkbook1   :=   TExcelWorkbook.Create(Application);  
          ExcelApplication1.Connect;  
      except  
          Application.Messagebox('Excel   没有安装!',   'Hello',   MB_ICONERROR   +   mb_Ok);  
          Abort;  
      end;  
      try  
          ExcelApplication1.Workbooks.Add(EmptyParam,   0);  
          ExcelWorkbook1.ConnectTo(ExcelApplication1.Workbooks[1]);  
          ExcelWorksheet1.ConnectTo(ExcelWorkbook1.Worksheets[1]   as   _worksheet);  
          AdsData.First;  
          for   j   :=   0   to   AdsData.Fields.Count   -   1   do  
              begin  
                  ExcelWorksheet1.Cells.item[3,   j   +   1]   :=   AdsData.Fields[j].DisplayLabel;  
                  ExcelWorksheet1.Cells.item[3,   j   +   1].font.size   :=   '10';  
              end;  
          for   i   :=   4   to   AdsData.RecordCount   +   3   do  
              begin  
                  for   j   :=   0   to   AdsData.Fields.Count   -   1   do  
                      begin  
                          ExcelWorksheet1.Cells.item[i,   j   +   1]   :=  
                                  AdsData.Fields[j].Asstring;  
                          ExcelWorksheet1.Cells.item[i,   j   +   1].font.size   :=   '10';  
                      end;  
                  AdsData.Next;  
              end;  
          ExcelWorksheet1.Columns.AutoFit;  
          ExcelWorksheet1.Cells.item[1,   2]   :=   Title;  
          ExcelWorksheet1.Cells.Item[1,   2].font.size   :=   '14';  
          ExcelWorksheet1.SaveAs(filename);  
          Application.Messagebox(pchar('数据成功导出'   +   filename),   'Hello',  
              mb_Ok);  
      finally  
          ExcelApplication1.Disconnect;  
          ExcelApplication1.Quit;  
          ExcelApplication1.Free;  
          ExcelWorksheet1.Free;  
          ExcelWorkbook1.Free;  
      end;  
  end;  
   
  Top

2 楼newsofter(横空出世小霸王)回复于 2003-06-02 19:02:33 得分 100

我的程序根据DBGrid导出到Excel的,你可以参阅一下:  
  Procedure   TurnToExcel(TmpDBGrid:TDBGrid);  
  var  
      MyExcel:   Variant;  
      WorkBook:   OleVariant;  
      WorkSheet:   OleVariant;  
      i,j:integer;  
      xlsfilename   :string;  
      Savedialog1   :TSaveDialog;  
  begin  
      SaveDialog1   :=TSaveDialog.create(Application);  
      SaveDialog1.Filter   :=   'Excel文件(*.xls)|*.XLS';  
      if   savedialog1.Execute   then  
      if   savedialog1.FileName   <>''   then  
      begin  
          xlsfilename   :=savedialog1.FileName;  
      try  
        MyExcel:=CreateOleObject('Excel.Application');  
        MyExcel.Application.WorkBooks.Add;  
        MyExcel.Caption:='将数据导入到EXCEL表中';  
        MyExcel.Application.Visible:=false;  
        WorkBook:=MyExcel.Application.workbooks[1];  
        worksheet:=workbook.worksheets.item[1];  
        except  
            Application.MessageBox('EXCEL不存在!',App_caption,MB_ICONERROR+MB_OK);  
          Savedialog1.Free;  
          workBook.Saved   :=   True;  
          WorkBook.close;  
          MyExcel.Quit;//释放VARIANT变量  
          MyExcel:=Unassigned;  
        end;  
        i:=1;  
        Frm_progress   :=TFrm_progress.create(Application);//进度条窗体,用的是TGauge  
      Try  
          with   TmpDBGrid.DataSource.DataSet       do  
          begin  
              Open;  
              DisableControls;  
              with   Frm_progress.pp   do  
              begin  
                  minvalue   :=0;  
                  maxvalue   :=TmpDBGrid.Columns.Count*recordcount;  
                  progress   :=0;  
              end;  
              Frm_progress.label1.caption   :='正在导出到Excel...';  
              Frm_progress.Show;  
              Frm_progress.update;  
              for   j:=0   to   TmpDBGrid.Columns.Count-1   do  
              begin  
                  if   TmpDBGrid.Columns[j].Visible=true   then  
                    worksheet.cells[1,j+1]:=TmpDBGrid.Columns[j].Title.Caption;  
              end;  
              First;  
              while   not   Eof   do  
              begin  
                  inc(i);  
                  for   j:=0   to   TmpDBGrid.Columns.Count-1   do  
                  begin  
                      if   TmpDBGrid.Columns[j].Visible=true   then  
                      begin  
                          worksheet.cells[i,j+1].NumberFormatLocal   :='@';  
                          worksheet.cells[i,j+1]:=TmpDBGrid.Columns[j].Field.AsString   ;  
                          Frm_progress.pp.progress   :=Frm_progress.pp.progress+1;  
                      end;  
                  end;  
                  next;  
              end;  
              EnableControls;  
          end;  
          WorkBook.saveas(XlsFileName);  
          Frm_progress.pp.progress   :=TmpDBGrid.Columns.Count*TmpDBGrid.DataSource.DataSet.RecordCount;  
          Application.MessageBox('导出到Excel成功!','查看数据库结构',MB_ICONINFORMATION+MB_OK);  
          Frm_progress.Free;  
          MyExcel.Quit;  
          MyExcel   :=   Unassigned;  
          Savedialog1.Free;  
      except  
          Application.MessageBox('导出到Excel失败!','查看数据库结构',MB_ICONWARNING+MB_OK);  
          workBook.Saved   :=   True;  
          WorkBook.close;  
          MyExcel.Quit;//释放VARIANT变量  
          MyExcel:=Unassigned;  
          Frm_progress.Free;  
          Savedialog1.Free;          
      end;  
      end;  
   
  end;Top

3 楼things(Loving You)回复于 2003-06-02 20:09:03 得分 0

upTop

4 楼whitetiger8(键盘未敲坏,基本功未练成)回复于 2003-06-02 20:23:01 得分 0

我不会啊。关注Top

相关问题

  • 如何用ASP将数据写入Excel指定单元格?
  • 用什么语句往新建的EXCEL类型的OLE控件中的指定位置写入指定数据?
  • ActiveReport写入Excel
  • 在BCB中如何将数据写入指定目录下的指定的EXCEL文件中的指定的工作薄中??
  • Excel问题:复制当前的WorkSheet到指定的WorkSheet之后
  • php5写入excel问题
  • 读取指定地点的一个Excel文件,然后将其中的信息写入SQL Server...请教关于Data Provider
  • 关于二进制的覆盖写入到指定地址!
  • 关于指定地址写入数据的问题
  • fwrite——如何在指定位置写入及结束

关键词

  • excel
  • 数据
  • application
  • tmpdbgrid
  • myexcel
  • progress
  • worksheet
  • adsdata
  • workbook
  • frm

得分解答快速导航

  • 帖主:gardenyang
  • langshuquan
  • newsofter

相关链接

  • Delphi类图书
  • Delphi类源码下载
  • Delphi控件下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo