导出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数据。
导出Excel1 - 项目分解篇的更多相关文章
- [转]Android开源项目第二篇——工具库篇
本文为那些不错的Android开源项目第二篇--开发工具库篇,主要介绍常用的开发库,包括依赖注入框架.图片缓存.网络相关.数据库ORM建模.Android公共库.Android 高版本向低版本兼容.多 ...
- Android开源项目第二篇——工具库篇
本文为那些不错的Android开源项目第二篇——开发工具库篇,**主要介绍常用的开发库,包括依赖注入框架.图片缓存.网络相关.数据库ORM建模.Android公共库.Android 高版本向低版本兼容 ...
- Android开源项目第一篇——个性化控件(View)篇
本文为那些不错的Android开源项目第一篇——个性化控件(View)篇,主要介绍Android上那些不错个性化的View,包括ListView.ActionBar.Menu.ViewPager.Ga ...
- Android开发UI之开源项目第一篇——个性化控件(View)篇
原文:http://blog.csdn.net/java886o/article/details/24355907 本文为那些不错的Android开源项目第一篇——个性化控件(View)篇,主要介绍A ...
- 洗礼灵魂,修炼python(82)--全栈项目实战篇(10)—— 信用卡+商城项目(模拟京东淘宝)
本次项目相当于对python基础做总结,常用语法,数组类型,函数,文本操作等等 本项目在博客园里其他开发者也做过,我是稍作修改来的,大体没变的 项目需求: 信用卡+商城: A.信用卡(类似白条/花呗) ...
- C# Xamarin移动开发项目实战篇
一.课程介绍 在前面阿笨的<C# Xamarin移动开发基础进修篇>课程中,大家已经熟悉和了解了Xamarin移动App开发的基础知识和原理.本次分享课<C# Xamarin移动开发 ...
- 菜鸟教程之工具使用(七)——从GIt上导出Maven项目
今天继续我们的工具教程,公司用Git作为版本控制工具,所以最近一直在跟Git打交道.也是一边学习一边使用,于是想做一些入门教程,一来自己总结一下,二来还能帮助一些刚刚接触Git的朋友.一举两得,何乐而 ...
- unity 代码有调整,重新导出 iOS 最烦的就是 覆盖导出后项目不能打开
unity 代码有调整,重新导出 iOS 最烦的就是 覆盖导出后项目不能打开,原因是 editor 里面的脚本,破坏了 Unity-iPhone.xcodeproj 里面的结构,具体是什么原因,也不 ...
- 导出/打印项目数据报表需要设置IE浏览器
导出/打印项目数据报表需要设置IE浏览器如下: 1.将本地服务器站点设置为可信站点, 2.通过点击网页上的工具→Internet选项→安全→自定义级别→把关于activeX控件和插件的选项都设置成启用 ...
随机推荐
- 微信公众平台快速开发框架 For Core 2.0 beta –JCSoft.WX.Core 5.2.0 beta发布
写在前面 最近比较忙,都没有好好维护博客,今天拿个半成品来交代吧. 记不清上次关于微信公众号快速开发框架(简称JCWX)的更新是什么时候了,自从更新到支持.Net Framework 4.0以后基本上 ...
- ThinkPHP模版验证要注意的地方
Model页面 <?php class LoginModel extends Model { //protected $tableName = 'userinfo'; //表名和model不一致 ...
- JavaScript系列----数据类型以及传值和传引用
1.简单数据类型 在JavaScript中简单数据类型分为5种.分别为 Undefined, Null,Boolean,Number,String. Undefined类型Undefined类型只有一 ...
- HDU3045 Picnic Cows (斜率DP优化)(数形结合)
转自PomeCat: "DP的斜率优化--对不必要的状态量进行抛弃,对不优的状态量进行搁置,使得在常数时间内找到最优解成为可能.斜率优化依靠的是数形结合的思想,通过将每个阶段和状态的答案反映 ...
- layui + jfinal 实现上传下载
1.需要把jfinal的环境配置好 2.导入相关的库文件 layui的库文件 就是这两个文件需要导入到自己的页面 注意:jfinal总会把路径拦截,所以需要静态文件处理.本人不太懂.就网上找了下,说w ...
- jQuery+ajax实现局部刷新
在项目中,经常会用到ajax,比如实现局部刷新,比如需要前后端交互等,这里呢分享局部刷新的两种方法,主要用的是ajax里面的.load(),其他高级方法的使用以后再做详细笔记. 第一种: 当某几个页面 ...
- 为什么选择使用Sass而不是Less?
这篇文章主要解答以下几个问题,供前端开发者的新手参考. 1.什么是Sass和Less? 2.为什么要使用CSS预处理器? 3.Sass和Less的比较 4.为什么选择使用Sass而不是Less? 什么 ...
- B-树&B+树以及其在数据库中的应用
B-树&B+树以及其在数据库中的应用 1 .B-树定义 B-树是一种平衡的多路查找树,它在文件系统中很有用. 定义:一棵m 阶的B-树,或者为空树,或为满足下列特性的m 叉树:⑴树中每个结点至 ...
- Cordic算法——圆周系统之向量模式
旋转模式用来解决三角函数,实现极坐标到直角坐标的转换,基础理论请参考Cordic算法--圆周系统之旋转模式.那么,向量模式则用来解决反三角函数的问题,体现的应用主要是直角坐标向极坐标转换,即已知一点的 ...
- 2718:晶晶赴约会-poj
总时间限制: 1000ms 内存限制: 65536kB 描述 晶晶的朋友贝贝约晶晶下周一起去看展览,但晶晶每周的1.3.5有课必须上课,请帮晶晶判断她能否接受贝贝的邀请,如果能输出YES:如果不能 ...