当前位置: 首页 > 图文教程 > 工具软件 > 办公软件 > Excel 2000:用Delphi自动生成报表

办公软件
实用技巧:Word实用技巧八则
巧在WORD表格中行列轻松对调
快马加鞭,用快捷键设定文字字号
WORD中巧妙让超长文档自动缩页
安心办公 多个Office经典故障解决方法
暴强绝技!用Word收看网络电视
如何使用WORD的索引功能
Word启动参数简介
利用“书籍折页”轻松制作小册子(学不会包赔精神损失)
页眉随意放
关于同一文档内WORD超级链接的问题
如何更改word默认字体大小及格式
七种武器 Office Word文档隐私保护必学七招
如何在一个单元格中输入多行数据
快速地修改 在Word中巧妙改文字错误
巧取网页中无法选中的文字
在word中实现表格的行列转置
微软Office Word XP快速更改单引号
遭遇Office Word文档杀手
双键鼠标实现Word自动翻页

办公软件 中的 Excel 2000:用Delphi自动生成报表


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-11-01   浏览: 87 ::
收藏到网摘: n/a

 摘 要:Excel是当前最流行的数据报表制作工具。本文介绍如何使用Delphi来控制Excel完成数据库与报表之间的数据交换,讨论了报表制作工程中的一些细节性问题。

  关键字:Delphi,Excel,报表

  引言

  
  数据报表作为企事业单位上报和下达的重要信息载体,随着信息化建设的不断推进,在实际的工作中得到了前所未有的应用。因此,数据报表已经成为管理信息系统中重要的一项功能,并且,由于数据的多样性和统计信息的增加,数据报表的系统实现变得越来越复杂。

  Delphi是一个高效的可视化数据库管理信息系统开发工具,.但是Delphi开发环境中提供的报表控件在制作复杂报表时显得不够理想,不管是以前版本提供的Quick Report控件组,还是Delphi 7提供的Rave控件组,都不能让用户对生成的报表进行改动,且程序控制很难实现。Excel作为现代办公常用的电子表格制作工具,以它的易操作性和实用性,得到了各行业办公人员的青睐。本文根据实际应用实践,介绍利用Delphi编程控制Excel生成报表的各种方法。

  Delphi控制Excel的方法

  1 创建Excel文件

  要在Delphi中控制Excel,就必须用到OLE自动化。现在一般采用OLE2来创建OLE对象,当激活一个OLE对象时,服务器程序仅在容器程序内部激活,这就是所谓的“就地激活”(in-place activation)。

  创建Excel文件时,先创建一个OLE对象,然后在对象中建立工作表worksheet,如函数createExcel所示:

  function createExcel:variant;

  var

  v:variant;

  sheet:variant;

  begin

  v:=createoleobject('Excel.Application');//创建OLE对象

  v.visible:=true;

  v.workbooks.add(-4167); //添加工作表

  v.workbooks.sheets.name:='test';

  sheet:=v.workbooks.sheets['test'];

  return v;

  end;

  2 数据表格控制

  Excel表格的控制,主要包括数据的导入、修改;单元格的合并、边框的控制;表格的复制、粘贴等。当报表格式一定的情况下,表格的复制、粘贴显得尤为重要,这样,可以先制作一个文件模板,然后按照实际需要输出多页报表即可。

  (1)数据的导入(importData)

  procedure importData;

  var

  I,j:integer;

  v:variant;

  begin

  v:=createExcel; //创建Excel文件test

  for I:=0 to maxcolumn do

  begin

  for j:=0 to maxrow do

  v.workbooks.sheets.cells[I,j]:=I*j; //导入数据

  end;

  end;


  (2)单元格的合并、边框的控制(lineStylecontrol)

  单元格的合并,是在选定合并范围的情况下进行的。边框控制可以操作边框线条的是否显示。其他方式的控制,可以仿照下面过程进行。

  procedure lineStylecontrol;

  var

  v,sheet,range:variant;

  begin

  v:=createExecl;

  sheet:= v.workbooks.sheets;

  range:=sheet.range[sheet.cells[1,1],sheet.cells[39,30]];//选定表格

  range.select;

  range.merge; //合并单元格

  range.borders.linestyle:=xlcontinuous; //置边框线可见

  range.font.size:=9; //改变表格内文本字体大小

  end;

 

 (3)表格的复制与粘贴(copyandPaste)

  procedure copyandPaste;

  var

  v,sheet,range:variant;

  begin

  v:=createExecl;

  sheet:= v.workbooks.sheets;

  range:=sheet.range[sheet.cells[1,1],sheet.cells[39,30]];

  range.select; //选定要复制的表格

  range.copy; //复制选定的表格

  sheet.range[sheet.cells[40,1],sheet.cells[40,1]].select; //选择要粘贴的位置

  sheet.paste; //粘贴表格

  end;

  3 文件的保存

  文件保存是在创建文件的基础上进行的,过程saveFile说明了文件保存过程中应该注意的问题:

  procedure saveFile;

  var

  sheet,v:variant;

  begin

  v:=createExcel;

  if savedialog.execute then

  begin

  v.workbooks.saveas(savedialog.FileName);//保存文件

  v.workbooks.close; //关闭工作表

  v.quit; //关闭Excel

  v := unassigned;

  end;

  end;

  报表制作应注意的问题

  (1)报表格式的选择

  报表格式的选择对信息系统报表的实现方法起着决定