版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、南京帆软软件公司 商务咨询电话:86-025-5186 2240 在 Delphi 编程中利用 Excel 实现动态报表0 引言随着计算机技术的不断普及 , 办公的数字化程度越来越高 , 出现了大量的计算机系统 , 如固定资产管理系统、 人事工资管理系统等等。 这其中存在大量的 MIS 系统。 MIS 系统的一个 重要特点是需要处理大量数据并形成报表。 由于行业或者其他一些原因 , 这些报表的格式种 类繁多 , 而且还有一些复杂报表。 这些报表的格式在开发期间可能都无法设定。 为了解决这 些问题 , 本文采用了表格功能强大的 Excel 作为报表模板 , 用户可以按照自己的要求设置报 表格式
2、, 程序运行时再根据用户的设置动态填入数据 , 从而实现动态报表功能。1 实现原理先由用户按照自己的格式生成 Excel 报表模板 , 系统读取模板文件 , 并把模板文件存入 数据库 , 保存用户输入的报表信息 , 如某一字段填入第几行第几列。 报表打印时 , 提取相应 的 Excel 文件 , 利用 Delphi 的 Excel 控件填入数据库的数据 , 实现动态报表功能。2 实现过程2. 1 定义数据表系统使用 MsSql Server2000数据库 , 定义两个表 , 一个是 MB, 用来存储报表基本信息和 Excel 文件 , 一个是 MB_Detail存放报表的详细信息 , 如对应字
3、段的行号和列号。表结构如下 :图 1 MB 表结构 图 2 MB _Detail表结构MB 表中 , “模板内容” 字段为 image 类型 , 用来存储 Excel 模板文件 , “记录类型”字段用 来表示是单张表格 (只打印一条记录 还是列表 (打印多条记录 ; MB Detail表中的列号数据 类型为 char, 对应 Excel 中的列号如 A 、 B 、 C 等。2. 2 保存和读取 Excel 模板2. 2. 1 保存 Excel 模板本系统将用户设置好的 Excel 报表模板存入数据库“模板内容”字段。由于本字段存储 的是 Excel 文件内容 , 需要采用特殊的存储方式。 本系
4、统使用 Delph i 的 TO leContainer 控件 , 与 Excel 文件建立连接 , 最后存入数据库。因此 , 先在模板设置界面上放置 TO leContainer控件 , 取名为 OExcel ,主要代码如下 :V ar Stream: TS tream; / /定义保存文件的流Beg inOExce.l C reateOb jectFromF ile( edtfile. Tex ,t Fa lse;OExce.l DoV erb( OExce.l Prim aryV erb;MB. FieldByName(模板名称 . As String : = ExtractFileNa
5、me(edtFile.Text; Stream: = MB. CreateB lobStream (MB. Fie ldByName( ' 模板内容 ', bmW rite ;南京帆软软件公司商务咨询电话:86-025-5186 2240 tryOExcel SaveToS tream(Stream;finallyStream. Free;OExcel DestroyObject;end;End;2. 2. 2 读取 Excel 模板当需要打印报表时 , 需要将相应的 Exce l模板从数据库中读出保存 , 并用满足要求的 数据填充 , 其中读出 Excel 并保存的代码如下
6、:With TSaveDialog. Create(self doBeginFileName : = trim(MB.FieldByN ame(模板名称 . AsString ; / /保存的模板的 名称Stream: = MB. CreateBlobStream (MB. Fie ldByName(模板内容 , bmRead;/ /建立数据库流tryOExce.l LoadFromS tream( Stream ; / /将数据库中的数据读入 O leConta iner OExce.l O ldStreamForm at: = true;/ /设置保存的格式不变OExce.l SaveA
7、sDocument( FileName;/ /将 Excel 模板文件保存到当前文件夹 fina llyS tream. Free;end;End2. 3 利用 TExcelApplication 控件实现报表输出2. 3. 1 存储报表信息上节中实现了 Excel 模板的存储与读取 , 实际上 , 在保存 Excel 模板的同时 , 还要往数据 库中存入相应的模板信息 , 如某一字段的值存入填入 Excel 表格中的行号和列号 , 是打印单 行记录还是多条记录等。具体生成报表信息的界面如图 3和图 4所示 :图 3所示是打印多条记录的情况。这种情况下 , 只要确定某一字段需要填入模板中的哪
8、一列 , 因此 , 行号不能输入。这种格式主要用于列表式报表。图 4所示是打印单条记录的情况 , 需要指出每个字段在 Excel 中的行号和列号。 这种格式 主要用于打印卡片式的报表。南京帆软软件公司 商务咨询电话:86-025-5186 2240 图 3 打印多条记录 图 4 打印单条记录2. 3. 2 报表输出报表输出需要用到 Delphi 的 TExcelApplication 控件。 TExcelApplication 控件是 Delphi 提供的操作 MS Office文档的控件之一 , 通过它 , 可以实现在 Delphi 程序中对 Excel 文档的 相关操作。 TExcelAp
9、plication 控件的主要方法有 :ExcelA: = TExcelApplication. Create(self; / /建立控件ExcelA. Connect; / /打开一个 Excel 应用程序ExcelA. Visible0 : = true; / /打开的 Excel 中的 Sheet1可见ExcelA. Workbooks. Open( F ileN ame, EmptyParam, , 0; / /打开文件名为 FileN ame 的 Excel 文件具体的输出代码如下 :Stream: = MB. CreateBlobStream (MB. FieldByName(模板
10、内容 , bmRead ;O. LoadFromStream( Stream ; / /从数据库中读出 Excel 模板O. SaveA sDocument( FileName; / /保存ExcelA : = TExcelApplication. Create( self;ExcelA.Connect;ExcelA.Visible0 : = true;ExcelA.Workbooks. Open( FileName, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, Empt
11、yParam, EmptyParam,EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, 0; / /打开ExcelWhile not DataSet Eof do / /DataSet为输出数据的表beginMB DETA IL. First;while not MB DETA IL. Eof dobeginif trim(MB DETA IL. FieldByName(列号 . AsString < > ''thenbegin tmpStr : = Trim ( DataSet FieldByN
12、ame( trim (MB DETA IL. FieldByNam南京帆软软件公司商务咨询电话:86-025-5186 2240 e(字段名 . As String . AsString ;row : = MB DETA IL. FieldByName(列号 . asString+ inttostr( RBegin ;ExcelA. Range row, row . Select;ExcelA. ActiveCell FormulaR1C1: = tmpstr;end;MB DETA IL. Next;end;Inc( RBegin ;DataSet Next;if not DataSet Eof thenExcelA. Range a + inttostr( RBegin , z + inttostr( RBegin . Insert( xlDown, 0 ; / /按模
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2022年大学轻工纺织食品专业大学物理下册期末考试试题A卷-含答案
- 石河子大学《中学历史课程标准与教材分析》2022-2023学年第一学期期末试卷
- 石河子大学《遥感数字图像处理》2023-2024学年第一学期期末试卷
- 一抹红的诗句
- 石河子大学《习近平总书记关于教育的重要论述研究》2023-2024学年第一学期期末试卷
- 石河子大学《生药学实验》2021-2022学年第一学期期末试卷
- 石河子大学《基础素描》2023-2024学年第一学期期末试卷
- 沈阳理工大学《专业创新课程-嵌入式计算机产品案例》2023-2024学年期末试卷
- 沈阳理工大学《信号与系统》2021-2022学年第一学期期末试卷
- 沈阳理工大学《人工智能实例与应用》2023-2024学年期末试卷
- 《春节的文化与习俗》课件
- 手机棋牌平台网络游戏商业计划书
- 学校体育与社区体育融合发展的研究
- 医疗机构高警示药品风险管理规范(2023版)
- 一年级体质健康数据
- 八年级物理(上)期中考试分析与教学反思
- 国家开放大学《财政与金融(农)》形考任务1-4参考答案
- 2023银行网点年度工作总结
- 工厂反骚扰虐待强迫歧视政策
- 计算机教室(微机室)学生上机使用记录
- FAI首件检验报告
评论
0/150
提交评论