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

办公软件
让表头自动填写当前月份和日期
紧急自救 Excel 受损文件急救六招
教你让Excel中人名显示更美观的技巧
随时都要玩 让纸牌游戏进驻Excel里
教你让Office Excel中人名显示更美观的技巧
妙用Excel把有规律的文本数据分列
复制Excel自定义菜单栏 换台电脑照样用
事半功倍 批量删除Excel空行
Excel工作表的复制与移动技巧
Excel中巧用样式列表快速实现文本换行
Excel高效数据校验的两种方法
Google电子表格Spreadsheets全面试用
用Excel计算个人所得税的四套方案
让你从菜鸟成为玩转Excel的高手
录入数据时让Excel自动插入当前时间
Excel2007中插入页眉和页脚超简单
给Excel表格设置边框的三项常用操作
单元格显神威 Excel操作应用技巧四则
快速找到所需要的Excel函数的小技巧
Excel快速导入文本文件技巧

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


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-11-01   浏览: 124 ::
收藏到网摘: 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)报表格式的选择

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