zoukankan      html  css  js  c++  java
  • 导出Excel1

            我们在全部的MIS系统(信息管理系统)中都能见到他。所以我们把这个通用功能提出来。


           项目名称:车辆信息管理系统(中石化石炼)

           项目负责人:xiaobin

           项目时间:2006.12 - 2007.2


          Excel功能模块:


         单击事件(Event):

         procedure EXCELE1Click(Sender: TObject);


    procedure TfrmMain.EXCELE1Click(Sender: TObject);
    var
     colnum,slnum,i:integer;
     headstr:string;
    begin
      if DataSource_carNum.DataSet.RecordCount=0 then Exit;
      //
      DataModule_ado.ADODataSet_Excel.Close;
      DataModule_ado.ADODataSet_Excel.Open;
      //
      TreeView1.Items.Clear;
      Memo2.Lines.Clear ;
      colnum:=DataModule_ado.ADODataSet_Excel.FieldDefList.Count;
      Maxnum :=1;
      //slnum:=0;
      for i:=1 to colnum do
      begin
       slnum:=1;
       headstr:=DataModule_ado.ADODataSet_Excel.FieldDefList[i-1].Name;
       while Pos('|',headstr) > 0 do
         begin
          Delete(headstr, 1, Pos('|', headstr));
          slnum:=slnum+1;
         end;
        if slNum>Maxnum then Maxnum:=slNum;
      end;
      treeADO(DataModule_ado.ADODataSet_Excel,TreeView1);
      try
        myexcel := createoleobject('excel.application');
        myexcel.application.workbooks.add;
        myexcel.caption:=pnlLog.Caption;
        myexcel.application.visible:=true;
        workbook:=myexcel.application.workbooks[1];
        worksheet:=workbook.worksheets.item[1];
      except
        application.MessageBox('没有发现Excel,请安装office!','提示信息',
                                                            MB_OK + MB_ICONINFORMATION);
        exit;
      end;
      WriteheaderADO(DataModule_ado.ADODataSet_Excel,pnlLog.Caption,9,TreeView1);
      WriteExcelData(DataModule_ado.ADODataSet_Excel);
      //页脚设置
      myexcel.activesheet.pagesetup.centerfooter:='第&P页';
      //
      worksheet.saveAs(excelDir+''+dateTimeStrFull+'lcbzsx.xls');
      //workbook.close;
      //myexcel.quit;
      //add logmemo
      frame1.addMemoLog(EXCELE1.Caption);
    end;

            代码凝视:

            第6行:假设DataSource(Delphi控件)当前无数据,则退出此事件。

            第8行:DataModule_ado为DataModule(Delphi控件 - 数据容器)

            第13行:依据ADODataSet_Excel(Delphi控件 - ADODataSet)字段列表。得到Excel列数。

            第20-24行:多表头层数计算。

                                  大部分我们用:父表头|子表头|孙表头,来表示一个多表头数据。

         第27行:运行treeADO子过程,把表头的层次关系用TreeView(Delphi控件)表示出来。

            第28-39行:初始化Excel对象。

                                   myExcel:variant;                    //电子表格对象

                                   workbook:olevariant;           //电子表格部分

                                   worksheet:olevariant;          //电子表格工作簿

            第40行:运行WriteheaderADO子过程。写Excel表头。

            第41行:运行WriteExcelData子过程, 写Excel数据。



  • 相关阅读:
    我的2015羊年总结
    谈对象 MVC 和 多端
    自建博客随想录
    梦说1+1等于多少
    多媒体文件格式全解说(下)--图片
    多媒体文件格式全解说(上)--音视频
    做一个“代码模块”交易的网站
    写个屏蔽百度搜索广告的Chrome插件
    Go 系列教程 —— 5. 常量
    Go 系列教程 —— 4. 类型
  • 原文地址:https://www.cnblogs.com/zsychanpin/p/7077964.html
Copyright © 2011-2022 走看看