我们在全部的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数据。

导出Excel1 - 项目分解篇的更多相关文章

  1. [转]Android开源项目第二篇——工具库篇

    本文为那些不错的Android开源项目第二篇--开发工具库篇,主要介绍常用的开发库,包括依赖注入框架.图片缓存.网络相关.数据库ORM建模.Android公共库.Android 高版本向低版本兼容.多 ...

  2. Android开源项目第二篇——工具库篇

    本文为那些不错的Android开源项目第二篇——开发工具库篇,**主要介绍常用的开发库,包括依赖注入框架.图片缓存.网络相关.数据库ORM建模.Android公共库.Android 高版本向低版本兼容 ...

  3. Android开源项目第一篇——个性化控件(View)篇

    本文为那些不错的Android开源项目第一篇——个性化控件(View)篇,主要介绍Android上那些不错个性化的View,包括ListView.ActionBar.Menu.ViewPager.Ga ...

  4. Android开发UI之开源项目第一篇——个性化控件(View)篇

    原文:http://blog.csdn.net/java886o/article/details/24355907 本文为那些不错的Android开源项目第一篇——个性化控件(View)篇,主要介绍A ...

  5. 洗礼灵魂,修炼python(82)--全栈项目实战篇(10)—— 信用卡+商城项目(模拟京东淘宝)

    本次项目相当于对python基础做总结,常用语法,数组类型,函数,文本操作等等 本项目在博客园里其他开发者也做过,我是稍作修改来的,大体没变的 项目需求: 信用卡+商城: A.信用卡(类似白条/花呗) ...

  6. C# Xamarin移动开发项目实战篇

    一.课程介绍 在前面阿笨的<C# Xamarin移动开发基础进修篇>课程中,大家已经熟悉和了解了Xamarin移动App开发的基础知识和原理.本次分享课<C# Xamarin移动开发 ...

  7. 菜鸟教程之工具使用(七)——从GIt上导出Maven项目

    今天继续我们的工具教程,公司用Git作为版本控制工具,所以最近一直在跟Git打交道.也是一边学习一边使用,于是想做一些入门教程,一来自己总结一下,二来还能帮助一些刚刚接触Git的朋友.一举两得,何乐而 ...

  8. unity 代码有调整,重新导出 iOS 最烦的就是 覆盖导出后项目不能打开

    unity  代码有调整,重新导出 iOS 最烦的就是 覆盖导出后项目不能打开,原因是 editor 里面的脚本,破坏了 Unity-iPhone.xcodeproj 里面的结构,具体是什么原因,也不 ...

  9. 导出/打印项目数据报表需要设置IE浏览器

    导出/打印项目数据报表需要设置IE浏览器如下: 1.将本地服务器站点设置为可信站点, 2.通过点击网页上的工具→Internet选项→安全→自定义级别→把关于activeX控件和插件的选项都设置成启用 ...

随机推荐

  1. nginx的5个特点

    nginx的5个特点(2017/11/16 白杨整理) 1.动静分离 Nginx是一种轻量级,高性能,多进程的Web服务器,非常适合作为静态资源的服务器使用,而动态的访问操作可以使用稳定的Apache ...

  2. C#中split分隔字符串的应用

    .用单个字符来分隔:string str="aaajbbbjccc";string[] sArray=str.Split('j');foreach(string i in sArr ...

  3. 《天书夜读:从汇编语言到windows内核编程》三 练习反汇编C语言程序

    1) Debug版本算法反汇编,现有如下3×3矩阵相乘的程序: #define SIZE 3 int MyFunction(int a[SIZE][SIZE],int b[SIZE][SIZE],in ...

  4. [转载] Java并发编程:Lock

    转载自http://www.cnblogs.com/dolphin0520/p/3923167.html 以下是本文目录大纲: 一.synchronized的缺陷 二.java.util.concur ...

  5. 给GridControl中的某列添加图片

    要让GridControl的某列显示图片只需要数据源中有图片就可以正确显示 1.给DataSet添加一列,格式为image ds.Tables[].Columns.Add("SIGN&quo ...

  6. 如何实现 Service 伸缩?- 每天5分钟玩转 Docker 容器技术(97)

    上一节部署了只有一个副本的 Service,不过对于 web 服务,我们通常会运行多个实例.这样可以负载均衡,同时也能提供高可用. swarm 要实现这个目标非常简单,增加 service 的副本数就 ...

  7. Win32API起始处的mov edi, edi与用户空间InlineHook

    在x86平台上,无论是在调试器中跟到系统DLL中时,还是反汇编某个系统DLL时,经常会发现很多API的第一条汇编指令都是mov edi, edi.根据经验来讲,C函数的汇编形式,应该是首先push e ...

  8. Python3 下实现 Tencent AI 调用

    1.背景 a.鹅厂近期发布了自己的AI api,包括身份证ocr.名片ocr.文本分析等一堆API,因为前期项目用到图形OCR,遂实现试用了一下,发现准确率还不错,放出来给大家共享一下. b.基于py ...

  9. ORACLE 错误代码提示归集

    有时数据库出现问题,不是每次都有网络可查,所以把所有的ora系列的错误整理出来, 在最没有办法的时候,需要自己来解决,有了这些根据,问题会好办的.虽说对于数据库方面, DBA很强大,他们在遇到错误时, ...

  10. BST 解析 (二)height and deletion

    前面一章介绍了BST的结构和一些简单的基本功能,例如:insert,findMin,nextLarger等等.这一节主要讲解一些BST的delete node操作还有BST的height的分析以及一些 ...