我们在全部的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. 机器学习之Logistic 回归算法

    1 Logistic 回归算法的原理 1.1 需要的数学基础 我在看机器学习实战时对其中的代码非常费解,说好的利用偏导数求最值怎么代码中没有体现啊,就一个简单的式子:θ= θ - α Σ [( hθ( ...

  2. 在LINQ查询中LINQ之Group By的用法

    LINQ定义了大约40个查询操作符,如select.from.in.where.group 以及order by,借助于LINQ技术,我们可以使用一种类似SQL的语法来查询任何形式的数据.Linq有很 ...

  3. C#导出EXCEL没有网格线的解决方法

    今天在做项目时,通过流导出数据到Excel却不显示网格线,真是郁闷.上网查了好久才得一良方(注意<XML>标签中的代码): DataTable thisTable = DBHelper.G ...

  4. [转载] ZooKeeper实现分布式队列Queue

    转载自http://blog.fens.me/zookeeper-queue/ 让Hadoop跑在云端系列文章,介绍了如何整合虚拟化和Hadoop,让Hadoop集群跑在VPS虚拟主机上,通过云向用户 ...

  5. js 图片转换为base64 (2)

    <input type="file" id="testUpload"> <img src="" id="img& ...

  6. KingView 6.53漏洞学习研究

    类别:堆溢出 描述:此漏洞存在于KingView6.53软件的HistorySvr.exe进程中,这个软件服务程序在TCP 777端口监听时收到一个超长请求,导致堆缓冲区溢出从而执行任何代码. 参考资 ...

  7. 书写规范的javaScript

    书写可维护的代码 代码的维护,修改以及扩展都是需要时间和人力成本的,所以为了减少浪费不必要的成本,从一开始就要书写可维护的代码,这样给自己也给项目其他人提供便利. 书写可维护的代码意味着你的代码是: ...

  8. is 和==的区别

    Python中的对象包含三要素:id.type.value.其中id用来唯一标识一个对象,type标识对象的类型,value是对象的值.is判断的是a对象是否就是b对象,是通过id来判断的.==判断的 ...

  9. PE文件格式分析

    PE文件格式分析 PE 的意思是 Portable Executable(可移植的执行体).它是 Win32环境自身所带的执行文件格式.它的一些特性继承自Unix的Coff(common object ...

  10. java+jsp+sql server实现网页版四则运算.

    设计思路: 1需要的工具以及实现这个算法和代码的事先条件. (1)sql server里面建议一个叫t_result的表)(当然你起什么名字都可以),里面输入所需要的列名.id,firstnumber ...