Cell应用大全
更新时间:2024-03-05 12:37:01 阅读量: 综合文库 文档下载
- CELL应用推荐度:
- 相关推荐
华表Cell组件/插件使用大全
四川通信科研规划设计有限责任公司软研中心 叶建生
用友华表公司的Cell组件/插件从最初开发到现在已经时5年之久,用户已达到4000多,国产组件能达到如此的水平,不能不说他们付出了辛勤的劳动,取得了骄人的成绩。笔者使用Cell组件/插件技术开发已经有两年多的历史,从3.X用到现在的5.X,其间有一些心得和体会,不敢独享,特此贡献出来与Cell开发者共同研讨。
本文首先介绍Cell的一些基本使用方法,然后介绍这些年来笔者使用Cell的各种方法和一些建议。前面一部分是面向刚接触Cell的朋友的,非常简单,甚至远远比不上华表自带的Samples,之所以加上它是因为它是本文后面部分的基础。后面一部分谈了一些关于使用Cell的专题,它是笔者在多个项目开发过程中逐渐总结、摸索出来的。如果你觉得前面的部分太过浅显,可以直接跳到第二部分。
Cell从3.X到5.X,接口发生的变化非常大。一些属性的写法和用法少有相同。到笔者开始撰写本文为止,华表正在推广的Cell最新版本是5.1,因此,本文所指Cell组件/插件技术均针对此版本,文中的大部分源代码均基于Cell插件5.1.1031。如果你使用的是不同版本,请参阅帮助文档的相关部分。
1. Cell组件/插件的基本使用方法
1.1 Cell组件/插件的安装
使用Cell组件/插件(以下均简称Cell),第一步是得到Cell。华表的官方网址是www.cellsoft.cc,可以到上面去下载一个试用版,当然,如果你是正版用户,你一定已经得到该产品光盘、说明书和一张写有序列号的使用许可证。 第二步是安装Cell。运行下载的安装文件即可,不需要执行下列步骤。
另外一个方法是将Cell的几个ocx文件和dll文件拷贝到本机某目录下,然后在命令提示行中输入 regsvr32 CellCtrl5.ocx (Cell组件) 或 regsvr32 CellWeb5.ocx (Cell插件) 即可。 Cell的文件中,如果使用Cell组件,则必须将CellCtrl5.ocx、Chart10.dll和12个以H开头的Dll文件拷贝到本机可搜索路径下,使用Cell插件需将CellWeb5.ocx和Chart10w.dll拷贝到相应目录。另外有个文件RWXls.ocx是用来读写Excel文件的,如果你不需要这个功能,也可以没有这个文件。当然,你最好有Cell的帮助文件CellCtrl.chm,这样你查起Cell的属性、事件和方法时才不至于很费劲。
安装完毕,即可在各种开发工具中使用。
1.2 Cell组件/插件的简单使用
1.2.1 在Delphi/C++Builder中的使用方法
在Delphi/C++Builder中使用Cell,需要首先导入这个ActiveX控件。以Delphi6为例,在C++Builder中的使用方法相同。如下图所示。
执行Install后,会在ActiveX面板上看到CELL组件的图标。这时新建一个工程并新建一个窗体,就可以往上放Cell组件了。
你可以放一个按钮在窗体上,再放一些操作Cell的代码体验一下。例如:
Cell1.SetCols(10,0); Cell1.SetRows(10,0); Cell1.MergeCells(1,1,10,1); Cell1.SetCellAlign(1,1,0,36);
Cell1.S(1,1,0,’哈哈,我可以随心所欲调用Cell组件了!’); Cell1.D(1,2,0,256);
1.2.2 在JSP/ASP/ASPX/HTML中的使用方法
对于B/S结构的程序,要使用Cell插件。Cell插件的使用方法与Cell组件大致相同。需要注意的是它是一个ActiveX控件,运行在客户端,不能用服务器端代码来访问和调用。
为了使客户端在使用Cell插件时能自动下载并安装OCX,需要为Cell插件指定CODEBASE属性。如:
CLASSID=\CLSID:3F166327-8030-4881-8BD2-EA25350E574A\ CODEBASE=\cellweb5.cab\OBJECT>
cell.SetCols(10,0); cell.SetRows(10,0); cell.WndBkColor=16777215; cell.S(1,5,0,\中文字符\cell.D(2,6,0,255);
1.2.3 在DotNet中的使用方法
DotNet环境中使用Cell,要看应用程序的种类。如果是Windows应用程序,首先需要引入Cell控件。
在“工具箱”的某一种类(如“windows窗体”)中单击鼠标右键,选择“自定义工具箱”,弹出下图所示对话框:
在对话框中选中Cell50Control并单击确定,工具箱中就加上了Cell组件。
新建一个窗体并在窗体中加入Cell组件,即可在程序中调用(这里不再列出源代码)。 如果是Web应用,就是ASPX应用,直接使用1.2.2的方法。当然,也可以与使用Cell组件一样的方法把CellWeb5添加到你的Web窗体工具箱中。设计Web窗体时,可以直接将Cell插件拖放到窗体上。
2. Cell组件/插件使用的高级话题
2.1 使用Cell组件/插件查询数据库中的数据
Cell组件/插件(以下简称为Cell)提供了直接连接数据库查询数据的方法RSDefDBSet。它能连接数据库并查询数据。示例代码如下(Javascript):
var dbset = cell.RSDefDBSet(\Security Info=True;User
ID=sa;Initial Catalog=Northwind;Data Source=localhost\\\
if (dbset == -1) {
alert(\定义数据集失败\
}
return;
cell.RSLinkSet(1,1,0,dbset,1,10,10,3); cell.RSAccess(1,1,0,5); cell.RSDeleteSet(dbset);
这段代码的意图是定义数据集,并链接到表格区域,然后再展开数据(具体的方法参考请参见Cell插件的联机帮助)。
但是,通过这种方法查询数据时,由于连接字符串写在script中,安全性并且数据展现方式不够丰富,往往不能满足用户的要求。手工查询数据再展现到CELL中就成为必要的工作。本文不讨论如何在开发工具中连接数据库并查询数据。要将数据写入Cell中,只需要反复调用SetCellString和SetCellDouble(在Cell插件中可以使用S和D)即可。需要说明的是,当数据有多行时可能要插入多行,这时可以调用Cell的InsertRow方法,而它在插入一行时,会将上一行的格式应用为插入行的格式,这样就可以只设置一行的格式,在它后面插入的行都会使用相同的格式(包括字体、字号、颜色等等)。
2.2 用XML作为辅助模板
为每个报表写一段程序是很辛苦的事。我们可以写一个程序,通过它读取事先定义模板,并生成报表结果。这样,用户提出新的报表需求时,只需要新做一个模板即可,不需要改程序。
模板的设置方式可以有很多种。较为复杂的要求是需要记录每个单元格的格式整个表格的设置(如打印参数等),这时就需要将Cell文件保存下来作为模板,再辅以数据连接等配置文件。简单的方式可以使用XML文档作为辅助模板,通过分析XML来得到结果。
XML模板的定义方式也可以有很多种。可以在模板中记录单元格的格式、数据、公式等等。下面的例子只为说明问题,所以只记录了格式模板的位置(即首先需要打开哪个文件)、数据的位置(即该数据展现到表格中时的纵、横坐标位置)以及为了生成xml数据的字段标识。
这是xml模板的DTD定义:
xmlns CDATA #REQUIRED X (#PCDATA) #REQUIRED Y (#PCDATA) #REQUIRED Name (#PCDATA) #REQUIRED
这是作为例子的一个XML模板:
下图说明本例的结构及各元素之间的关系:
需要说明的是,以下代码可正常运行于Internet Explorer6.0,如果运行时出错,可能是IE版本太低的缘故。
对于客户端(即浏览器端)而言,当用户打开报表页面时,客户端xml数据岛到Web服务器端请求生成xml数据,得到数据后,通过Javascript对xml文档对象的处理,解析求得Cell模板的位置。然后在Cell插件中打开Cell模板,并遍历xml文档中的Datas节点,分别将每个数据填入相应的单元格。下面列出源代码的主要部分:
[XMLCell.html]
CLASSID=\CLSID:3F166327-8030-4881-8BD2-EA25350E574A\OBJECT>