EtCell组件功能简介

昂利万报表套件是济南昂利万软件开发有限公司精心设计开发的自主软件产品，主要包括制表平台、 [image] EtCell组件、 [image] EtCell插件等一系列的COM组件。 EtCell组件及插件具有大致相同的开发接口，如本文档未特别指定，则该接口两种软件皆适用。

EtCell组件是一种图表处理 ActiveX组件，是为商业软件解决人机交互接口，屏幕输出，打印输出等问题的最理想的解决方案。采用 [image] EtCell组件可以极大的减少软件开发工作量，改善软件人机界面，提高软件质量。非专业开发人员采用 [image] EtCell组件将可以开发出专业的应用软件，而专业的开发人员采用 [image] EtCell组件更是如虎添翼，可以更快更好进行应用软件开发。

EtCell组件的接口均经过精心设计，适用于VBScript等脚本开发语言，其代码也经过多次提炼，尽量减小其大小，以适应软件在Interenet环境中分发。

此文档只是SDK开发文档，有关 [image] EtCell组件更详细的开发技巧，可以到网站: http://www.etcell.com/ 上查询，非常感谢您对我们的支持！

支持的报表功能如下：
1、支持主从报表
2、交叉报表
3、支持分组报表：小计、汇总自由设置
4、支持的套打报表，让套打简单灵活
5、支持分组报表的每组打印控制
6、支持连续打印，解决了票据打印的难题
7、支持自定义报表
8、支持MIS开发的各种开发工具：如VC、VB、Delphi、C++Bulider、InterDev
9、支持WEB开发，FrontPage、InterDev、ASP.NEt、C#
10、EtCell内置支持VBScript脚本包括事件
11、在WEB上支持VBScript、JavaScript脚本
12、支持URL连接
13、支持的WEB服务器：NT的WEB服务器、Linux、Unix、WebLogic、TOMCAT、IIS；
14、在MIS开发中直接支持数据库，让程序开发更方便快捷
..............

如果有什么问题可以在BBS上张贴:
MIS开发用户BBS:
http://www.etcell.com/Cgi-Bin/
WEB开发用户BBS:
http://www.etcell.com/Cgi-Bin/

济南昂利万软件开发有限公司

联系Email: zhaoguangbao@163.com

联系电话：(0531)69952003


昂利万制表平台和EtCell组件之间的关系

昂利万制表平台WinTable和EtCell组件之间的关系：

  1. WinTable制作的报表在EtCell组件、EtCell插件中可以利用；
  2. EtCell组件、EtCell插件可以利用脚本和公式动态制作报表文件；
  3. 开发工具(如：VC、VB、CB、Delphi、Frontpage、InterDev、ASP.NET等)可以利用EtCell组件动态制作报表；

EtCell WEB插件适应的开发平台：
EtCell插件可以支持各种操作系统下各种WEB服务器，例如：IIS、Apache、Tomcat、WebLogic等；
同时可以支持各种开发语言，如：ASP、JSP、PHP;网站有在线演示的报表例子和源吗下载！
Http://www.etcell.com/Samples/


如何分发EtCell

1.申请注册为正版用户

  • 在需要用EtCell做开发的机器上，选择WinTable制表设计器中的 “文件”菜单,再选择“申请注册正版”，然后填写有关信息并保存为License.lic文件；
  • 把生成的注册License.lic文件发送到zhaoguangbao@163.net信箱中，等待正版的License.lic和正版的EtCell控件/插件及其开发文档；
  • 济南昂利万软件有限公司进过验证合格后，会发给你正版的License.lic和开发包；
  • 把正版的license.lic文件拷贝到你安装的目录下，那么用WinTable制作的报表就可以对外发布了；或者通过发给你的安装程序重新安装

2.分发EtCell需要的文件(MIS方式)

分发EtCell需要的文件在EtCell的安装目录下：

  • EtCell.ocx(EtCell主程序)

将这些文件复制到目标机器的Windows系统目录或你的软件目录中，并在您的安装程序中运行如下命令注册EtCell∶

Regsvr32 yourpath\EtCell.ocx (regsvr32.exe 在Windows95/98，WindowsNT中皆有)。

应用程序打包时，安装程序可以自动注册EtCell.ocx控件；

3.分发EtCell需要的文件(WEB方式)

(1)把EtCell.ocx或者压缩的EtCell.cab文件拷贝到Web服务器的相应目录下；

(2)把开发好的Web程序和Et报表也拷贝到服务器的响应目录下；

(3)等(1)、(2)做完后，那么就可以在IE上看到你的应用了；

备注：

  • 客户端不需要人为的每个机器都安装注册EtCell.ocx，EtCell插件会自动提示下载安装或者升级；
  • Web服务器端不需要注册EtCell.ocx插件；

申明：

用测试版制作的报表，不能用于分发；需要分发时需要申请正版后方可分发；


EtCell的开发环境和应用

1.EtCell支持的开发工具

EtCell是个标准的ActiveX控件，可以在任何支持ActiveX的开发工具上使用，支持的开发工具如下：

  • Visual C++
  • Visual Basic
  • Borland Delphi
  • Borland C++Builder
  • FrontPage
  • InterDev
  • ASP.NET
  • Microsoft的.NET系列产品
  • Power Builder
  • IE浏览器

2.应用到传统的MIS开发

EtCell可以和各种支持ActiveX的开发工具紧密结合实现报表方面的所有功能；如：报表的录入、报表打印；

  • 可以实现报表的录入功能；
  • 可以实现报表的查询、统计；
  • 可以利用EtCell做自定义报表系统；
  • 实现报表的打印；
  • 实现单据的套打；
  • 有丰富的方法和事件可以和开放工具中其他控件进行数据交互；
  • 支持的开发工具有：VC、VB、Delphi、CB、PB、.NET产品等等；
  • 等等；

3.应用到WEB方式开发

EtCell插件对Internet做了很大的支持，如支持Http、XML、和远程开发文档等等；

  • EtCell支持的浏览器有：IE5、IE5.5、IE6,在IE5以上版本可以正常运行；
  • EtCell运行平台要求：Win98以上机器都能正常运行
  • EtCell插件支持VBScript脚本及其事件；
  • 可以调用Web页面中定义的脚本函数(VBScrpt脚本函数、JScript脚本函数)，这样就可以和Html页面进行非常方便的双向交互；
  • 支持Http协议的所有方法，可以方便的和服务器的程序进行双向交互；
  • 支持的开发工具有：Frontpage、InterDev、ASP.NET、C#、IE浏览器、.NET产品等等；
  • EtCell插件支持的后台服务器程序：ASP程序、PHP程序、JAVA程序、Perl程序等等；
  • EtCell插件和Web服务器无关，只和浏览器有关，是一个客户端程序；只要浏览器支持ActiveX，那么EtCell就可以正常运行；


Property

EtCell控件属性一览表说明

属性：

BSTR FileName

含义：表示当前的报表文件

举例如下：

'打开本地报表
EtCell1.FileName = "c:\昂利万报表\Samples\111.eT"

'打开网络报表
EtCell1.FileName = "http://www.etcell.com/Samples/CaiWu/CaiGouDingDan.eT"

'打开WEB报表，和页面的html文件处于相同的目录下
EtCell1.FileName = "CaiGouDingDan.eT"

'取得当前的报表文件名
filepath = EtCell1.FileName

备注：FileName属性和OpenDoc()方法具有相同的功能

BSTR Script

含义：

报表的初始化脚本，如果RunStartScript=True时，EtCell控件一打开报表时就先执行此代码

boolean CanSizeRow

是否可以改变行的高度

例如： EtCell1.CanSizeRow = True

EtCell1.CanSizeRow = False

bSizeRow = EtCell1.CanSizeRow

boolean CanSizeCol

是否可以改变列的宽度

例如： EtCell1.CanSizeCol = True

EtCell1.CanSizeCol = False

bSizeCol = EtCell1.CanSizeCol

boolean Ruler

当前报表是否显示标尺；
如果显示标尺，那么就可以通过鼠标调整行的高度、列的宽度；
如果不显示标尺，那么不能通过鼠标调整行的高度、列的宽度；

获得方法： ruler = EtCell1.Ruler
设置方法： EtCell1.Ruler = True

short Rows

当前报表总的行数；

获得方法： rows = EtCell1.Rows
设置方法： EtCell1.Rows = 100

short Cols

当前报表总的列数；

获得方法： cols = EtCell1.Cols
设置方法： EtCell1.Cols = 10

上面的两个属性组合起来和CreateTable()函数功能相同：

例如：

创建一个20行10列的报表，方法如下：

(1) EtCell1.Rows = 20

EtCell1.Cols = 10

(2) EtCell1.CratetTable 20，10

short NotScrollRows

当前报表固定的行数，也就是不滚动行数；

获得方法： rows = EtCell1.NotScrollRows
设置方法： EtCell1.NotScrollRows= 3
表示1,2,3行为不可滚动的行，也就是上面3行是固定不动的
打印的时候，也将会在每页中出现；

short NotScrollCols

当前报表固定的列数，也就是不滚动列数；

boolean PrintEtCellBackColor

功能描述：

是否打印报表的背景颜色

boolean PrintCellBackColor

功能描述：

是否打印单元的背景颜色

boolean FixedCellSelect

功能描述：

固定单元格是否可以选择，如果FixedCellSelect = True，那么表示可以选择固定单元格

如果FixedCellSelect = False，那么表示不能选择固定单元格

默认情况下，不能选择固定单元格

boolean MultiSelect

功能描述：

是否可以在EtCell控件中进行多个选择；

如果MultiSelect = True，表示可以选择多个单元格

如果MultiSelect = False，表示不可以选择多个单元格

BSTR PrintHeaderText

功能描述：

打印的页眉内容

boolean PrintHeaderLine

功能描述：

打印的页眉内容下面是否打印一条横线

BSTR PrintFooterText

功能描述：

打印的页脚内容

boolean PrintFooterLine

功能描述：

打印的页脚内容上面是否打印一条横线

boolean PrintPageNo

功能描述：

是否打印页号 如： 第2/20页

boolean PrintDirectH

功能描述：

设置打印方向 ，默认是PrintDirectH=False 表示纵向打印

  1. PrintDirectH=True 表示横向打印
  2. PrintDirectH=False 表示纵向打印

boolean PrintFullPage

功能描述：

打印时是否根据报表的宽度适应整张纸大小 ，默认：PrintFullPage=False 不充满整张纸

备注：此属性在打印时能自动进行放大或者缩小

BSTR ConnectionString

连接数据库的连接串，和ADO的连结串完全相同;

编号：10

BSTR DatabaseTableName

连接数据库的SQL语句：

编号：11

boolean DatabaseActive

激活ADO数据库，让ADO数据库和ET数据集进行绑定，产生动态报表；

编号：12

备注：
(1)在利用ConnectionString，DatabaseTableName，DatabaseActive这三个属性进行数据库连结时，需要首先在报表式样中定义ET数据集和真正的数据库进行字段绑定工作，这样EtCell就可以自动处理数据库的所有内容了！
(2)这三个属性是在C/S下的MIS开发中应用的属性，要是开发B/S的WEB应用，EtCell提供了XML的数据绑定方法；

boolean Border3D

当前报表是否具有3D显示效果

获得方法： 3d = EtCell1.Border3D
设置方法： EtCell1.Border3D = True

boolean RunStartScript

含义：

设置EtCell控件是否运行初始化脚本，如果RunStartScript=True则执行初始化脚本

boolean ReadOnly

当前报表是否具有只读属性，如果只读，那么整个报表将不能编辑；
默认方式不是只读方式，是可以编辑的！

获得方法： reakonly = EtCell1.ReadOnly
设置方法： EtCell1.ReadOnly = True

BSTR DefaultLibFileName

含义：表示自定义函数的缺省库文件，所有的自定义函数都在此库文件中，运行时动态装入

short FocusCellShape

此属性描述具有焦点的单元格的形状；

默认情况下=0；

备注：

对FocusCellShape进行了扩充：

高位字节表示用户按会车后移到到下一个单元格的习惯；

当 高位字节为 1时，表示硬性的按照行习惯；FocusCellShape = 256

当 高位字节为 2时，表示硬性的按照列习惯；FocusCellShape = 257


Alias

EtCell控件方法说明

通过单元格别名存取单元方法

别名管理方法：

boolean AddCellAlias(LPCTSTR strRowCol, LPCTSTR strCellAliasName, LPCTSTR strAliasDemo)

入口参数：

  • strRowCol 单元的名称表示，如："D3","G4","A5"
  • strCellAliasName 要增加的单元别名，如："Name"
  • strAliasDemo 增加的单元别名的含义，如："名字"

函数返回：

  • True 函数执行成功
  • False 函数执行失败

功能描述：

在EtCell控件中增加单元的别名，一旦别名增加成功，对单元的操作就可以通过别名进行简单操作，便于程序控制报表；

相关函数：

编号：107

boolean EditCellAlias(LPCTSTR strCellAliasName, LPCTSTR strNewCellAliasName)

入口参数：

  • strCellAliasName 单元别名(已经存在）如："Name"
  • strNewCellAliasName 单元更新后的别名，如："StudentName"

函数返回：

  • True 函数执行成功
  • False 函数执行失败

功能描述：

修改单元的别名，如果要修改的单元别名预先不存在，那么就增加一个新的别名；

相关函数：

编号：116

boolean DeleteCellAlias(LPCTSTR strCellAliasName)

入口参数：

  • strCellAliasName 要删除的单元别名，如："Name"

函数返回：

  • True 函数执行成功
  • False 函数执行失败

功能描述：

删除已经存在的单元别名，一旦删除成功，就不能再对此单元进行别名操作了

相关函数：

编号：109

别名存取方法：

BSTR GetCellAlias(short row, short col)

入口参数：

  • row 行
  • col 列

函数返回：

函数返回单元别名的表示法字符串，如："Name","Age"

功能描述：

1、函数返回单元别名的表示法字符串，如："Name","Age"

2、空串，表示单元没有别名

相关函数：

编号：108

boolean SetAliasCell(LPCTSTR sCellAlias, LPCTSTR sCellValue)

入口参数：

  • sCellAlias 单元的别名，如："Name"
  • sCellValue 单元的字符串数值

函数返回：

  • True 函数执行成功
  • False 函数执行失败

功能描述：

通过别名设置单元的字符串值，如果设置成功，那么控件将会自动刷新显示

相关函数：

编号：89

BSTR GetAliasCell(LPCTSTR sCellAlias)

入口参数：

  • sCellAlias 单元的别名，如："Name"

函数返回：

单元的字符串数值

功能描述：

通过别名读取单元的字符串数值

相关函数：

编号：88

BSTR GetAliasCellEx(LPCTSTR sCellAlias)

入口参数：

  • sCellAlias 单元的别名，如："Name"

函数返回：

单元的字符串数值，如果单元格类型是数字类型或者财务大写类型，那么会获得和显示内容

功能描述：

通过别名读取单元的字符串数值
如果单元格类型是数字类型或者财务大写类型，那么会获得和显示内容

相关函数：

BSTR GetAliasRowColStr(LPCTSTR sAliasName)

入口参数：

  • sAliasName 单元的别名

函数返回：

返回单元的行列表示法字符串，如:"D3","G5"

功能描述：

获得别名单元的字符串表示法，从而可以进一步通过函数 ChToRowCol(BSTR sRowCol, short* nRow, short* nCol) 转换表示法

相关函数：

编号：147

boolean SetAliasCellTransParent(LPCTSTR strCellAliasName)

入口参数：

  • strCellAliasName 单元别名

函数返回：TRUE=成功；FALSE=失败

功能描述：

设置别名单元的背景透明

相关函数：

编号：113

short GetAliasCount()

函数返回：函数返回别名单元的总数目

功能描述：

获取别名单元的总数目

相关函数：

编号：180

BSTR GetAliasName(short Index)

入口参数：

  • Index 别名单元的索引

函数返回：返回获取别名的字符串

功能描述：

通过索引获取别名的字符串

相关函数：

编号：181

BSTR GetAliasRowCol(short Index)

入口参数：

  • Index 别名单元的索引

函数返回：返回别名的行列表示法，如："B4"

功能描述：

通过索引获得别名的行列表示的字符串

相关函数：

编号：182


EtRecordField

Et区域数据集存取单元方法

Et区域数据集和ADO数据库连接的关联：

控件属性：
BSTR ConnectionString

连接数据库的连接串，和ADO的连结串完全相同;

编号：10

BSTR DatabaseTableName

连接数据库的SQL语句：

编号：11

boolean DatabaseActive

激活ADO数据库，让ADO数据库和ET数据集进行绑定，产生动态报表；

编号：12

备注：
(1)在利用ConnectionString，DatabaseTableName，DatabaseActive这三个属性进行数据库连结时，需要首先在报表式样中定义ET数据集和真正的数据库进行字段绑定工作，这样EtCell就可以自动处理数据库的所有内容了！
(2)这三个属性是在C/S下的MIS开发中应用的属性，要是开发B/S的WEB应用，EtCell提供了XML的数据绑定方法；

举例如下：

1、VC例子：
//设置数据库的连接串
CString strConn ,strSQL;
strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\\昂利万报表\\Samples\\Database\\Server.mdb;Persist
Security Info=False";
pEtCell->SetConnectionString(strConn);

//设置数据库的查询SQL语句
strSQL = "SELECT dispStr,fatherId,fileName,id from TreeInfo";
pEtCell->SetDatabaseTableName(strSQL );

//激活数据库填写报表
pEtCell->SetDatabaseActive(TRUE);

2、VB，VBScript例子
//设置数据库的连接串
Dim strConn,strSQL
strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\昂利万报表\Samples\Database\Server.mdb;Persist
Security Info=False"
EtCell1.ConnectionString = strConn

//设置数据库的查询SQL语句
strSQL = "SELECT dispStr,fatherId,fileName,id from TreeInfo"
EtCell1.DatabaseTableName = strSQL

//激活数据库填写报表
pEtCell.DatabaseActive = True

3、JAVAScript例子
//设置数据库的连接串
Var strConn,strSQL;
strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\\昂利万报表\\Samples\\Database\\Server.mdb;Persist
Security Info=False";
EtCell1.ConnectionString = strConn;

//设置数据库的查询SQL语句
strSQL = "SELECT dispStr,fatherId,fileName,id from TreeInfo";
EtCell1.DatabaseTableName = strSQL;

//激活数据库填写报表
pEtCell.DatabaseActive = True;

4、Delphi例子
//设置数据库的连接串
strConn := 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\昂利万报表\Samples\Database\Server.mdb;Persist
Security Info=False';
EtCell1.ConnectionString := strConn;

//设置数据库的查询SQL语句
strSQL := 'SELECT dispStr,fatherId,fileName,id from TreeInfo';
EtCell1.DatabaseTableName := strSQL;

//激活数据库填写报表
EtCell1.DatabaseActive := True;

Et区域数据集管理函数：

boolean SetEtRecordRange(BSTR strStartRowCol, BSTR strEndRowCol)

入口参数：

  • strStartRowCol Et区域数据集的左上角单元 如："B2"
  • strEndRowCol Et区域数据集的右下角单元 如："G10"

函数返回：TRUE=成功；FALSE=失败

功能描述：

1、通过动态方式，设置Et区域数据集的范围，在对下面的函数进行调用时（没有在报表工具中设置Et区域范围），必须先调用这个函数设置操作范围，然后下面的所有数据集的操作就能正常执行了；

2、次函数设置的范围为初始化范围，在用下面的AppendRecord()函数时，可以扩大Et区域数据集的范围；

3、InsertRow()也可以扩大Et区域数据集的范围；

4、当参数strStartRowCol，strEndRowCol都为空值时，表示删除已经存在的ET数据集定义，包括删除已经定义好的ET数据集的所有字段；

相关函数：

编号：110

boolean AddFieldName(short nCol, BSTR strFieldName, BSTR strFieldDemo)

入口参数：

  • nCol 报表的列
  • strFieldName Et表字段名
  • strFieldDemo 字段含义

函数返回：TRUE=成功；FALSE=失败

功能描述：在Et区域数据集中增加字段

相关函数：

编号：111

boolean EditFieldName(BSTR strFieldName, BSTR strNewFieldName)

入口参数：

  • strFieldName 要修改Et表字段名
  • strNewFieldName 修改后的Et表字段名

函数返回：TRUE=成功；FALSE=失败

功能描述：编辑修改Et区域数据集中字段名

相关函数：

编号：117

boolean DeleteFieldName(BSTR strFieldName)

入口参数：

  • strFieldName 要删除的Et表字段名

函数返回：TRUE=成功；FALSE=失败

功能描述：删除Et区域数据集中字段

相关函数：

编号：112

boolean ADOFieldLinkToEtField(BSTR ADOFieldName, BSTR EtFieldName)

入口参数：

  • ADOFieldName OLE DB ADO字段名
  • EtFieldName Et数据集字段名

函数返回：TRUE=成功；FALSE=失败

功能描述：

OLEDB ADO数据字段和Et数据集字段对应绑定，绑定成功后，DatabaseActive=True时会自动把ADO数据填写到et数据集中

相关函数：

编号：121

Et区域数据集存取函数：

boolean IsRecordCell(short row, short col)

入口参数：

  • row 单元所在行
  • col 单元所在列

函数返回：TRUE=成功；FALSE=失败

功能描述：判断单元是否为Et区域数据集中的单元

相关函数：

编号：90

short GetRecordCount()

函数返回：返回Et区域数据集的记录总数

功能描述：返回Et区域数据集的记录总数

相关函数：

编号：91

short GetCurRecordRow()

函数返回：返回Et区域数据集当前记录的所在的行

功能描述：返回Et区域数据集当前记录的所在的行

相关函数：

编号：212

short GetFieldCount()

函数返回：返回Et区域数据集的字段总数

功能描述：返回Et区域数据集的字段总数

罗列当前报表的所有的ET字段名的例子：
1、VBScript或者VB例子：
for i=0 to EtCell2.GetFieldCount()-1
'获得定义的ET字段名
strETFieldName = EtCell2.GetFieldName(i)

'获得当前字段的所在的列
col = EtCell2.GetFieldCol(strETFieldName)
next

相关函数：GetFieldName() GetFieldCol()

编号：92

BSTR GetCellAlias(short row, short col)

入口参数：

  • row 单元所在行
  • col 单元所在列

函数返回： 返回单元的别名

1、如果返回值=空，那么表示单元不存在别名

2、如果单元是Et数据集中的单元，那么就返回单元所在列的字段名

功能描述：读取单元的别名

相关函数：

BSTR ChRowColStr(short nRow, short nCol);
boolean ChToRowCol(BSTR sRowCol, short* nRow, short* nCol);

编号：108

short GetFieldCol(BSTR sFieldName)

入口参数：

  • sFieldName 字段名 如："Name"

函数返回：返回字段名，如果返回=空值，表示出错

功能描述：返回字段所在EtCell控件中的列 如: 3

相关函数： GetFieldCount() GetFieldName()

编号：153

BSTR GetFieldName(short Index)

入口参数：

  • Index 字段所在的索引号

函数返回：返回字段名，如果返回=空值，表示出错

功能描述：通过索引号读取字段名

相关函数：GetFieldCount() GetFieldCol()

编号：95

boolean IsBof()

函数返回：TRUE=成功；FALSE=失败

功能描述：判断是否在Et数据集的头部

相关函数：

编号：93

boolean IsEof()

函数返回：TRUE=成功；FALSE=失败

功能描述：判断是否在Et数据集的尾部

相关函数：

编号：94

BSTR GetFieldValue(BSTR sFieldName)

入口参数：

  • sFieldName Et数据集的字段名

函数返回：返回当前记录的字段值

功能描述：通过字段名获取当前记录的字符串内容

相关函数：

编号：96

BSTR GetFieldValueEx(BSTR sFieldName)

入口参数：

  • sFieldName Et数据集的字段名

函数返回：返回当前记录的字段值
如果单元格类型是数字类型或者财务大写类型，那么会获得和显示内容

功能描述：通过字段名获取当前记录的字符串内容
如果单元格类型是数字类型或者财务大写类型，那么会获得和显示内容

相关函数：

boolean SetFieldValue(BSTR sFieldName, BSTR sCellValue)

入口参数：

  • sFieldName Et数据集的字段名
  • sCellValue 当前记录的Et数据集字段内容

函数返回：TRUE=成功；FALSE=失败

功能描述：通过字段名设置当前记录的字符串内容

相关函数：

编号：97

boolean Update()

函数返回：TRUE=成功；FALSE=失败

功能描述：更新当前记录集到真正的数据库表中

相关函数：

编号：118

boolean MoveFirst()

函数返回：TRUE=成功；FALSE=失败

功能描述：当前记录移动到第一条

相关函数：

编号：98

boolean MoveNext()

函数返回：TRUE=成功；FALSE=失败

功能描述：当前记录向后移动一条

相关函数：

编号：99

boolean MovePrev()

函数返回：TRUE=成功；FALSE=失败

功能描述：当前记录向前移动一条

相关函数：

编号：100

boolean MoveLast()

函数返回：TRUE=成功；FALSE=失败

功能描述：当前记录移到最后一条

相关函数：

编号：101

boolean AppendRecord()

函数返回：TRUE=成功；FALSE=失败

功能描述：在Et区域数据集的最后追加一条记录，追加后处于当前记录

相关函数：

编号：102

boolean DeleteRecord()

函数返回：TRUE=成功；FALSE=失败

功能描述：删除当前记录

相关函数：

编号：103

boolean MoveTo(short nRecordID)

入口参数：

  • nRecordID Et数据集的ID号，是相对于第一条记录的数值

函数返回：TRUE=成功；FALSE=失败

功能描述：移动当前记录到nRecordID指定的记录上

相关函数：

编号：122

boolean InsertRecord()

函数返回：TRUE=成功；FALSE=失败

功能描述：在当前记录上插入一条记录，插入后当前记录下移，新插入的记录处于当前记录

相关函数：

编号：105

boolean FindFirst(BSTR sFind)

入口参数：

  • sFind 查找条件串 如："Name=赵* && Age>=20"

函数返回：TRUE=成功；FALSE=失败

功能描述：根据查找条件定位数据集记录

相关函数：

编号：104

boolean FindNext()

入口参数：

  • 如果FindFirst() 找到记录的话，那么用FindNext查找下一条记录

函数返回：TRUE=成功；FALSE=失败

功能描述：根据查找条件定位数据集记录

相关函数：

编号：194

boolean FindPrevious()

入口参数：

  • 如果FindFirst() 找到记录的话，那么用FindPrevious查找上一条记录

函数返回：TRUE=成功；FALSE=失败

功能描述：根据查找条件定位数据集记录

相关函数：

编号：195

boolean FindLast()

入口参数：

  • 如果FindFirst() 找到记录的话，那么用FindLast查找最后一条记录

函数返回：TRUE=成功；FALSE=失败

功能描述：根据查找条件定位数据集记录

相关函数：

编号：196

BSTR GetFieldColStr(short Index)

入口参数：

  • Index

函数返回：函数返回索引所在的列的字符串表示形式

功能描述：函数返回索引所在的列的字符串表示形式

例如：

strCol = EtCell1.GetFieldColStr(0)

'那么 strCol 将是 B或者 C or H的形式

相关函数：

编号：183

BSTR GetEtRecordRangeStartCell()

函数返回：TRUE=成功；FALSE=失败

功能描述：获得ET区域数据表的开始单元的名字

例如：

str = EtCell1.GetEtRecordRangeStartCell();

那么str的格式是：C5 或者 D8 或者 F4

相关函数：ChToRow() ChToCol()

编号：184

BSTR GetEtRecordRangeEndCell()

函数返回：TRUE=成功；FALSE=失败

功能描述：获得ET区域数据表的结束单元的名字

例如：

str = EtCell1.GetEtRecordRangeEndCell();

那么str的格式是：C5 或者 D8 或者 F4

相关函数：ChToRow() ChToCol()

编号：185

boolean DeleteLinkToEtField(BSTR EtFieldName)

入口参数：

  • EtFieldName

函数返回：TRUE=成功；FALSE=失败

功能描述：删除ET记录集的字段和ADO的绑定连接

相关函数：

编号：186

void SetAutoMergeField(BSTR strFieldName, long Option)

入口参数：

  • strFieldName 设置根据文本内容相同自动合并的ET数据集的字段名
  • Option 自动合并时的选项，默认用0表示

函数返回：无

功能描述：

前提条件：
(1)报表中定义了ET数据集和ET数据集的字段；
(2)在MIS C/S模式下调用DatabaseActive激活数据库时；
(3)在WEB模式下调用了ImportXML()函数引入了XML数据产生动态报表时；
(4)自动合并的依据：如果相邻行存在内容相同，那么自动合并；
(5)只对strFieldName指定的ET字段自动合并；

如图所示：

姓名 | 一月销售 | 二月销售
王五 | 11 | 12
王五 | 33 | 33
赵六 | 23 | 33
赵六 | 23 | 11
张三 | 23 | 33
 ========>
姓名 | 一月销售 | 二月销售
王五 | 11 | 12
 | 33 | 33
赵六 | 23 | 33
 | 23 | 11
张三 | 23 | 33

备注：

(1)如果strFieldName为空时，那么将删除自动合并功能；

相关函数：SetAutoMerge()、属性DatabaseActive、ImportXML()

编号：228


CellBorde

单元格边框存取单元方法

方法：

boolean SetRangeBorder(LPCTSTR sStartRowCol, LPCTSTR sEndRowCol, short nType)

入口参数：

  • sStartRowCol 范围的开始单元，如："D3"
  • sEndRowCol 范围的结束单元，如："G8"
  • nType 边框类型，如下图表示

函数返回：

  • True 函数执行成功
  • False 函数执行失败

功能描述：

设置单元范围的边框类型

相关函数：

编号：133

boolean SetCellLineWidth(short row, short col, short width)

入口参数：

  • row 行
  • col 列
  • width 单元边框的线宽

函数返回：

  • True 函数执行成功
  • False 函数执行失败

功能描述：

设置单元的边框的线宽，对单元的上下左右边线都起作用

相关函数：

编号：130

boolean SetCellLineColor(short row, short col, OLE_COLOR color)

入口参数：

  • row 行
  • col 列
  • color 单元边框的线颜色，是RGB值

函数返回：

  • True 函数执行成功
  • False 函数执行失败

功能描述：

设置单元的边框的线颜色，对单元的上下左右边线都起作用

相关函数：

编号：131

boolean SetCellRightLineWidth(short row, short col, short width)

入口参数：

  • row 行
  • col 列
  • width 线宽度

函数返回：

  • True 函数执行成功
  • False 函数执行失败

功能描述：

设置单元的边框的右边线宽，对单元的右边线起作用

相关函数：

编号：126

boolean SetCellRightLineColor(short row, short col, OLE_COLOR color)

入口参数：

  • row 行
  • col 列
  • color 线颜色，RGB值

函数返回：

  • True 函数执行成功
  • False 函数执行失败

功能描述：

设置单元的边框的右边线颜色，对单元的右边线起作用

相关函数：

编号：127

boolean SetCellBottomLineWidth(short row, short col, short width)

入口参数：

  • row 行
  • col 列
  • width 线宽度

函数返回：

  • True 函数执行成功
  • False 函数执行失败

功能描述：

设置单元的边框的下边线宽，对单元的下边线起作用

相关函数：

编号：128

boolean SetCellBottomLineColor(short row, short col, OLE_COLOR color)

入口参数：

  • row 行
  • col 列
  • color 线颜色，RGB值

函数返回：

  • True 函数执行成功
  • False 函数执行失败

功能描述：

设置单元的边框的下边线颜色，对单元的下边线起作用

相关函数：

编号：129


CellText_Font_Color

单元文本、字体、颜色相关函数

属性：

IFontDisp* DefaultFont;

含义：

设置EtCell整个报表的缺省字体，可以在设计状态下改变，也可以在运行状态下动态改变

方法：

boolean SetCell(short row, short col, LPCTSTR cellStr)

入口参数：

  • row 行
  • col 列
  • cellStr 单元的字符串值

函数返回：

  • True 函数执行成功
  • False 函数执行失败

功能描述：

设置单元的字符串值，设置成功后，EtCell控件自动刷新显示

相关函数：

编号：33

BSTR GetCell(short row, short col)

入口参数：

  • row 行
  • col 列

函数返回：

返回单元的字符串值

功能描述：

通过行列表示法，读取单元的字符串值

相关函数：

编号：34

BSTR GetCellEx(short row, short col)

入口参数：

  • row 行
  • col 列

函数返回：

返回单元的字符串值
如果单元格类型是数字类型或者财务大写类型，那么会获得和显示内容

功能描述：

通过行列表示法，读取单元的字符串值

相关函数：

BSTR GetCell2(LPCTSTR strRowCol)

入口参数：

  • strRowCol 单元的表示字符串，如："D3","G5"

函数返回：

返回单元的字符串值

功能描述：

通过行列串表示法，读取单元的字符串值

相关函数：

编号：86

boolean SetCell2(LPCTSTR strRowCol, LPCTSTR cellStr)

入口参数：

  • strRowCol 单元的表示字符串，如："D3","G5"
  • cellStr 要设置单元的字符串值，如："单位名称"

函数返回：

  • True 函数执行成功
  • False 函数执行失败

功能描述：

通过行列串表示法，设置单元的字符串值

相关函数：

编号：87

OLE_COLOR GetCellColor(short row, short col)

入口参数：

  • row 行
  • col 列

函数返回：返回单元的文本字体颜色RGB值

功能描述：

获得单元文本的显示颜色

相关函数：

编号：198

boolean SetCellColor(short row, short col, OLE_COLOR nColor)

入口参数：

  • row 行
  • col 列
  • nColor 要设置单元文本的RGB颜色值

函数返回：

  • True 函数执行成功
  • False 函数执行失败

功能描述：

设置单元文本的显示颜色

相关函数：

编号：35

OLE_COLOR GetCellBkColor(short row, short col)

入口参数：

  • row 行
  • col 列

函数返回：返回单元的背景颜色RGB值

功能描述：

返回单元的背景颜色

相关函数：

编号：174

boolean SetCellBkColor(short row, short col, OLE_COLOR nColor)

入口参数：

  • row 行
  • col 列
  • nColor 要设置单元背景的RGB颜色值

函数返回：

  • True 函数执行成功
  • False 函数执行失败

功能描述：

设置单元背景颜色

相关函数：

编号：36

OLE_COLOR GetTableBkColor()

函数返回：返回报表的背景颜色

功能描述：

返回报表的背景颜色RGB值

相关函数：

编号：173

void SetTableBkColor(OLE_COLOR nColor)

入口参数：

  • nColor 要设置整个报表背景的RGB颜色值

函数返回：无

功能描述：

设置整个报表的背景颜色

相关函数：

编号：62

BSTR GetAliasCell(LPCTSTR sCellAlias)

入口参数：

  • sCellAlias 单元的别名

函数返回：

  • 返回单元的字符串值

功能描述：

通过单元别名，读取单元的字符串值

相关函数：

编号：88

boolean SetAliasCell(LPCTSTR sCellAlias, LPCTSTR sCellValue)

入口参数：

  • sCellAlias 单元的别名
  • sCellValue 要设置的单元字符串值

函数返回：

  • True 函数执行成功
  • False 函数执行失败

功能描述：

通过单元别名，设置单元的字符串值，设置后EtCell立即刷新显示

相关函数：

编号：89

boolean SetColHeader(short col, LPCTSTR sColHeader)

入口参数：

  • col 列，如：标尺的表示方法是A,B,C,D,....,对应的列值为1，2，3，4，.....
  • sColHeader 要设置的标尺列显示字符串，如："姓名"，"年龄"

函数返回：

  • True 函数执行成功
  • False 函数执行失败

功能描述：

设置EtCell控件标尺的显示字符串

相关函数：

编号：106

boolean SetCellFont(short row, short col, LPCTSTR sFontName, short nSize)

入口参数：

  • row 行
  • col 列
  • sFontName 字体名
  • nSize 字体大小

函数返回：

  • True 函数执行成功
  • False 函数执行失败

功能描述：

设置单元文本的字体和字体大小

相关函数：

编号：145

BSTR GetCellFontName(short row, short col)

入口参数：

  • row 行
  • col 列

函数返回：返回指定单元格的字体名

功能描述：

返回指定单元格的字体名

相关函数：

编号：223

short GetCellFontSize(short row, short col)

入口参数：

  • row 行
  • col 列

函数返回：返回指定单元格的字体大小

功能描述：

返回指定单元格的字体大小

相关函数：

编号：224

short GetCellFontStyle(short row, short col)

入口参数：

  • row 行
  • col 列

函数返回：返回整数值，表示字体的不同风格

功能描述：

得到指定单元格的字体风格请参照SetCellFontStyle()函数的nStyle参数的设置

相关函数：

编号：175

boolean SetCellFontStyle(short row, short col, short nStyle)

入口参数：

  • row 行
  • col 列
  • nStyle 字体风格类型

nStyle的值是按位计算的：从低位算起：
//nStyle 共16位 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
//只处理低4位
0 0 0 0 普通 0
0 0 0 1 粗体 1
0 0 1 0 斜体 2
0 1 0 0 下划线 4
1 0 0 0 删除线 8

例如:
设置粗体，那么nStyle的值为 0001,也就是 nStyle=1
设置粗斜体，那么nStyle的值为 0011,也就是nStyle=3
设置下划线，那么nStyle的值为 0100,也就是nStyle=4
设置粗体下划线，那么nStyle的值为 0101,也就是nStyle=5
设置删除线，那么nStyle的值为 1000,也就是nStyle=8
设置粗体删除线，那么nStyle的值为 1001,也就是nStyle=9
设置粗体、斜体、下划线，那么nStyle的值为 0111,也就是nStyle=7
按上面的道理自由组合，将会出现各种字体风格；

函数返回：

  • True 函数执行成功
  • False 函数执行失败

功能描述：

设置单元文本的字体类型，如黑粗体，斜体，下划线等等

相关函数：

编号：146

BSTR GetAliasRowColStr(LPCTSTR sAliasName)

入口参数：

  • sAliasName 单元的别名

函数返回：

返回单元的行列表示法字符串，如:"D3","G5"

功能描述：

获得别名单元的字符串表示法，从而可以进一步通过函数 ChToRowCol(BSTR sRowCol, short* nRow, short* nCol) 转换表示法

相关函数：

编号：147

boolean ShowDlgFont(LPCTSTR sFontName, short nFontSize, OLE_COLOR cFontColor);

入口参数：

  • sFontName 对话框缺省的字体名
  • nFontSize 对话框缺省的字体大小
  • cFontColor 对话框缺省的字体颜色

函数返回：

  • True 函数执行成功
  • False 函数执行失败

功能描述：

显示字体对话框，在对话框中用户可以选择字体，等关闭对话框后，可以通过相关函数取的字体的更详细信息

相关函数：GetDlgFontName() GetDlgFontBold() GetDlgFontSize() GetDlgFontColor()

编号：167

BSTR GetDlgFontName()

函数返回：返回通过字体对话框设置的字体名字符串

功能描述：

返回通过字体对话框设置的字体名字符串；

此函数只有在ShowDlgFont函数成功调用后才起作用，否则是上一次的结果。

相关函数：ShowDlgFont()

编号：168

short GetDlgFontSize()

函数返回：返回通过字体对话框设置的字体大小

功能描述：

返回通过字体对话框设置的字体大小；

此函数只有在ShowDlgFont函数成功调用后才起作用，否则是上一次的结果。

相关函数：ShowDlgFont()

编号：169

OLE_COLOR GetDlgFontColor()

函数返回：返回通过字体对话框设置的字体颜色

功能描述：

返回通过字体对话框设置的字体颜色；

此函数只有在ShowDlgFont函数成功调用后才起作用，否则是上一次的结果。

相关函数：ShowDlgFont()

编号：170

boolean GetDlgFontBold()

函数返回：返回通过字体对话框设置的字体是否为重字体，如果是那么返回TRUE,否则返回FALSE

功能描述：

返回通过字体对话框设置的字体是否为重字体；

此函数只有在ShowDlgFont函数成功调用后才起作用，否则是上一次的结果。

相关函数：ShowDlgFont()

编号：171

BSTR GetSystemAllFontName(）

函数返回：返回系统所有的字体名字，字体名之间用 回车 分割

如：宋体\r黑体\r (C语言风格)

宋体chr(13)黑体chr(13) (VB语言风格)

功能描述：

获得系统所有的字体名称，一般用于Web 开发IE浏览器中使用

相关函数：

编号：172

OLE_COLOR ShowDlgColor(OLE_COLOR defColor)

入口参数：

  • defColor 对话框缺省的颜色

函数返回：返回用户设置的颜色RGB值

功能描述：

显示颜色对话框，在对话框中用户可以选择颜色，等关闭对话框后，返回用户设置的颜色RGB值；

一般用在Web开发中用于解决颜色设置问题

相关函数：

编号：166


Cell_Merge_UnMerge

单元格合并、分割相关函数

方法：

void MergeCells(short FromRow, short FromCol, short ToRow, short ToCol)

入口参数：

  • FromRow 合并单元范围的开始行
  • FromCol 合并单元范围的开始列
  • ToRow 合并单元范围的结束行
  • ToCol 合并单元范围的结束列

函数返回：空

功能描述：

合并单元格

相关函数：

编号：60

void MergeSelectedRange()

函数返回：空

功能描述：

合并用户通过鼠标或者键盘选择的单元范围为一个单元格

相关函数：

编号：61

void SetAutoMerge(short nFromRow, short nEndRow, short nCol, long Option)

入口参数：

  • nFromRow 自动合并的开始行
  • nEndRow 自动合并的结束行
  • nCol 对那一列进行自动合并
  • Option 自动合并时的选项，默认用0表示

函数返回：无

功能描述：

前提条件：
自动合并的依据：如果相邻行同列存在的内容相同，那么自动合并；

如图所示：

姓名 | 一月销售 | 二月销售
王五 | 11 | 12
王五 | 33 | 33
赵六 | 23 | 33
赵六 | 23 | 11
张三 | 23 | 33
 ========>
姓名 | 一月销售 | 二月销售
王五 | 11 | 12
 | 33 | 33
赵六 | 23 | 33
 | 23 | 11
张三 | 23 | 33

相关函数：SetAutoMergeField()、UnMergedCell()、事件OnAfterETComplete()

编号：227

boolean IsCellMerge(short row, short col)

入口参数：

  • row 行
  • col 列

函数返回：

  • True 单元格是合并的单元格
  • False 单元格不是合并单元格

功能描述：

判断单元格是否为合并单元格

相关函数：

编号：217

boolean UnMergedCell(short row, short col)

入口参数：

  • row 行
  • col 列

函数返回：

  • True 函数执行成功
  • False 函数执行失败

功能描述：

对已经合并的单元格进行分割，使其恢复到原先的状态

相关函数：

编号：123

boolean UnMergedAliasCell(BSTR sAliasName)

入口参数：

  • sAliasName 单元别名

函数返回：

  • True 函数执行成功
  • False 函数执行失败

功能描述：

通过单元别名对已经合并的单元格进行分割，使其恢复到原先的状态

相关函数：

编号：124


Image_Chart

图片、图表相关函数

方法：

void InsertCellImage(short nRow, short nCol, BSTR ImageName, short nDisplayType)

入口参数：

  • nRow 行
  • nCol 列
  • ImageName 图片的文件名，图片可以是JPG,GiF,BMP等文件格式
  • nDisplayType 显示方式 要把nDisplayType =401 图片类型并且正常绘制图片
    402=图片类型并且是拉伸绘制图片

函数返回：无

功能描述：

在单元格中插入图片;

备注：

参数ImageName可以是URL；举例如下：

EtCell1.InsertCellImage(4,6,"c:\etcell\test.jpg",401);

EtCell1.InsertCellImage(4,6,"http://www.etcell.com/Images/Company.jpg",402);

相关函数：

编号：56

void InsertCellChart(short nRow, short nCol, short nChartType);

入口参数：

  • nRow 行
  • nCol 列
  • nChartType 图表的类型 301=绘制柱状图 302=绘制曲线图 303=绘制饼状图

函数返回：无

功能描述：

在单元中插入图表显示，调用此函数后随后要调用AddLinkChartCell()才能和具体的单元绑定实现动态数据显示

相关函数：AddLinkChartCell()

编号：57

boolean AddLinkChartCell(BSTR sChartCell, BSTR sLinkChartCell,BSTR sDisplayLable);

入口参数：

  • sChartCell 图表所在的单元，如："D3","G5"
  • sLinkChartCell 图表中数据所在的单元，如："B2","C2"
  • sDisplayLable 图表中数据显示时的文本标签，如："一月"

函数返回：TRUE=成功；FALSE=失败

功能描述：

插入的图表绑定到具体的单元，以便实现图表的动态数据显示

相关函数：

编号：139

boolean DeleteLinkChartCell(BSTR sChartCell, BSTR sLinkChartCell);

入口参数：

  • sChartCell 图表所在的单元，如："D3","G5"
  • sLinkChartCell 图表中数据所在的单元，如："B2","C2"

函数返回：TRUE=成功；FALSE=失败

功能描述：

删除已经绑定到图表的数据单元

相关函数：

编号：141

boolean EditLinkChartCellLable(BSTR sChartCell, BSTR sLinkChartCell, BSTR sDisplayLable);

入口参数：

  • sChartCell 图表所在的单元，如："D3","G5"
  • sLinkChartCell 图表中数据所在的单元，如："B2","C2"
  • sDisplayLable 图表中数据显示时的文本标签，如："一月"

函数返回：TRUE=成功；FALSE=失败

功能描述：

编辑修改绑定到图表的数据单元，包括数据单元的显示标签

相关函数：

编号：143

BSTR GetChartLinkCells(BSTR sChartCell);

入口参数：

  • sChartCell 图表所在的单元，如："D3","G5"

函数返回：返回图表单元所绑定的所有单元，通过字符串表示

功能描述：

获取图表单元所绑定的所有单元，通过字符串表示例如："D3,D4,G4,F6,"

相关函数：

编号：142

boolean AddCellLinkNode(short nRow, short nCol, short nFatherRow, short nFatherCol, boolean bAdd)

入口参数：

  • nRow 要设置的单元行
  • nCol 要设置的单元列
  • nFatherRow 要连接的单元行
  • nFatherCol 要连接的单元列
  • bAdd bAdd=TRUE 表示增加连接 bAdd=FALSE 表示删除连接

函数返回：TRUE=成功；FALSE=失败

功能描述：

增加单元的连接关系，举例说明功能：假如调用了函数AddCellLinkNode(2,2,4,4,TRUE),那么在单元(2,2)发生变化后，就会使单元(4,4)也自动发生变化，具体的变化，要看是公式影响，还是图表数据影响了，还是脚本影响；

相关函数：

编号：79

相关函数：

short GetCellType(short row, short col);

boolean SetCellAlign(short row, short col, short Align);

BSTR ChRowColStr(short nRow, short nCol);
boolean ChToRowCol(BSTR sRowCol, short* nRow, short* nCol);

boolean SetCellEnable(short minRow, short minCol, short maxRow, short maxCol, boolean bEnable);
boolean SetCellFixed(short minRow, short minCol, short maxRow, short maxCol, boolean bFixed);
boolean AddCellLinkNode(short nRow, short nCol, short nFatherRow, short nFatherCol, boolean bAdd);
boolean SetCellReadOnly(short nRow, short nCol, boolean bReadOnly);


Cell_Mask

单元格的格式化输入相关函数

方法：

BSTR GetCellMask(short nRow, short nCol)

入口参数：

  • nRow 单元所在的行
  • nCol 单元所在的列

函数返回：

  • 返回单元的格式化输入字符串，如：([0-9][0-9][0-9]) [0-9][0-9]-[0-9][0-9]
    [01][0-9]/[0-3][0-9]/[12][90][0-9][0-9]
    [字符][A-Z0-9][A-Z0-9][A-Z0-9][XYZ5-8]
    (719) [0-9][0-9][0-9]-[0-9][0-9][0-9][0-9]
  • 返回空串，表示此单元没有进行格式化输入

功能描述：

读取单元的格式化输入字符串

相关函数：

编号：82

boolean SetCellMask(short nRow, short nCol, LPCTSTR sMask)

入口参数：

  • nRow 单元所在的行
  • nCol 单元所在的列
  • sMask 单元要设置的格式化输入字符串，如：([0-9][0-9][0-9]) [0-9][0-9]-[0-9][0-9]
    [01][0-9]/[0-3][0-9]/[12][90][0-9][0-9]
    [字符][A-Z0-9][A-Z0-9][A-Z0-9][XYZ5-8]
    (719) [0-9][0-9][0-9]-[0-9][0-9][0-9][0-9]

函数返回：

  • True 函数执行成功
  • False 函数执行失败

功能描述：

设置单元进行格式化输入，如果sMask="",那么表示删除单元的格式化输入

相关函数：

编号：83

void SetCellNumType(short row, short col, short nType, short nDotNum, BSTR sParam)

入口参数：

  • row 行
  • col 列
  • nType 单元格的类型
  • nDotNum 小数为数
  • sParam 假如单元格格式需要在前面或者后面加的特殊符号，例如 ： ￥3,212,123.00 、 80%

函数返回：无

功能描述：

设置单元格的数字格式类型，包括数字的显示格式和输入格式；
nType 的数值如下：

默认格式 |  | 显示格式举例
0 | EtCell的默认格式 |
数值型 |  |
101 | 不含千份位,负数不为红色；小数为数有nDotNum指定；例如： | 123456.23
102 | 不含千份位,负数为红色；小数为数有nDotNum指定； | 123456.23 -12345.23
103 | 含千份位,负数不为红色；小数为数有nDotNum指定； | 123,456,7.23
104 | 含千份位,负数为红色；小数为数有nDotNum指定； | 123,456,7.23 -123,456,7.23
货币型 |  |
111 | 普通货币型(默认含千分位，并且前面有货币符号)，小数为数有nDotNum指定；具体的符号有参数sParam指定； | ￥123,456,7.23
112 | 货币型 负数为红色，小数为数有nDotNum指定；具体的符号有参数sParam指定; | ￥-123,456,7.23
会计专用类型 |  |
121 | 会计专用,都含千分位,前面带货币符号,具体的符号有参数sParam指定；小数为数有nDotNum指定； | ￥123,456,7.23
百分比类型 |  |
131 | 百分比,后面带 % ；小数为数有nDotNum指定； | 89.55%

程序调用举例如下：

SetCellNumType 3,3,0,0,""
SetCellNumType 3,3,101,2,"￥"
SetCellNumType 3,3,102,0,""
SetCellNumType 3,3,103,2,"￥"
SetCellNumType 3,3,104,1,""
SetCellNumType 3,3,111,2,"￥"
SetCellNumType 3,3,112,2,"$"
SetCellNumType 3,3,121,2,"￥"
SetCellNumType 3,3,131,2,"%"

相关函数：

编号：201


Control

内置支持的控件的方法/事件

方法：

short GetComboxRowCount(LPCTSTR strAliasName)

入口参数：

  • strAliasName ComboBox控件所在单元格的别名

函数返回：总共有多少行（数值型）

功能描述：

获得ComboBox共有多少个可选项

相关函数：

编号：232

short GetComboxColCount(LPCTSTR strAliasName)

入口参数：

  • strAliasName ComboBox控件所在单元格的别名

函数返回：总共有多少列（数值型）

功能描述：

获得ComboBox共有多少列可选项（只对多列ComboBox起作用）

相关函数：

编号：233

BOOL AddComboxRow(LPCTSTR strAliasName, LPCTSTR strValue)

入口参数：

  • strAliasName ComboBox控件所在单元格的别名
  • strValue 一行的文本数据

函数返回：TRUE=成功；FALSE=失败

功能描述：

多列combox 增加一行
strValue="",那么只增加一行，不填数据
各个列之间用 “会车“ 字符分割

例如：

str = "王五" & chr(13) & "现任局长" & chr(13) & "35岁"
EtCell1.AddComboxRow "Name",str

相关函数：

编号：231

BOOL SetComboxColValue(LPCTSTR strAliasName, short nRow, short nCol, LPCTSTR strValue)

入口参数：

  • strAliasName ComboBox控件所在单元格的别名
  • nRow 所在行的索引
  • nCol 所在列的索引
  • strValue 字符串值

函数返回：TRUE=成功；FALSE=失败

功能描述：

设置特定行 特定列 的值

例如：

'str = "王五" & chr(13) & "现任局长" & chr(13) & "35岁"
EtCell1.SetComboxColValue "Name",1，2，"35岁"

相关函数：

编号：234

BSTR GetComboxColValue(LPCTSTR strAliasName, short nRow, short nCol)

入口参数：

  • strAliasName ComboBox控件所在单元格的别名
  • nRow 所在行的索引
  • nCol 所在列的索引

函数返回：返回字符串值

功能描述：

返回特定行 特定列 的值

例如：

'str = "王五" & chr(13) & "现任局长" &
chr(13) & "35岁"
strValue = EtCell1.GetComboxColValue "Name",1，2
'那么strValue 的值将是 35岁

相关函数：

编号：235

short GetComboxIndex(LPCTSTR strAliasName)

入口参数：

  • strAliasName ComboBox控件所在单元格的别名

函数返回：返回

功能描述：

获得当前combox选择的索引值
如果没有选择，那么返回-1

相关函数：

编号：236

BOOL DeleteComboxAllRows(LPCTSTR strAliasName)

入口参数：

  • strAliasName ComboBox控件所在单元格的别名

函数返回：TRUE=成功；FALSE=失败

功能描述：

删除多列Combox的所有行

相关函数：

编号：237

相关事件如下：

void OnComboxChanged(BSTR strAliasName, short nNewSelectedRow, short nOldSelectedRow)

入口参数：

  • strAliasName ComboBox控件所在单元格的别名
  • nNewSelectedRow 最新选择的行索引（索引从0算起）
  • nOldSelectedRow 落选的行索引（索引从0算起）

出口参数：无

功能描述：

当多列ComboBox改变时，触发此事件

void OnDateCtrlChanged(short row, short col, DATE newDate)

入口参数：

  • row 日期控件所在的行
  • col 日期控件所在的行
  • newDate 日期控件新选择的日期

出口参数：无

功能描述：

当日期控件的日期改变时，触发此事件


etFileIO

操作报表文件的相关函数

属性：

BSTR FileName

含义：表示当前的报表文件

举例如下：

'打开本地报表
EtCell1.FileName = "c:\昂利万报表\Samples\111.eT"

'打开网络报表
EtCell1.FileName = "http://www.etcell.com/Samples/CaiWu/CaiGouDingDan.eT"

'打开WEB报表，和页面的html文件处于相同的目录下
EtCell1.FileName = "CaiGouDingDan.eT"

'取得当前的报表文件名
filepath = EtCell1.FileName

备注：FileName属性和OpenDoc()方法具有相同的功能

BSTR DefaultLibFileName

含义：表示自定义函数的缺省库文件，所有的自定义函数都在此库文件中，运行时动态装入

方法：

boolean ShellExec(BSTR exeFileName, BSTR sParam)

入口参数：

  • exeFileName 可执行文件的文件名，如果系统能找到可以不带路径，例如："NotePad.exe","WinZip.exe"
  • sParam 传送给可执行文件的参数，可以为空，例如："test.txt","etcell.zip"

函数返回：

  • True 函数执行成功
  • False 函数执行失败

功能描述：

运行可执行文件，运行时可以带参数执行；如果exeFileName=""，那么将运行系统缺省的程序，并把参数sParam传送给运行程序

相关函数：

编号：39

boolean ShellWeb(BSTR webHost);

入口参数：

  • webHost 网址的URL字符串 如："http://www.etcell.com/"

函数返回：

  • True 函数执行成功
  • False 函数执行失败

功能描述：

通过浏览器(IE)打开一个WEB连接

相关函数：

编号：40

BSTR GetCurFileName();

函数返回：

  • 返回当前EtCell控件的报表名称，包括路径

功能描述：

读取当前EtCell控件的报表名称，包括路径

相关函数：

编号：42

boolean OpenDoc(BSTR fileName);

入口参数：

  • fileName et报表名称，如："c:\昂利万报表\Samples\CaiGouShouHuoDan.eT" 或者 网络报表如："http://www.etcell.com/WebEtCell/html例子.eT"

函数返回：

  • True 函数执行成功
  • False 函数执行失败

功能描述：

在EtCell控件中，新打开一个报表文件，相当于对FileName进行了赋值，即改变了FileName属性

能打开本地文件和网络报表文件，路径可是相对路径，

相对路径解释：

(1)MIS中：是指相对于执行文件的路径

(2)Web中：相对于Html所在的路径

相关函数：

编号：41

boolean OpenFileCell(BSTR fileName)

入口参数：

  • fileName et报表名称，如："c:\昂利万报表\Samples\CaiGouShouHuoDan.eT"

函数返回：

  • True 函数执行成功
  • False 函数执行失败

功能描述：

1、打开一个报表文件，准备从报表中读取数据，便于统计、查询

2、文件用完后，要用CloseFileCell()关闭

备注：此种打开方式不在EtCell控件中显示报表

相关函数：GetFileCell() SumDirFile() SumDirFile2() CloseFileCell()

编号：45

BSTR GetFileCell(short row, short col)

入口参数：

  • row 行
  • col 列

函数返回：

  • 返回报表单元的字符串值

功能描述：

从OpenFileCell()函数中打开的报表文件中读取字符串值，便于统计查询

相关函数：OpenFileCell()

编号：46

BSTR SumDirFile(BSTR sRootDir, BSTR etFileName, short nRow, short nCol)

入口参数：

  • sRootDir 要统计汇总的根目录路径名,如："C:\昂利万报表"
  • etFileName 要统计汇总的et报表名称，不能带路径，是指对sRootDir跟目录下的所有子目录下etFileName进行统计汇总，etFileName名字如："乡镇企业税收.et"
  • nRow 要统计汇总的单元行
  • nCol 要统计汇总的单元列

函数返回：

  • 返回汇总后的字符串值

功能描述：

对sRootDir跟目录下的所有子目录下etFileName进行统计汇总,EtCell控自动搜索sRootDir目录下子目录的etFileName报表文件，如果发现就作为汇总值；所谓汇总是指各个报表文件的值相加

相关函数：

编号：49

BSTR SumDirFile2(BSTR sRootDir, BSTR etFileName, BSTR sRowCol)

入口参数：

  • sRootDir 要统计汇总的根目录路径名,如："C:\昂利万报表"
  • etFileName 要统计汇总的et报表名称，不能带路径，是指对sRootDir跟目录下的所有子目录下etFileName进行统计汇总，etFileName名字如："乡镇企业税收.et"
  • sRowCol 单元的行列串表示法，如："D3","G5"

函数返回：

  • 返回汇总后的字符串值

功能描述：

对sRootDir跟目录下的所有子目录下etFileName进行统计汇总,EtCell控自动搜索sRootDir目录下子目录的etFileName报表文件，如果发现就作为汇总值；所谓汇总是指各个报表文件的值相加

相关函数：

编号：50

boolean CloseFileCell();

函数返回：

  • True 函数执行成功
  • False 函数执行失败

功能描述：

关闭由OpenFileCell()函数中打开的报表文件

相关函数：

编号：47

boolean SaveAs(BSTR etFileName);

入口参数：

  • etFileName 保存的文件名，例如："c:\test.et","c:\test.htm","c:\test.xls"

函数返回：

  • True 函数执行成功
  • False 函数执行失败

功能描述：

把EtCell控件中当前报表另存为其他文件，例如：Html格式文件，Excel文件格式，此函数会根据文件后缀自动保存为响应格式

  1. 如果后缀为.Et，那么另存为Et报表文件格式
  2. 如果后缀为.Htm 或者 .Html，那么就保存为HTML文件格式
  3. 如果后缀为.xls那么就保存为Excel格式

相关函数：

编号：69

boolean LoadLib(BSTR sLibFileName)

入口参数：

  • sLibFileName 自定义函数库文件名，包括路径

函数返回：

  • True 函数执行成功
  • False 函数执行失败

功能描述：

装载自定义函数库文件名，便于执行自定义函数

备注：Version 4 不支持自定义函数

相关函数：

编号：135

boolean RunLibFunction(BSTR sFunctionName);

入口参数：

  • sFunctionName 自定义函数名

函数返回：

  • True 函数执行成功
  • False 函数执行失败

功能描述：

运行自定义函数

备注：Version 4 不支持自定义函数

相关函数：

编号：132


Financial

财务相关函数

方法：

void SetCellFinancialHead(short row, short col)

入口参数：

  • row 行
  • col 列

函数返回：无

功能描述：

设置单元为财务类型的标题栏，如：亿千百十万等等，此类型一般不允许输入数据，一旦设置成功就不能编辑了，作为固定不动的单元存在

相关函数：

编号：64

void SetCellFinancialDetail(short row, short col)

入口参数：

  • row 行
  • col 列

函数返回：无

功能描述：

设置单元为财务类型的具体输入栏

相关函数：

编号：63

void SetCellFinancialMoneyUp(short row, short col)

入口参数：

  • row 行
  • col 列

函数返回：无

功能描述：

设置单元为财务类型的大写形式，会自动的把数字转换为财务的大写形式

相关函数：

编号：65

void DelCellFinancial(short nRow, short nCol)

入口参数：

  • nRow 行
  • nCol 列

函数返回：无

功能描述：

删除财务类型，包括财务标题类型、财务输入类型、财务大写形式

相关函数：

编号：80

void SetCellNumType(short row, short col, short nType, short nDotNum, BSTR sParam)

入口参数：

  • row 行
  • col 列
  • nType 单元格的类型
  • nDotNum 小数为数
  • sParam 假如单元格格式需要在前面或者后面加的特殊符号，例如 ： ￥3,212,123.00 、 80%

函数返回：无

功能描述：

设置单元格的数字格式类型，包括数字的显示格式和输入格式；
nType 的数值如下：

默认格式 |  | 显示格式举例
0 | EtCell的默认格式 |
数值型 |  |
101 | 不含千份位,负数不为红色；小数为数有nDotNum指定；例如： | 123456.23
102 | 不含千份位,负数为红色；小数为数有nDotNum指定； | 123456.23 -12345.23
103 | 含千份位,负数不为红色；小数为数有nDotNum指定； | 123,456,7.23
104 | 含千份位,负数为红色；小数为数有nDotNum指定； | 123,456,7.23 -123,456,7.23
货币型 |  |
111 | 普通货币型(默认含千分位，并且前面有货币符号)，小数为数有nDotNum指定；具体的符号有参数sParam指定； | ￥123,456,7.23
112 | 货币型 负数为红色，小数为数有nDotNum指定；具体的符号有参数sParam指定; | ￥-123,456,7.23
会计专用类型 |  |
121 | 会计专用,都含千分位,前面带货币符号,具体的符号有参数sParam指定；小数为数有nDotNum指定； | ￥123,456,7.23
百分比类型 |  |
131 | 百分比,后面带 % ；小数为数有nDotNum指定；0.128表示为0.128%的形式 | 89.55%
132 | 百分比,后面带 % ；小数为数有nDotNum指定；0.128表示为12.8%的形式 | 89.55%

程序调用举例如下：

SetCellNumType 3,3,0,0,""
SetCellNumType 3,3,101,2,"￥"
SetCellNumType 3,3,102,0,""
SetCellNumType 3,3,103,2,"￥"
SetCellNumType 3,3,104,1,""
SetCellNumType 3,3,111,2,"￥"
SetCellNumType 3,3,112,2,"$"
SetCellNumType 3,3,121,2,"￥"
SetCellNumType 3,3,131,2,"%"

相关函数：

编号：201

相关函数：

short GetCellType(short row, short col)

boolean SetCellAlign(short row, short col, short Align);

BSTR ChRowColStr(short nRow, short nCol);
boolean ChToRowCol(BSTR sRowCol, short* nRow, short* nCol);

BSTR GetCellFormula(short row, short col);

void SetCellFormula(short row, short col, BSTR sFormula);

long CalcFormula(BSTR sFormula);

boolean SetCellEnable(short minRow, short minCol, short maxRow, short maxCol, boolean bEnable);
boolean SetCellFixed(short minRow, short minCol, short maxRow, short maxCol, boolean bFixed);
boolean AddCellLinkNode(short nRow, short nCol, short nFatherRow, short nFatherCol, boolean bAdd);
boolean SetCellReadOnly(short nRow, short nCol, boolean bReadOnly);


Row_Col

报表行、列相关函数

属性：

short Rows

当前报表总的行数；

获得方法： rows = EtCell1.Rows
设置方法： EtCell1.Rows = 100

short Cols

当前报表总的列数；

获得方法： cols = EtCell1.Cols
设置方法： EtCell1.Cols = 10

short NotScrollRows

当前报表固定的行数，也就是不滚动行数；

获得方法： rows = EtCell1.NotScrollRows
设置方法： EtCell1.NotScrollRows= 3
表示1,2,3行为不可滚动的行，也就是上面3行是固定不动的
打印的时候，也将会在每页中出现；

short NotScrollCols

当前报表固定的列数，也就是不滚动列数；

方法：

short GetRowCount()

函数返回：报表的总行数

功能描述：获取报表的总行数

相关函数：

编号：37

short GetColCount()

函数返回：报表的总列数

功能描述：获取报表的总列数

相关函数：

编号：38

short GetCurRow()

函数返回：当前单元所在的行

功能描述：获取当前单元的所在行

相关函数：

编号：43

short GetCurCol()

函数返回：当前单元所在的列

功能描述：获取当前单元的所在列

相关函数：

编号：44

short InsertRow(short row)

入口参数：

  • row 插入行的前一行

函数返回：已经插入的行号

功能描述：在row行上插入一行

相关函数：

编号：32

short InsertCol(short col)

入口参数：

  • col 插入列的前一列

函数返回：已经插入的列号

功能描述：在col列上插入一列

相关函数：

编号：53

void AppendRow()

函数返回：无

功能描述：在报表的最后追加一行

相关函数：

编号：52

boolean DeleteRow(short row)

入口参数：

  • row 要删除的行号

函数返回：TRUE=成功；FALSE=失败

功能描述：删除row所在的行

相关函数：

编号：73

boolean DeleteCol(short col)

入口参数：

  • col 要删除的列号

函数返回：TRUE=成功；FALSE=失败

功能描述：删除col所在的列

相关函数：

编号：74

short GetColWidth(short nCol)

入口参数：

  • nCol 列

函数返回： 返回列的宽度

功能描述：

读取列的宽度

相关函数：

编号：154

void SetColWidth(short nCol, short nNewWidth)

入口参数：

  • nCol 列
  • nNewWidth 列的宽度

函数返回：无

功能描述：

设置列的宽度

相关函数：

编号：155

short GetRowHeight(short nRow)

入口参数：

  • nRow 行

函数返回： 返回行的高度

功能描述：

读取行的高度

相关函数：

编号：156

void SetRowHeight(short nRow, short nNewHeight)

入口参数：

  • nRow 行
  • nNewHeight 行的高度

函数返回：无

功能描述：

设置行的高度

相关函数：

编号：157

boolean GetSelectRange(BSTR* spStartRowCol, BSTR* spEndRowCol)

入口参数：

出口参数：

  • spStartRowCol 选择范围的开始单元，如："B2"
  • spEndRowCol 选择范围的结束单元，如："G7"

函数返回：TRUE=成功；FALSE=失败

功能描述：

获得当前选择的单元范围

相关函数：

编号：

BSTR GetSelectStartCell()

函数返回：返回选择范围的开始单元，如："B2"

功能描述：

获得选择范围的开始单元，如："B2"

相关函数：

编号：137

BSTR GetSelectEndCell()

函数返回：返回选择范围的结束单元，如："G7"

功能描述：

获得选择范围的结束单元，如："G7"

相关函数：

编号：138

boolean SetAutoAdjustTable(short bAutoRowColSize)

入口参数：

  • bAutoRowColSize 设置报表自动调整行的高度，或者列的宽度

参数说明
bAutoRowColSize = 0; 表示不自动调整，这也是默认状态
bAutoRowColSize = 1; 表示自动调整行的高度
bAutoRowColSize = 17;立即根据文本计算所有的行的高度
bAutoRowColSize = 2; 自动调整列的宽度
bAutoRowColSize = 3;
自动根据控件的大小调整列的宽度，以便看到所有的列

(1)当bAutoRowColSize的第五位为1时，表示立即根据文本计算所有的行的高度，在打印或者打印预览时不再计算；
也就是bAutoRowColSize = 17;因为第5位如果为1，那么就是10进制的16，所以17=16+1；
当bAutoRowColSize = 17时，要在表格行数已经确定固定后调用，这样可以保证所有的行都被计算，
也就是如果参数=17，那么最好在调用EtCell功能的最后调用此函数；
(2)当bAutoRowColSize的第五位为0时，表示不立即计算，显示到哪儿计算到哪儿，在打印或者打印预览时计算所有的行；
也就是bAutoRowColSize = 1;

函数返回：TRUE=成功；FALSE=失败

功能描述：

设置报表自动调整行的高度，或者列的宽度

自动根据控件大小调整列宽的适应；

更为灵活的方式可以通过代吗实现，例如实现EtCell1.SetAutoAdjustTable(17)功能：
Dim rowMaxHeight, rowHeight
For i = 1 To EtCell.GetRowCount
rowMaxHeight = EtCell.GetRowMaxHeight(i) '得到i行的最大高度
rowHeight = EtCell.GetRowHeight(i)
If rowMaxHeight > rowHeight Then '重新设置行的高度
EtCell.SetRowHeight i, rowMaxHeight
End If
Next
EtCell.Redraw

相关函数：GetRowMaxHeight()

编号：218

short GetCellTextHeight(short row, short col)

入口参数：

  • row 单元格所在的行
  • col 单元格所在的列

函数返回：返回单元格文本内容的高度

功能描述：

根据当前单元格的文本内容和单元格的宽度，得到文本的显示高度；

返回的高度是以像素表示。

相关函数：

编号：219

short GetRowMaxHeight(short row)

入口参数：

  • row 所在的行

函数返回：返回一整行中文本的最大高度

功能描述：

根据当前单元格的文本内容和单元格的宽度，得到一整行中文本的最大显示高度；

返回的高度是以像素表示。

通过代吗实现调整所有行的行高例子如下：

Dim rowMaxHeight, rowHeight
For i = 1 To EtCell.GetRowCount
rowMaxHeight = EtCell.GetRowMaxHeight(i) '得到i行的最大高度
rowHeight = EtCell.GetRowHeight(i)
If rowMaxHeight > rowHeight Then '重新设置行的高度
EtCell.SetRowHeight i, rowMaxHeight
End If
Next
EtCell.Redraw

相关函数：

编号：220


Script-Formula

脚本、公式相关函数

公式说明：

  1. 公式中能支持加减乘除四则运算并且支持括号,如下：
    • (D2+D3)*D4
    • (D2+D3-D4)*D5*30/100+G4
  2. 公式中支持的函数有SUM()、COUNT()、MAX()、MIN()
  3. SUM() 表示对单元范围进行求和运算
    • SUM(E2:E10)+F4
    • D5+SUM(E2:E10)*D3+F4
  4. COUNT() 表示统计单元范围的数目
    • COUNT(E2:E10) 统计结果为8
    • COUNT(E2:E10)*D5/D6
  5. MAX() 表示统计单元范围的最大值
    • B2-MAX(E2:E10)*D5/D6
  6. MIN() 表示统计单元范围的最小值
    • B2-MIN(E2:E10)*D5/D6
  7. IF() 条件判断语句函数的支持,举例如下：
    • if(B4,"",C4)
    • if(B5="","test",B5*C5)
    • if(B4*C4=10,"OK",B6*C6)
    • if(SUM(B2:B4)=10,"",B6*C6)
    • if(B5="","aa",B5*(C5+4))
    • if(B5="","aa",B5*(C5+B5))

脚本说明：

  1. 脚本完全支持所有的VBScript语言
  2. 脚本完全支持EtCell控件提供的所有方法和属性

脚本属性：

BSTR Script

含义：

报表的初始化脚本，如果RunStartScript=True时，EtCell控件一打开报表时就先执行此代码

boolean RunStartScript

含义：

设置EtCell控件是否运行初始化脚本，如果RunStartScript=True则执行初始化脚本

BSTR DefaultLibFileName

含义：

报表自定义函数的缺省库文件名称

公式方法：

BSTR GetCellFormula(short row, short col)

入口参数：

  • row 行
  • col 列

函数返回：单元的公式字符串

功能描述：获取单元的公式字符串

相关函数：

编号：67

void SetCellFormula(short row, short col, BSTR sFormula)

入口参数：

  • row 行
  • col 列
  • sFormula 单元的公式

函数返回：无

功能描述：设置单元的公式，例如：sFormula="SUM(B3:B10)",关于公式的定义说明请参考公式部分

相关函数：

编号：66

long CalcFormula(BSTR sFormula)

入口参数：

  • sFormula 公式，如："SUM(E3:E6)"

函数返回：返回计算的结果

功能描述：

进行公式计算，公式可以有开发者动态制定

相关函数：

编号：140

脚本方法：

boolean RunCellScript(short row, short col)

入口参数：

  • row 行
  • col 列

函数返回：TRUE=成功；FALSE=失败

功能描述：运行单元的脚本

相关函数：

编号：48

boolean SetCellScript(short row, short col, BSTR sScript)

入口参数：

  • row 行
  • col 列
  • sScript 单元的脚本字符串

函数返回：TRUE=成功；FALSE=失败

功能描述：设置单元的脚本字符串

相关函数：

编号：58

BSTR GetCellScript(short row, short col)

入口参数：

  • row 行
  • col 列

函数返回：单元的脚本字符串

功能描述：返回单元的脚本字符串

相关函数：

编号：59

boolean SetTableScript(BSTR sScript)

入口参数：

  • sScript 报表的脚本字符串

函数返回：TRUE=成功；FALSE=失败

功能描述：设置报表的脚本字符串，这个脚本在报表刚打开时自动执行；如果报表已经打开，那么就不起作用，一般在设计状态时设置这个属性，也可以通过设置Script属性达到同样的功能

相关函数：

编号：70

BSTR GetTableScript()

函数返回：报表的脚本

功能描述：返回报表的脚本字符串

相关函数：

编号：71

boolean RunScript(BSTR sScript)

入口参数：

  • sScript 脚本字符串

函数返回：TRUE=成功；FALSE=失败

功能描述：程序通过EtCell控件的脚本执行能力，来执行一些特定的功能

相关函数：

编号：152

boolean LoadLib(BSTR sLibFileName)

入口参数：

  • sLibFileName 自定义函数库文件名，包括路径

函数返回：

  • True 函数执行成功
  • False 函数执行失败

功能描述：

装载自定义函数库文件名，便于执行自定义函数

备注：Version 4 将支持自定义函数

相关函数：

编号：135

boolean RunLibFunction(BSTR sFunctionName);

入口参数：

  • sFunctionName 自定义函数名

函数返回：

  • True 函数执行成功
  • False 函数执行失败

功能描述：

运行自定义函数

备注：Version 4 将支持自定义函数

相关函数：

编号：132

相关函数：

short GetCellType(short row, short col);

boolean SetCellAlign(short row, short col, short Align);

BSTR ChRowColStr(short nRow, short nCol);
boolean ChToRowCol(BSTR sRowCol, short* nRow, short* nCol);

boolean SetCellEnable(short minRow, short minCol, short maxRow, short maxCol, boolean bEnable);
boolean SetCellFixed(short minRow, short minCol, short maxRow, short maxCol, boolean bFixed);
boolean AddCellLinkNode(short nRow, short nCol, short nFatherRow, short nFatherCol, boolean bAdd);
boolean SetCellReadOnly(short nRow, short nCol, boolean bReadOnly);


Popup弹出式菜单函数

Popup弹出式菜单函数

方法：

boolean PopupMenu()

入口参数：无

函数返回：

  • True 函数执行成功
  • False 函数执行失败

功能描述：

弹出Popup菜单

一般在右击事件中调用；

右击事件原型：void OnContextMenu(short row, short col, long HWnd, short x, short y);

在MIS开发工具中会自动生成这个事件；而在WEB开发中的HTML页面中需要手工加入：

VBScript触发右击事件方法：

Sub EtCell1_OnContextMenu(row,col, HWnd,x,y)
EtCell1.PopupMenu '弹出在Onload事件中增加的菜单选项
End Sub

JScript触发右击事件方法：

   <SCRIPT FOR="EtCell1"
EVENT="OnContextMenu(row,col, HWnd,x,y)"
LANGUAGE="JScript">
EtCell1.PopupMenu();//弹出在Onload事件中增加的菜单选项
</SCRIPT>

相关函数：

编号：213

boolean AddMenu(BSTR strName, BSTR strScript, short nType)

入口参数：

  • strName 菜单显示的字符串 名字最前面要是有-，那么表示分割符菜单选项
  • strScript 选择菜单选项后的相应代码程序
  • nType 增加的菜单类型

函数返回：

  • True 函数执行成功
  • False 函数执行失败

功能描述：

增加Popup菜单的选项

1、 nType = 0时
strScript表示要用EtCell控件支持的VBScript脚本实现菜单的相应功能 | 当当前报表退出时，菜单消失
2、nType = 1时
strScript表示WEB页面中的一个函数名，可以是VBScript函数或者JScript函数，函数定义在html页面中，或者.js文件中，或者定义在.vbs文件中 | 当当前报表退出时，菜单消失 备注：此项只用于WEB开发
3、nType = 3时
strScript表示开发工具中的其他控件的响应函数名，这样就可以和其他控件的相应同步；例如和Button功能绑定，这样可以省掉代码 | 当当前报表退出时，菜单消失 备注：此项只用于MIS开发
4、nType = 256时
strScript表示要用EtCell控件支持的VBScript脚本实现菜单的相应功能 | 和EtCell控件具有同等的生命周期，EtCell退出，菜单才消失；
5、nType = 257时
strScript表示WEB页面中的一个函数名，可以是VBScript函数或者JScript函数，函数定义在html页面中，或者.js文件中，或者定义在.vbs文件中 | 和EtCell控件具有同等的生命周期，EtCell退出，菜单才消失； 备注：此项只用于WEB开发
6、nType = 258时
strScript表示开发工具中的其他控件的响应函数名，这样就可以和其他控件的相应同步；例如和Button功能绑定，这样可以省掉代码 | 和EtCell控件具有同等的生命周期，EtCell退出，菜单才消失； 备注：此项只用于MIS开发

例子：

/此菜单永久有效,点击菜单选项的实现函数，利用EtCell内置支持的VBScript脚本语句实现
EtCell1.AddMenu("打印预览","EtCell.PrintPreview",256);

//此菜单永久有效,点击菜单选项的实现函数，利用EtCell内置支持的VBScript脚本语句实现
EtCell1.AddMenu("打印","EtCell.Print true",256););
//此菜单永久有效，点击菜单选项的实现函数，利用页面的JScript函数 window_onload()
EtCell1.AddMenu("页面重新OnLoad","window_onload",257););
//增加菜单的分割符
EtCell1.AddMenu("-","window_onresize",1);
     //此菜单不是永久有效，报表退出就消失，点击菜单选项的实现函数，利用页面的JScript函数
    window_onresize()
EtCell1.AddMenu("最大化窗口","window_onresize",1);
   var strScript = "EtCell.OpenDoc
  \"xz2.eT\"";
EtCell1.AddMenu("关于EtCell的弹出菜单",strScript,0);
strScript = "EtCell.OpenDoc \"wxht.eT\"";
EtCell1.AddMenu("打开销售确认书报表",strScript,0);
//EtCell1.EnableMenu("分割单元格",false);

相关函数：

编号：214

void DeleteAllMenu()

函数返回：

  • 无

功能描述：

删除EtCell控件中所有的Popup选项，以便于重新设置或者取消弹出式菜单

相关函数：

编号：215

boolean EnableMenu(BSTR strName, boolean bEnabled)

入口参数：

  • strName 菜单显示的字符串
  • bEnabled 是否使能，True 表示使能 False 表示让菜单无效

函数返回：

  • True 函数执行成功
  • False 函数执行失败

功能描述：

设置菜单的使能或者无效

相关函数：

编号：216

例子：
  1、//触发右击事件
//VC 例子 设置POPUP菜单
void CMenuDlg::OnOnContextMenuEtcellctrl1(short row, short col, long
  HWnd, short x, short y)
{
// TODO: Add your control notification handler code here
/**///设置POPUP菜单
CMenu menu;
menu.LoadMenu(IDR_MENU_POPUP);
CWnd *pWnd = FromHandle((HWND)HWnd);
menu.GetSubMenu(0)->TrackPopupMenu(TPM_LEFTALIGN |TPM_RIGHTBUTTON,
x, y,pWnd);

}

2、//VB的例子，其中aaa是文件菜单
Private Sub EtCell1_OnContextMenu(ByVal row As Integer, ByVal col As Integer, ByVal HWnd As Long, ByVal x As Integer, ByVal y As Integer)
PopupMenu aaa
End Sub

3、WEB方式例子：
//在页面中通过JScript脚本触发右击事件
  <SCRIPT FOR="EtCell1" EVENT="OnContextMenu(row,col,
  HWnd,x,y)" LANGUAGE="JScript">
EtCell1.PopupMenu();//弹出在Onload事件中增加的菜单选项
</SCRIPT>
在页面的Onload事件中增加的函数，以便实现WEB页面的Popup菜单；
//增加弹出式菜单,并且是动态变化的

//此菜单永久有效,点击菜单选项的实现函数，利用EtCell内置支持的VBScript脚本语句实现
EtCell1.AddMenu("打印预览","EtCell.PrintPreview",256);

//此菜单永久有效,点击菜单选项的实现函数，利用EtCell内置支持的VBScript脚本语句实现
EtCell1.AddMenu("打印","EtCell.Print true",256););
//此菜单永久有效，点击菜单选项的实现函数，利用页面的JScript函数 window_onload()
EtCell1.AddMenu("页面重新OnLoad","window_onload",257););
//增加菜单的分割符
EtCell1.AddMenu("-","window_onresize",1);
     //此菜单不是永久有效，报表退出就消失，点击菜单选项的实现函数，利用页面的JScript函数
    window_onresize()
EtCell1.AddMenu("最大化窗口","window_onresize",1);
   var strScript = "EtCell.OpenDoc
  \"xz2.eT\"";
EtCell1.AddMenu("关于EtCell的弹出菜单",strScript,0);
strScript = "EtCell.OpenDoc \"wxht.eT\"";
EtCell1.AddMenu("打开销售确认书报表",strScript,0);
//EtCell1.EnableMenu("分割单元格",false);


Internet

Internet存取方法

boolean HttpGetFile(LPCTSTR sURL, LPCTSTR sSaveFile)

入口参数：

  • sURL 下载文件的URL表示 如：http://www.etcell.com/download/etcell2.zip
  • sSaveFile 下载后保存的文件名 如： C:\Download\EtCell2.zip

函数返回：

  • True 函数执行成功
  • False 函数执行失败

功能描述：

利用HTTP协议 从服务器下载文件

相关函数：

编号：148

BSTR HttpGetText(LPCTSTR sURL)

入口参数：

  • sURL 文本文件的URL表示 如：http://www.etcell.com/WebEtCell/XMLSamples/XML模式范例.xml

函数返回：返回文本文件字符串或者HTML字符串

功能描述：

利用HTTP协议 从服务器获取文本文件字符串，sRUL可以是服务器端的ASP程序或者文本文件

相关函数：

编号：197

BSTR HttpPost(LPCTSTR sURL, LPCTSTR sFormData)

入口参数：

  • sURL 要提交的接收URL程序，如： http://www.etcell.com/RecvForm.asp，这个程序负责接收表单内容
  • sFormData 表单的具体内容，如： "ID=济南昂利万软件公司&code=代码号&UserName=具体的用户名"

函数返回：

  • True 函数执行成功
  • False 函数执行失败

功能描述：

通过HTTP协议的Post上载Form 信息，并取回返回信息给一个字符串变量；此方法就是IE浏览器中Form表单的提交
其中 strFormData = _T("ID="+certifyInfo.term_certify+"&s_code="+certifyInfo.term_pass);

相关函数：

编号：149

boolean HttpPostSaveToFile(LPCTSTR sURL, LPCTSTR sFormData, LPCTSTR sSaveFileName)

入口参数：

  • sURL 要提交的接收URL程序，如： http://www.etcell.com/RecvForm.asp，这个程序负责接收表单内容
  • sFormData 表单的具体内容，如： "ID=济南昂利万软件公司&code=代码号&UserName=具体的用户名"
  • sSaveFileName 提交后返回的内容保存到的文件名

函数返回：

  • True 函数执行成功
  • False 函数执行失败

功能描述：

通过HTTP协议的Post上载Form 信息，返回信息保存到文件；此方法就是IE浏览器中Form表单的提交
其中 strFormData = _T("ID="+certifyInfo.term_certify+"&s_code="+certifyInfo.term_pass);

相关函数：

编号：150

boolean HttpPutFile(LPCTSTR sLocalFile, LPCTSTR sHost, LPCTSTR sHostFileName)

入口参数：

  • sLocalFile 本地的文件名，如："C:\Upload\EtCell2.zip"
  • sHost 要上载的主机名： 如："192.168.1.50" 或者域名 "www.etcell.com"
  • sHostFileName 在主机上保存的文件名 ，如： "Upload/EtCell2.zip"

函数返回：

  • True 函数执行成功
  • False 函数执行失败

功能描述：

通过HTTP协议把本地文件上载到主机的特定目录下;

备注：

(1)WEB服务器需要支持HTTP协议的PUT方法；

(2)还需要把WEB服务器的目录设置为可以写入的属性(使用此方法注意安全问题)；

(3)此功能是纯粹利用WEB服务器的功能实现文件上传，服务器端不需要安装任何的组件；

相关函数：

编号：151

boolean ImportXML(LPCTSTR lpXML)

入口参数：

  • lpXML XML字符串

函数返回：True 函数执行成功；False 函数执行失败

功能描述：

导入XML到EtCell报表，导入后报表自动根据XML进行设置；

lpXML字符串可以是从HttpPost()方法返回的字符串，解决远程数据互动；

和HttpPost或者其他函数配合，解决远程数据互动。

有关EtCell支持的XML格式请参考有关资料

相关函数：

编号：177

BSTR ExportXML(short nExportType)

入口参数：

  • nExportType 要输出为XML格式的报表类型，如把Et记录集内容输出为XML

函数返回：XML格式的字符串

功能描述：

把EtCell报表输出为XML格式字符串

相关函数：

编号：178

BOOL RunWebScriptFunc(LPCTSTR strFunctionName, LPCTSTR strParam)

入口参数：

  • strFunctionName 脚本函数名
  • strParam 脚本函数需要的参数 ，多个参数用,分割

函数返回：XML格式的字符串

功能描述：

必须是WEB插件才能执行此函数；

运行JavaScript脚本、VBScript脚本函数；

脚本函数可以在Html页面中，也可以在.JS文件中，或者在.VBS文件中；

EtCell利用这个函数充分利用浏览器的脚本支持功能，使EtCell可以非常好的支持Web开发；弥补了EtCell不能做到的功能；

例如：

'运行Web页中的函数,可以是JavaScript 也可以是VBScript函数
EtCell.RunWebScriptFunc "openWin","OpenWebFile.asp,500,400"
'其中openWin是EtCell所在页面定义的脚本函数

相关函数：

编号：179

附录：

EtCell支持的XML格式如下：

一、EtCell支持的XML格式

这是EtCell支持的XML标签的头
<EtCell> 支持的XML头信息表示EtCell文件
<ID>EtCell文件名.et</ID>
<?xml version="1.0" encoding="gb2312"?>
<version>3.0</version> EtCell文件版本号

首先需要在WinTable中定义单元别名，或者通过AddCellAlias()函数增加别名
然后就可以通过ASP,JSP，PHP或者其他开发语言输出下面的设置别名的值
设置后EtCell就会自动根据XML数据更新报表
<ALIASDATA> 设置别名单元的数据内容
<Name>张三</Name> 单元格别名是：Name,别名的值：张三
<Address>济南山大路</Address> 单元格别名是：Address,别名的值：济南山大路
</ALIASDATA>

通过XML方式动态增加单元格的别名
设置时单元格的行、列是固定指定的，设置后随着增加行和删除行等操作，别名所在单元格的行列会自动更新
<SET_ALIAS> 通过XML增加别名，相当于函数AddCellAlias()
<ALIAS>
<Row>别名单元所在的行</Row>
<Col>别名单元所在的列</Col>
<Name>要设置的别名名字</Name>
<Demo>别名含义</Demo>
</ALIAS>
 <ALIAS>
<Row>别名单元行2</Row>
<Col>别名单元列2</Col>
<Name>别名名字2</Name>
<Demo>别名含义2</Demo>
</ALIAS>
</SET_ALIAS>

首先需要在WinTable中定义ET数据集，或者通过EtCell提供的函数动态设置
然后就可以通过ASP,JSP，PHP或者其他开发语言输出下面的设置ET数据集的XML格式
设置后EtCell就会自动根据XML数据绑定到ET数据集上，以便实现后台数据库和ET数据集的绑定
<ROWDATA> 设置EtCell数据集的数据内容
<ROW> 每一个<ROW>表示一个一条记录
其中Name是ET数据集的字段名，相当于函数SetFieldValue("Name","字段值")
<Name>字段值---名字</Name>
<Company>字段值--公司名</Company> 其中Company是ET数据集的字段名
//其中color属性表示字体颜色，bkcolor表示单元格背景颜色
//默认情况下如果不存在着两个属性，那么按式样设定的;如果存在，那么强制更改;
 <Num color="#FF0000" bkcolor="#0000FF">字段值--公司名</Num>
</ROW>
<ROW>
<Name>Name2</Name>
<Company>Company2</Company>

//其中color属性表示字体颜色，bkcolor表示单元格背景颜色
//默认情况下如果不存在着两个属性，那么按式样设定的;如果存在，那么强制更改;
<Num color="#FF0000" bkcolor="#0000FF">字段值--公司名</Num>
</ROW>
</ROWDATA>

通过XML数据执行EtCell脚本
<COMMANDS> 执行EtCell脚本命令格式
EtCell.SetCell 2,2, "设置的值"
EtCell.SetAliasCell "Age","22"
</COMMANDS>

通过XML数据执行EtCell脚本
SCRIPT是对COMMANDS标签的扩充和增强
<SCRIPT> 执行EtCell脚本命令格式
EtCell.SetCell 2,2, "设置的值"
EtCell.SetAliasCell "Age","22"
</SCRIPT>

通过XML数据设置普通单元格的内容
要是没有命名别名或者ET数据集，那么可以通过下面的XML格式设置具体单元格的值
<CELLDATA> 设置EtCell普通单元的数据内容
<CELL>
<ROW>3</ROW>
<COL>5</COL>
<VALUE>1111</VALUE>
</CELL>
<CELL>
<ROW>13</ROW>
<COL>15</COL>
<VALUE>2222</VALUE>
</CELL>
</CELLDATA >

这是EtCell支持的XML标签的尾
</EtCell>

二、EtCell支持的ComboBox XML格式

说明：如果没有传送来的数据，那么就用预先设置的内容；

<EtCell>
<ID>EtCell文件名.et</ID>
<?xml version="1.0" encoding="gb2312"?>
<version>3.0</version>

<COMBOBOX> ComboBox的数据格式<支持多列>
<CELL> 所有是ComboBox类型的数据
<CELLALIAS>Name</CELLALIAS> ComboBox所在的单元别名
<COLCOUNT>2</ COLCOUNT > ComboBox总列数
<HIDECOL>-1<HIDECOL> 在ComboBox中不显示的列
<ROW> 每一行
 <Name>Name1</Name> ComboBox中的其中一列
 <Company>Name1</Company>
</ROW>
<ROW> 每一行
 <Name>Name1</Name> ComboBox中的其中一列
 <Company>Name1</Company>
</ROW>
</CELL>
<CELL>
<CELLALIAS>Name</CELLALIAS> ComboBox所在的单元别名
<HIDECOL>Name<HIDECOL> 在ComboBox中不显示的列
<ROW> 每一行
 <Name>Name1</Name> ComboBox中的其中一列
 <Company>Name1</Company>
</ROW>
<ROW> 每一行
 <Name>Name1</Name> ComboBox中的其中一列
 <Company>Name1</Company>
</ROW>
</CELL>
</ COMBOBOX >
</EtCell>

举例如下：
<EtCell>
<ID>EtCell文件名.et</ID>
<?xml version="1.0" encoding="gb2312"?>
<version>3.0</version>

<COMBOBOX>
<CELL>
<CELLALIAS>Sex</CELLALIAS>
<COLCOUNT>1</COLCOUNT>
<COLHIDE>-1</COLHIDE>
<ROW><1>男</1></ROW>
<ROW><1>女</1></ROW>
</CELL>

<CELL>
<CELLALIAS>MinZu</CELLALIAS>
<COLCOUNT>1</COLCOUNT>
<COLHIDE>-1</COLHIDE>
<ROW><1>汉族</1></ROW>
<ROW><1>回族</1></ROW>
</CELL>

<CELL>
<CELLALIAS>Zzmm</CELLALIAS>
<COLCOUNT>1</COLCOUNT>
<COLHIDE>-1</COLHIDE>
<ROW><1>党员</1></ROW>
<ROW><1>团员</1></ROW>
<ROW><1>群众</1></ROW>
</CELL>

<CELL>
<CELLALIAS>xzzw</CELLALIAS>
<COLCOUNT>1</COLCOUNT>
<COLHIDE>-1</COLHIDE>
<ROW><1>省长</1></ROW>
<ROW><1>市长</1></ROW>
<ROW><1>局长</1></ROW>
<ROW><1>处长</1></ROW>
<ROW><1>科长</1></ROW>
</CELL>

</COMBOBOX>

</EtCell>

三、EtCell支持的数据库更新XML格式

<EtCell>
<ID>EtCell文件名.et</ID>
<?xml version="1.0" encoding="gb2312"?>
<version>3.0</version>

<ADDNEW_ROWDATA> 从客户端发送到服务器新增加的数据《只发增加的记录》
<ROW > 每一行
<Name>Name1</Name> 数据库字段的值
<Company>Name1</Company>
</ROW>
<ROW > 每一行
<Name>Name1</Name> 数据库字段的值
<Company>Name1</Company>
</ROW>
</ ADDNEW_ROWDATA >

<UPDATE_ROWDATA> 从客户端发送到服务器进行更新的数据《只发需要更新的记录》
<ROW ID=”记录的唯一记录号”> 每一行
<Name>Name1</Name> 数据库字段的值
<Company>Name1</Company>
</ROW>
<ROW ID=”记录的唯一记录号”> 每一行
<Name>Name1</Name> 数据库字段的值
<Company>Name1</Company>
</ROW>
</ UPDATE_ROWDATA >

<DELETE_ROWDATA> 从客户端发送到服务器删除的数据《只发删除的记录》
<ROW > 每一行
<Name>Name1</Name> Filter的字段值，组合决定那条记录
<Company>Name1</Company>
</ROW>
<ROW > 每一行
<Name>Name1</Name> Filter的字段值，组合决定那条记录
<Company>Name1</Company>
</ROW>
</ DELETE_ROWDATA >
</EtCell>

四、ASP产生XML和ET报表绑定的例子（GetDB.asp）

<%
'EtCell支持的XML的开始标志
str = "<EtCell>" & chr(13)
str = str & "<ID>EtCell文件名.et</ID>" & chr(13)
str = str & "<?xml version='1.0'?> " & chr(13)
str = str & "<version>2.5</version> " & chr(13)

'ET数据集XML的开始标志
str = str & "<ROWDATA>" & chr(13)

'其中aaa,bbb,ccc是ET数据集的字段名
'这是个模拟从数据库中随机产生数据
'用户可以根据自己的需要，利用ASP访问数据库的方法替换掉随机数据
for i=0 to 10
str = str & "<ROW>" & chr(13)
str = str & "<aaa>货品" & i & "</aaa>" & chr(13)
str = str & "<bbb>" & i*300+1 & "</bbb>" & chr(13)
str = str & "<ccc>" & i*2000+1 & "</ccc>" & chr(13)
str = str & "</ROW>" & chr(13)
next

'ET数据集XML的结束标志
str = str & "</ROWDATA>" & chr(13)

'别名XML的开始标志
str = str & "<ALIASDATA>" & chr(13) '别名的开始部分

'通过XML设置别名的内容
'其中Name,lName是在WinTable中定义的单元格别名
username = "ASP的变量名"
str = str & "<Name>" & "济南昂利万软件有限公司" & "</Name>" & chr(13)
str = str & "<lName>" & username & "</lName>" & chr(13)

'别名XML的结束标志
str = str & "</ALIASDATA>" & chr(13)

'EtCell支持的XML的结束标志
str = str & "</EtCell>" & chr(13)

'通过ASP的Response发送给调用此ASP的函数HttpGetText()或者HttpPost()
Response.write str
%>

五、JSP产生XML和ET报表绑定的例子（GetDB.jsp）

<%@ page contentType="text/html;charset=gb2312"%>

<%
//下面都是EtCell报表插件支持的XML格式
//注意：在通过JSP输出XML时，不要输出<html><body>标签
//有关报表式样可以通过WinTable制表工具进行可视化设置
//此例子只是起到抛砖引玉的目的，更多功能，可以参看EtCell支持的XML数据格式
//并且网站提供的ASP的例子，只要改写为JSP的语法，那么就会正常运行
%>

<%
String str = null;
String username = null;

//输出EtCell支持的XML数据的开始标志
str = "<EtCell>" + "\n";
str = str + "<ID>bbb.et</ID>" + "\n";
str = str + "<?xml version='1.0'?> " + "\n";
str = str + "<version>2.5</version> " + "\n";

//输出ET记录集的开始标志
str = str + "<ROWDATA>" + "\n";

//在这里填加JSP访问数据库的代码
//如：连接数据库等

//下面的代码是模拟从数据库中取得了数据，用for循环方式把数据库的数据输出给浏览器
//JSP所有的输出都会返回到调用函数 HttpGetText()或者HttpPost()
//有关这两个函数，可以参看有关SDK说明
for (int i=1; i<=10; i++)
{
//每一条记录都要用<ROW>表示，这样EtCell就会自动认为是一条记录，并根据报表式样自动处理
str = str + "<ROW>" + "\n";

//其中aaa,bbb,ccc是报表式样定义的ET字段名，这些字段名可以和后台的任何数据库字段绑定
//绑定方法：只要把JSP访问数据库的字段数据作为标签值放到ET字段中就行了，方法如下；
str = str + "<aaa>ET字段aaa值:" + i + "</aaa>" + "\n";
str = str + "<bbb>" + i*300+1 + "</bbb>" + "\n";
str = str + "<ccc>" + i*2000+1 + "</ccc>" + "\n";

//每一条记录都要用</ROW>表示结束
str = str + "</ROW>" + "\n";
}
//输出ET记录集的结束标志
str = str + "</ROWDATA>" + "\n";

//别名XML的开始标志
str = str + "<ALIASDATA>" + "\n"; //别名的开始部分

//通过XML设置别名的内容
//其中Name,lName是在WinTable中定义的单元格别名
username = "JSP的变量名";
str = str + "<Name>" + "济南昂利万软件有限公司"
+ "</Name>" + "\n";
str = str + "<lName>" + username & "</lName>" + "\n";

//别名XML的结束标志
str = str + "</ALIASDATA>" + "\n";

//输出EtCell支持的XML数据的结束标志
str = str + "</EtCell>" + "\n";

//通过JSP的out.print发送给调用此JSP的函数HttpGetText()或者HttpPost()
out.print(str);
%>


的XML格式说明

EtCell插件支持的XML格式说明

XML存取方法

EtCell支持的XML格式如下：

一、EtCell支持的XML格式

这是EtCell支持的XML标签的头

<?xml version="1.0" encoding="gb2312"?>
<EtCell> 支持的XML头信息表示EtCell文件

首先需要在WinTable中定义单元别名，或者通过AddCellAlias()函数增加别名
然后就可以通过ASP,JSP，PHP或者其他开发语言输出下面的设置别名的值
设置后EtCell就会自动根据XML数据更新报表
<ALIASDATA> 设置别名单元的数据内容
<Name>张三</Name> 单元格别名是：Name,别名的值：张三
<Address>济南山大路</Address> 单元格别名是：Address,别名的值：济南山大路
</ALIASDATA>

通过XML方式动态增加单元格的别名
设置时单元格的行、列是固定指定的，设置后随着增加行和删除行等操作，别名所在单元格的行列会自动更新
<SET_ALIAS> 通过XML增加别名，相当于函数AddCellAlias()
<ALIAS>
<Row>别名单元所在的行</Row>
<Col>别名单元所在的列</Col>
<Name>要设置的别名名字</Name>
<Demo>别名含义</Demo>
</ALIAS>
 <ALIAS>
<Row>别名单元行2</Row>
<Col>别名单元列2</Col>
<Name>别名名字2</Name>
<Demo>别名含义2</Demo>
</ALIAS>
</SET_ALIAS>

首先需要在WinTable中定义ET数据集，或者通过EtCell提供的函数动态设置
然后就可以通过ASP,JSP，PHP或者其他开发语言输出下面的设置ET数据集的XML格式
设置后EtCell就会自动根据XML数据绑定到ET数据集上，以便实现后台数据库和ET数据集的绑定
<ROWDATA> 设置EtCell数据集的数据内容
<ROW> 每一个<ROW>表示一个一条记录
其中Name是ET数据集的字段名，相当于函数SetFieldValue("Name","字段值")
<Name>字段值---名字</Name>
<Company>字段值--公司名</Company> 其中Company是ET数据集的字段名
//其中color属性表示字体颜色，bkcolor表示单元格背景颜色
//默认情况下如果不存在着两个属性，那么按式样设定的;如果存在，那么强制更改;
 <Num color="#FF0000" bkcolor="#0000FF">字段值--公司名</Num>
</ROW>
<ROW>
<Name>Name2</Name>
<Company>Company2</Company>

//其中color属性表示字体颜色，bkcolor表示单元格背景颜色
//默认情况下如果不存在着两个属性，那么按式样设定的;如果存在，那么强制更改;
<Num color="#FF0000" bkcolor="#0000FF">字段值--公司名</Num>
</ROW>
</ROWDATA>

通过XML数据执行EtCell脚本
<COMMANDS> 执行EtCell脚本命令格式
EtCell.SetCell 2,2, "设置的值"
EtCell.SetAliasCell "Age","22"
</COMMANDS>

通过XML数据执行EtCell脚本
SCRIPT是对COMMANDS标签的扩充和增强
<SCRIPT> 执行EtCell脚本命令格式
EtCell.SetCell 2,2, "设置的值"
EtCell.SetAliasCell "Age","22"
</SCRIPT>

通过XML数据设置普通单元格的内容
要是没有命名别名或者ET数据集，那么可以通过下面的XML格式设置具体单元格的值
<CELLDATA> 设置EtCell普通单元的数据内容
<CELL>
<ROW>3</ROW>
<COL>5</COL>
<VALUE>1111</VALUE>
</CELL>
<CELL>
<ROW>13</ROW>
<COL>15</COL>
<VALUE>2222</VALUE>
</CELL>
</CELLDATA >

这是EtCell支持的XML标签的尾
</EtCell>

二、EtCell支持的设置具体单元格XML格式 <CELLDATA>

说明：如果没有传送来的数据，那么就用预先设置的内容；

<?xml version="1.0" encoding="gb2312"?>
<EtCell>

通过XML数据设置普通单元格的内容
要是没有命名别名或者ET数据集，那么可以通过下面的XML格式设置具体单元格的值
<CELLDATA> 设置EtCell普通单元的数据内容
<CELL>
<ROW>3</ROW>
<COL>5</COL>
<VALUE>1111</VALUE>
</CELL>
<CELL>
<ROW>13</ROW>
<COL>15</COL>
<VALUE>2222</VALUE>
</CELL>
</CELLDATA >

</EtCell>

备注说明：
其中<CELL>标签支持的属性如下：

属性 | 含义
Row | 单元格所在行
Col | 列
Value | 单元格缺省值
Type | 单元格类型
Mime | 编码形式（用于二进制数据）
File | 文件URL路径（用于图片或者其他）
Mode | 单元格的模式，扩展用
Name |
Color | 单元格的文字颜色
bkcolor | 单元格的背景颜色
FontName | 文字字体
FontSize | 字体大小
href | 单元格URL联接的网址
target | 打开单元格URL联接的网址的浏览器目标窗口
Alt | 单元格URL联接的提示
Print | 是否打印此单元（套打控制用）

举例如下：
<?xml version="1.0" encoding="gb2312"?>
<EtCell>

<CELLDATA>

<CELL row="6" col="2"
bkcolor="#FF00FF" color="#0000ff" value="工作单位" href="http://www.webtea.com.cn/" />
<CELL row="6" col="2" FontName="华文行楷" FontSize="16" value="工作单位"  />

<CELL row="8" col="3" type="picture" file="http://www.etcell.com/Images/prduect.gif" mode="401" />

图片文件以二进制方式的存在于XML数据中
其中二进制方式的数据以BASE64编码方式
<CELL row="13" col="6" type="picture" mime="image/jpeg" name="sgcs07a3.jpg" mode="402">
<![CDATA[
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
]]>
</Cell>

</CELLDATA>

</EtCell>

三、EtCell支持的别名XML格式 <ALIASDATA>

说明：如果没有传送来的数据，那么就用预先设置的内容；

<?xml version="1.0" encoding="gb2312"?>
<EtCell>

首先需要在WinTable中定义单元别名，或者通过AddCellAlias()函数增加别名
然后就可以通过ASP,JSP，PHP或者其他开发语言输出下面的设置别名的值
设置后EtCell就会自动根据XML数据更新报表
<ALIASDATA> 设置别名单元的数据内容
<Name>张三</Name> 单元格别名是：Name,别名的值：张三
<Address>济南山大路</Address> 单元格别名是：Address,别名的值：济南山大路
</ALIASDATA>

</EtCell>

备注说明：
其中别名标签支持的属性如下：

属性 | 含义
Value | 单元格缺省值
Type | 单元格类型
Mime | 编码形式（用于二进制数据）
File | 文件URL路径（用于图片或者其他）
Mode | 单元格的模式，扩展用
Name |
Color | 单元格的文字颜色
bkcolor | 单元格的背景颜色
FontName | 文字字体
FontSize | 字体大小
href | 单元格URL联接的网址
target | 打开单元格URL联接的网址的浏览器目标窗口
Alt | 单元格URL联接的提示
Print | 是否打印此单元（套打控制用）

举例如下：
<?xml version="1.0" encoding="gb2312"?>
<EtCell>

<ALIASDATA>

<Name Value="别名单元格值" />

<Address Type="Text" Value="山东省济南市" />

<ShenFenZheng bkcolor="#0F10FF" href="http://www.webtea.com.cn/" />

<PicURL type="picture" file="http://www.etcell.com/Images/prduect.gif" mode="402" />

<Pic type="picture" mime="image/jpeg" name="sgcs07a3.jpg" mode="401">
<![CDATA[
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
]]>
</Pic>

</ALIASDATA>

</EtCell>

四、EtCell支持的ET数据集 XML格式 <RowData>

说明：如果没有传送来的数据，那么就用预先设置的内容；

<?xml version="1.0" encoding="gb2312"?>
<EtCell>

首先需要在WinTable中定义ET数据集，或者通过EtCell提供的函数动态设置
然后就可以通过ASP,JSP，PHP或者其他开发语言输出下面的设置ET数据集的XML格式
设置后EtCell就会自动根据XML数据绑定到ET数据集上，以便实现后台数据库和ET数据集的绑定
<ROWDATA> 设置EtCell数据集的数据内容
<ROW> 每一个<ROW>表示一个一条记录
其中Name是ET数据集的字段名，相当于函数SetFieldValue("Name","字段值")
<Name>字段值---名字</Name>
<Company>字段值--公司名</Company> 其中Company是ET数据集的字段名
//其中color属性表示字体颜色，bkcolor表示单元格背景颜色
//默认情况下如果不存在着两个属性，那么按式样设定的;如果存在，那么强制更改;
 <Num color="#FF0000" bkcolor="#0000FF">字段值--公司名</Num>
</ROW>
<ROW>
<Name>Name2</Name>
<Company>Company2</Company>

//其中color属性表示字体颜色，bkcolor表示单元格背景颜色
//默认情况下如果不存在着两个属性，那么按式样设定的;如果存在，那么强制更改;
<Num color="#FF0000" bkcolor="#0000FF">字段值--公司名</Num>
</ROW>
</ROWDATA>

</EtCell>

备注说明：
其中ET字段名标签支持的属性如下：

属性 | 含义
Value | 单元格缺省值
Type | 单元格类型
Mime | 编码形式（用于二进制数据）
File | 文件URL路径（用于图片或者其他）
Mode | 单元格的模式，扩展用
Name |
Color | 单元格的文字颜色
bkcolor | 单元格的背景颜色
FontName | 文字字体
FontSize | 字体大小
href | 单元格URL联接的网址
target | 打开单元格URL联接的网址的浏览器目标窗口
Alt | 单元格URL联接的提示
Print | 是否打印此单元（套打控制用）

举例如下：
<?xml version="1.0" encoding="gb2312"?>
<EtCell>

<RowData>

<ROW>
<Name Value="字段值" />
<Company Value="济南昂利万软件有限公司" Href="http://www.etcell.com/" />
<Num Value= "2003" color="#FF0000" bkcolor="#0000FF" />
</ROW>
<ROW>
<Name>Name2</Name>
<Company>Company2</Company>
<Num color="#FF0000" bkcolor="#0000FF">2004</Num>
</ROW>
<ROW>
<Name>Name2</Name>
<Company >Company2</Company>
<Num color="#FF0000" bkcolor="#0000FF">2004</Num>
</ROW>
</RowData>

</EtCell>

五、EtCell支持的ComboBox XML格式

说明：如果没有传送来的数据，那么就用预先设置的内容；

<?xml version="1.0" encoding="gb2312"?>
<EtCell>

<COMBOBOX> ComboBox的数据格式<支持多列>
<CELL> 所有是ComboBox类型的数据
<CELLALIAS>Name</CELLALIAS> ComboBox所在的单元别名
<COLCOUNT>2</ COLCOUNT > ComboBox总列数
<HIDECOL>-1<HIDECOL> 在ComboBox中不显示的列
<ROW> 每一行
 <Name>Name1</Name> ComboBox中的其中一列
 <Company>Name1</Company>
</ROW>
<ROW> 每一行
 <Name>Name1</Name> ComboBox中的其中一列
 <Company>Name1</Company>
</ROW>
</CELL>
<CELL>
<CELLALIAS>Name</CELLALIAS> ComboBox所在的单元别名
<HIDECOL>Name<HIDECOL> 在ComboBox中不显示的列
<ROW> 每一行
 <Name>Name1</Name> ComboBox中的其中一列
 <Company>Name1</Company>
</ROW>
<ROW> 每一行
 <Name>Name1</Name> ComboBox中的其中一列
 <Company>Name1</Company>
</ROW>
</CELL>
</ COMBOBOX >
</EtCell>

备注说明：
其中<CELL>标签支持的属性如下：

属性 | 含义
AliasName | 单元格别名
Value | 单元格缺省值
ColCount | ComboBox共有多少列
ColHide | 隐藏列的索引《从0算起》
checkbox | ComboBox是否CheckBox
color | 单元格的文字颜色
bkcolor | 单元格的背景颜色
FontName | 文字字体
FontSize | 字体大小
Print | 是否打印此单元（套打控制用）

举例如下：
<?xml version="1.0" encoding="gb2312"?>
<EtCell>

<COMBOBOX>
<Cell AliasName="Name" bkcolor="#FF00FF" value="男性朋友" CheckBox="false" ColCount="2" ColHide="0">
<ROW>
<1>男</1>
<2>男性朋友</2>
</ROW>
<ROW>
<1>女</1>
<2>女性朋友</2>
</ROW>
</CELL>

<CELL AliasName="MinZu" value="汉族" checkbox="false" ColCount="1">
<ROW><1>汉族</1></ROW>
<ROW><1>回族</1></ROW>
</CELL>

<CELL AliasName="Zzmm" value="群众" checkbox="true" ColCount="1">
<ROW><1>党员</1></ROW>
<ROW><1>团员</1></ROW>
<ROW><1>群众</1></ROW>
</CELL>

<CELL>
<CELLALIAS>xzzw</CELLALIAS>
<COLCOUNT>1</COLCOUNT>
<COLHIDE>-1</COLHIDE>
<ROW><1>省长</1></ROW>
<ROW><1>市长</1></ROW>
<ROW><1>局长</1></ROW>
<ROW><1>处长</1></ROW>
<ROW><1>科长</1></ROW>
</CELL>

</COMBOBOX>

</EtCell>

六、EtCell支持的脚本/命令 XML格式 <SCRIPT> <COMMAND>

说明：如果没有传送来的数据，那么就用预先设置的内容；

<?xml version="1.0" encoding="gb2312"?>
<EtCell>

可以通过XML把脚本命令传送到浏览器客户端执行
通过XML的脚本控制客户端的一些设置，例如：
1、动态创建报表
2、设置报表的打印功能
3、只要是EtCell提供的SDK，那么在这个标签中都可以调用！
备注：
(1)如果脚本中引用了一些特殊字符，那么请改写为<![CDATA[ ]]> 方式，方法见下；
(2)<SCRIPT> <COMMANDS> <COMMAND>起到同样的功能！
<SCRIPT> 设置EtCell数据集的数据内容
<![CDATA[
EtCell.CreateTable 20,20
EtCell.MergeCells 2,2,2,10
EtCell.OpenDoc "test.eT"
strXML = EtCell.HttpGetText("GetDB.asp")
EtCell.ImportXML strXML
'EtCell.SetCell 2,2,"<Saler value='张君1' />"
'EtCell.InsertRow 1
]]>
</SCRIPT>

<COMMAND>
EtCell.CreateTable 20,20
EtCell.MergeCells 2,2,2,10
EtCell.SetCell 2,2,"设置单元格的值"
'EtCell.InsertRow 1
</COMMAND>
</EtCell>

七、EtCell支持的分组报表 XML格式 <GROUP_ROWDATA>

说明：如果没有传送来的数据，那么就用预先设置的内容；

<?xml version="1.0" encoding="gb2312"?>
<EtCell>

首先需要在WinTable中定义ET数据集，分组依据的字段的单元格别名
然后就可以通过ASP,JSP，PHP或者其他开发语言输出下面的设置ET数据集的XML格式
设置后EtCell就会自动根据XML数据绑定到ET数据集上，以便实现后台数据库和ET数据集的绑定
<GROUP_ROWDATA OrderField="Saler"> 其中Saler是在式样中定义的别名，表明分组按Saler进行
<ROW>
<Saler value="张君" />
<Product value="Product1" />
<OutPrice value="100" />
<Count value="100" />
<LiRun value="10" />
</ROW>
<ROW>
<Saler>张君</Saler>
<Product>Product2</Product>
<OutPrice>200</OutPrice>
<Count>200</Count>
<LiRun>20</LiRun>
</ROW>
<ROW>
<Saler>张君</Saler>
<Product>Product3</Product>
<OutPrice>300</OutPrice>
<Count>300</Count>
<LiRun>10</LiRun>
</ROW>
<ROW>
<Saler>高蓬</Saler>
<Product>Product1</Product>
<OutPrice>400</OutPrice>
<Count>400</Count>
<LiRun>40</LiRun>
</ROW>
<ROW>
<Saler>高蓬</Saler>
<Product>Product2</Product>
<OutPrice>500</OutPrice>
<Count>500</Count>
<LiRun>50</LiRun>
</ROW>
<ROW>
<Saler>赵光宝</Saler>
<Product>Product1</Product>
<OutPrice>100</OutPrice>
<Count>100</Count>
<LiRun>10</LiRun>
</ROW>
</GROUP_ROWDATA>

</EtCell>

八、EtCell支持的数据库更新XML格式

<?xml version="1.0" encoding="gb2312"?>
<EtCell>

<ADDNEW_ROWDATA> 从客户端发送到服务器新增加的数据《只发增加的记录》
<ROW > 每一行
<Name>Name1</Name> 数据库字段的值
<Company>Name1</Company>
</ROW>
<ROW > 每一行
<Name>Name1</Name> 数据库字段的值
<Company>Name1</Company>
</ROW>
</ ADDNEW_ROWDATA >

<UPDATE_ROWDATA> 从客户端发送到服务器进行更新的数据《只发需要更新的记录》
<ROW ID=”记录的唯一记录号”> 每一行
<Name>Name1</Name> 数据库字段的值
<Company>Name1</Company>
</ROW>
<ROW ID=”记录的唯一记录号”> 每一行
<Name>Name1</Name> 数据库字段的值
<Company>Name1</Company>
</ROW>
</ UPDATE_ROWDATA >

<DELETE_ROWDATA> 从客户端发送到服务器删除的数据《只发删除的记录》
<ROW > 每一行
<Name>Name1</Name> Filter的字段值，组合决定那条记录
<Company>Name1</Company>
</ROW>
<ROW > 每一行
<Name>Name1</Name> Filter的字段值，组合决定那条记录
<Company>Name1</Company>
</ROW>
</ DELETE_ROWDATA >
</EtCell>

九、ASP产生XML和ET报表绑定的例子（GetDB.asp）

<%
'EtCell支持的XML的开始标志
str = "<?xml version='1.0' encoding='gb2312'?> " & chr(13)
str = str & "<EtCell>" & chr(13)

'ET数据集XML的开始标志
str = str & "<ROWDATA>" & chr(13)

'其中aaa,bbb,ccc是ET数据集的字段名
'这是个模拟从数据库中随机产生数据
'用户可以根据自己的需要，利用ASP访问数据库的方法替换掉随机数据
for i=0 to 10
str = str & "<ROW>" & chr(13)
str = str & "<aaa>货品" & i & "</aaa>" & chr(13)
str = str & "<bbb>" & i*300+1 & "</bbb>" & chr(13)
str = str & "<ccc>" & i*2000+1 & "</ccc>" & chr(13)
str = str & "</ROW>" & chr(13)
next

'ET数据集XML的结束标志
str = str & "</ROWDATA>" & chr(13)

'别名XML的开始标志
str = str & "<ALIASDATA>" & chr(13) '别名的开始部分

'通过XML设置别名的内容
'其中Name,lName是在WinTable中定义的单元格别名
username = "ASP的变量名"
str = str & "<Name value='济南昂利万软件有限公司' />" & chr(13)
str = str & "<lName>" & username & "</lName>" & chr(13)

'别名XML的结束标志
str = str & "</ALIASDATA>" & chr(13)

'EtCell支持的XML的结束标志
str = str & "</EtCell>" & chr(13)

'通过ASP的Response发送给调用此ASP的函数HttpGetText()或者HttpPost()
Response.write str
%>

十、JSP产生XML和ET报表绑定的例子（GetDB.jsp）

<%@ page contentType="text/html;charset=gb2312"%>

<%
//下面都是EtCell报表插件支持的XML格式
//注意：在通过JSP输出XML时，不要输出<html><body>标签
//有关报表式样可以通过WinTable制表工具进行可视化设置
//此例子只是起到抛砖引玉的目的，更多功能，可以参看EtCell支持的XML数据格式
//并且网站提供的ASP的例子，只要改写为JSP的语法，那么就会正常运行
%>

<%
String str = null;
String username = null;

//输出EtCell支持的XML数据的开始标志
str = "<?xml version='1.0' encoding='gb2312'?> " + "\n";
str = str + "<EtCell>" + "\n";

//输出ET记录集的开始标志
str = str + "<ROWDATA>" + "\n";

//在这里填加JSP访问数据库的代码
//如：连接数据库等

//下面的代码是模拟从数据库中取得了数据，用for循环方式把数据库的数据输出给浏览器
//JSP所有的输出都会返回到调用函数 HttpGetText()或者HttpPost()
//有关这两个函数，可以参看有关SDK说明
for (int i=1; i<=10; i++)
{
//每一条记录都要用<ROW>表示，这样EtCell就会自动认为是一条记录，并根据报表式样自动处理
str = str + "<ROW>"  + "\n";

//其中aaa,bbb,ccc是报表式样定义的ET字段名，这些字段名可以和后台的任何数据库字段绑定
//绑定方法：只要把JSP访问数据库的字段数据作为标签值放到ET字段中就行了，方法如下；
str = str + "<aaa value='ET字段aaa值:" + i + "'
/>"  + "\n";
str = str + "<bbb>" + i*300+1 + "</bbb>" + "\n";
str = str + "<ccc>" + i*2000+1 + "</ccc>"  + "\n";

//每一条记录都要用</ROW>表示结束
str = str + "</ROW>"  + "\n";
}
//输出ET记录集的结束标志
str = str + "</ROWDATA>" + "\n";

//别名XML的开始标志
str = str + "<ALIASDATA>" + "\n"; //别名的开始部分

//通过XML设置别名的内容
//其中Name,lName是在WinTable中定义的单元格别名
username = "JSP的变量名";
str = str + "<Name value='济南昂利万软件有限公司'
/>" + "\n";
str = str + "<lName>" + username & "</lName>" + "\n";

//别名XML的结束标志
str = str + "</ALIASDATA>" + "\n";

//输出EtCell支持的XML数据的结束标志
str = str + "</EtCell>" + "\n";

//通过JSP的out.print发送给调用此JSP的函数HttpGetText()或者HttpPost()
out.print(str);
%>


Print

打印相关函数

方法：

boolean SetPrintZoom(short nPrintZoomPerNum)

入口参数：

  • nPrintZoomPerNum 打印比例，如：80 表示打印报表的80%大小

函数返回：TRUE=成功；FALSE=失败

功能描述：

设置打印报表的打印比列，会影响打印预览、打印的效果

相关函数：

编号：144

void SetPrintMargin(short nLeft, short nTop, short nRight, short nBottom)

入口参数：

  • nLeft 纸张的左边距
  • nTop 纸张的上边距
  • nRight 纸张的右边距
  • nBottom 纸张的下边距

函数返回：无

功能描述：

设置打印的纸张边距

上面的各个参数可以设置为负数！

例如：
EtCell1.SetPrintMargin(0,10,10,0 );
EtCell1.SetPrintMargin(60,100,10,10);
EtCell1.SetPrintMargin(-210,-110,0,0);

相关函数：

编号：191

void SetPrintLine(BOOL bPrintLine)

入口参数：

  • bPrintLine 是否打印表格线，bPrintLine=TRUE 打印划线 bPrintLine=FALSE不打印划线

函数返回：无

功能描述：

设置是否打印报表的划线，可以用于套打

默认情况下，打印报表划线

相关函数：

编号：192

boolean AddNotPrintCell(short row, short col)

入口参数：

  • row 单元所在的行
  • col 单元所在的列

函数返回：TRUE=成功；FALSE=失败

功能描述：

套打功能中，设置报表中不需要打印的单元格，一旦设置了不需要打印的单元格，EtCell将认为是套打报表，那么打印时，将不会打印表格线和不打印单元的文本；但是在打印预览时，报表还是整体显示；也就是打印的内容和打印预览的内容不完全一样。

此函数用于在程序中动态控制套打报表，你可以在WinTable中可视化设置套打，那样就不需要此函数进行动态设置了。

相关函数：

编号：199

boolean IsNotPrintCell(short row, short col)

入口参数：

  • row 单元所在的行
  • col 单元所在的列

函数返回：TRUE=成功；FALSE=失败

功能描述：

判断单元格是否为套打的单元格，如果不需要打印，那么返回True;如果需要打印，那么返回False；

相关函数：

编号：199

boolean DeleteAllNotPrintCell()

入口参数：无

函数返回：TRUE=成功；FALSE=失败

功能描述：

套打功能中，如果已经设置了不需要打印的单元格，那么打印时按照套打的方式进行打印。此函数用于删除所有不需要打印的单元格，一旦此函数成功执行，那么打印报表时就不是套打了。

相关函数：

编号：200

boolean SetSupportNotPrint(boolean bSupported)

入口参数：

  • bSupported 是否允许支持套打

函数返回：TRUE=成功；FALSE=失败

功能描述：

套打功能中，如果已经设置了不需要打印的单元格，那么打印时按照套打的方式进行打印。
但是有些情况下，还需要把报表全部打印，调用此函数后，就可以设置是否允许套打；
如果bSupported=TRUE,那么支持套打，只要设置了不大印单元，按么就按照套打方式进行打印；
如果bSupported=FALSE,那么不允许支持套打，虽然设置了套打格式，也不支持套打；

此函数是EtCell运行期函数，只有在EtCell运行时调用此函数才起作用。

在没有调用此函数之前，按照报表的设计进行打印；如果设计的报表有套打格式，那么默认支持套打功能。

相关函数：

编号：202

void SetPrintPaperSize(short dmPaperSize, short nPaperHeight, short nPaperWidth)

入口参数：

  • dmPaperSize 整数值，纸张的大小，只有dmPaperSize=256或者257或者258时(自定义纸张)，后面的两个参数才起作用
  • nPaperHeight 自定义纸张的高度,当mPaperSize=256时(单位：0.1毫米mm)，当mPaperSize=257时(单位：毫米mm)
  • nPaperWidth 自定义纸张的宽度,当mPaperSize=256时(单位：0.1毫米mm)，当mPaperSize=257时(单位：毫米mm)

函数返回：无

功能描述：

设置打印纸张的大小，只有dmPaperSize=256或者257或者258时(自定义纸张)，后面的两个参数才起作用；

如果设置的纸张大小超过了打印机能接受最大的最大尺寸，那么按打印机的最大尺寸设置；

自定义纸张的参数单位说明：
当mPaperSize=256时(单位：0.1毫米mm);
当mPaperSize=257时(单位：毫米mm)
当mPaperSize=258时(单位：厘米cm)

dmPaperSize参数一览表如下：

数值 | 字符串表示 | 含义
256 | DMPAPER_USER | 自定义纸张
1 | DMPAPER_LETTER | Letter, 8 1/2 by 11 inches
2 | DMPAPER_LETTERSMALL |
3 | DMPAPER_TABLOID | Tabloid, 11 by 17 inches
4 | DMPAPER_LEDGER Ledger | 17 by 11 inches
5 | DMPAPER_LEGAL Legal | 8 1/2 by 14 inches
6 | DMPAPER_STATEMENT | Statement, 5 1/2 by 8 1/2 inches
7 | DMPAPER_EXECUTIVE | Executive, 7 1/4 by 10 1/2 inches
8 | DMPAPER_A3 | A3 sheet, 297 by 420 millimeters
9 | DMPAPER_A4 | A4 Sheet, 210 by 297 millimeters
10 | DMPAPER_A4SMALL A4 | small sheet, 210 by 297 millimeters
11 | DMPAPER_A5 | A5 sheet, 148 by 210 millimeters
12 | DMPAPER_B4 | B4 sheet, 250 by 354 millimeters
13 | DMPAPER_B5 | B5 sheet, 182-by-257-millimeter paper
14 | DMPAPER_FOLIO | Folio, 8-1/2-by-13-inch paper
15 | DMPAPER_QUARTO | Quarto, 215-by-275-millimeter paper
16 | DMPAPER_10X14 | 10-by-14-inch sheet
17 | DMPAPER_11X17 | 11-by-17-inch sheet
18 | DMPAPER_NOTE | Note, 8 1/2 by 11 inches
19 | DMPAPER_ENV_9 | #9 Envelope, 3 7/8 by 8 7/8 inches
20 | DMPAPER_ENV_10 | #10 Envelope, 4 1/8 by 9 1/2 inches
21 | DMPAPER_ENV_11 | #11 Envelope, 4 1/2 by 10 3/8 inches
22 | DMPAPER_ENV_12 | #12 Envelope, 4 3/4 by 11 inches
23 | DMPAPER_ENV_14 | #14 Envelope, 5 by 11 1/2 inches
24 | DMPAPER_CSHEET | C Sheet, 17 by 22 inches
25 | DMPAPER_DSHEET | D Sheet, 22 by 34 inches
26 | DMPAPER_ESHEET | E Sheet, 34 by 44 inches
27 | DMPAPER_ENV_DL | DL Envelope, 110 by 220 millimeters
28 | DMPAPER_ENV_C5 | C5 Envelope, 162 by 229 millimeters
29 | DMPAPER_ENV_C3 | C3 Envelope, 324 by 458 millimeters
30 | DMPAPER_ENV_C4 | C4 Envelope, 229 by 324 millimeters
31 | DMPAPER_ENV_C6 | C6 Envelope, 114 by 162 millimeters
32 | DMPAPER_ENV_C65 | C65 Envelope, 114 by 229 millimeters
33 | DMPAPER_ENV_B4 | B4 Envelope, 250 by 353 millimeters
34 | DMPAPER_ENV_B5 | B5 Envelope, 176 by 250 millimeters
35 | DMPAPER_ENV_B6 | B6 Envelope, 176 by 125 millimeters
36 | DMPAPER_ENV_ITALY | Italy Envelope, 110 by 230 millimeters
37 | DMPAPER_ENV_MONARCH | Monarch Envelope, 3 7/8 by 7 1/2 inches
38 | DMPAPER_ENV_PERSONAL | 6 3/4 Envelope, 3 5/8 by 6 1/2 inches
39 | DMPAPER_FANFOLD_US | US Std Fanfold, 14 7/8 by 11 inches
40 | DMPAPER_FANFOLD_STD_GERMAN | German Std Fanfold, 8 1/2 by 12 inches
41 | MPAPER_FANFOLD_LGL_GERMAN | D German Legal Fanfold, 8 1/2 by 13 inches

相关函数：

编号：193

boolean SetPageBreak(short row, boolean bBreakToNextPage)

入口参数：

  • row 强制从row行进行换页打印
  • bBreakToNextPage 是否强制进行换页，True表示强制换页，False取消强制换页

函数返回：TRUE=成功；FALSE=失败

功能描述：

(1)设置从行row为强制分页行,也就是把row以后行打印到下一页；
(2)如果参数bBreakToNextPage为True,那么表示从row进行强制换页打印；
(3)如果参数bBreakToNextPage为False,那么取消强制换页打印；
(4)在取消行分页时，如果行row本身不存在强制分页，那么函数返回FALSE；
(3)如果行row不是合法行，那么函数将返回FALSE；

相关函数：IsPageBreakRow() RemoveAllPageBreak()

编号：221

boolean IsPageBreakRow(short row)

入口参数：

  • row 需要判断是否为强制换页的行

函数返回：TRUE=成功；FALSE=失败

功能描述：

判断row是否为强制分页的行

相关函数：SetPageBreak() RemoveAllPageBreak()

编号：222

void RemoveAllPageBreak()

函数返回：无

功能描述：

删除所有的强制换页

相关函数：IsPageBreakRow() SetPageBreak()

编号：31

void SetPreviewOption(long Option)

入口参数：

  • Option 设置打印预览窗口中功能选项

函数返回：无

功能描述：

此函数用于设置打印预览窗口的选项是否 禁止/使能 某些功能项
默认Option=0

Option 共32位 ....0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
只处理低5位 , 1表示禁止，0表示使能 单项值(其他位留做扩展)

第几位 | 功能描述 | 位数值描述 | 10进制单项值
第1位 | 打印预览中按打印按钮时是否显示打印对话框 | 1表示显示 0表示不显示 | 1
第2位 | 是否禁止/使能可选页码 | 1表示禁止 0表示使能 | 2
第3位 | 是否可以选用打印份数选项 | 1表示禁止 0表示使能 | 4
第4位 | 是否可以在预览中选择横向/纵向打印的选项 | 1表示禁止 0表示使能 | 8
第5位 | 在打印预览中选择打印后，是否关闭打印预览窗口 | 1表示不关闭 0表示关闭 | 16
第6位 | 在打印预览中是否使能打印按钮 | 1表示禁用 0表示使能 | 32

要是实现多个组合，只要把单项值相加即可,例如：
1、显示打印对话框 + 禁止选择横向/纵向方式 Option = 1 + 8
2、不显示打印对话框 + 禁止选择横向/纵向方式 Option = 0 + 8
3、显示打印对话框 + 禁止页码 + 禁止打印份数 + 禁止选择横向/纵向方式 Option=1+2+4+8=15
4、显示打印对话框 + 打印后不关闭预览窗口 Option=1+16=17
5、禁用打印预览中的打印按钮 Option=32
等等.......

相关函数：PrintPrevew() Print()

编号：224

boolean PrintPreview()

函数返回：TRUE=成功；FALSE=失败

功能描述：

根据已经设置的打印参数，执行打印预览功能

相关函数：

编号：31

void Print(BOOL bDisplayDlg)

入口参数：

  • bDisplayDlg 表示是否显示打印设置对话框 bDisplayDlg=True表示显示，False表示不显示

函数返回：无

功能描述：

根据已经设置的打印参数，直接执行打印功能或者显示对话框让用户设置打印选项,然后打印

相关函数：

编号：55

相关属性：
boolean Ruler

功能描述：

表示是否显示标尺

short NotScrollRows

功能描述：

不能滚动的行，在打印时，不滚动行将在每页中打印

short NotScrollCols

功能描述：

不能滚动的列

boolean PrintCellBackColor

功能描述：

是否打印单元的背景颜色

BSTR PrintHeaderText

功能描述：

打印的页眉内容

boolean PrintHeaderLine

功能描述：

打印的页眉内容下面是否打印一条横线

BSTR PrintFooterText

功能描述：

打印的页脚内容

boolean PrintFooterLine

功能描述：

打印的页脚内容上面是否打印一条横线

boolean PrintPageNo

功能描述：

是否打印页号 如： 第2/20页

boolean PrintEtCellBackColor

功能描述：

是否打印报表的背景颜色

boolean PrintDirectH

功能描述：

设置打印方向 ，默认是PrintDirectH=False 表示纵向打印

  1. PrintDirectH=True 表示横向打印
  2. PrintDirectH=False 表示纵向打印

boolean PrintFullPage

功能描述：

打印时是否根据报表的宽度适应整张纸大小 ，默认：PrintFullPage=False 不充满整张纸

备注：此属性在打印时能自动进行放大或者缩小


Other

其他相关函数

属性：

boolean Border3D

当前报表是否具有3D显示效果

获得方法： 3d = EtCell1.Border3D
设置方法： EtCell1.Border3D = True

boolean ReadOnly

当前报表是否具有只读属性，如果只读，那么整个报表将不能编辑；
默认方式不是只读方式，是可以编辑的！

获得方法： reakonly = EtCell1.ReadOnly
设置方法： EtCell1.ReadOnly = True

boolean Ruler

当前报表是否显示标尺；
如果显示标尺，那么就可以通过鼠标调整行的高度、列的宽度；
如果不显示标尺，那么不能通过鼠标调整行的高度、列的宽度；

获得方法： ruler = EtCell1.Ruler
设置方法： EtCell1.Ruler = True

short FocusCellShape

此属性描述具有焦点的单元格的形状；

默认情况下=0；

备注：

对FocusCellShape进行了扩充：

高位字节表示用户按会车后移到到下一个单元格的习惯；

当 高位字节为 1时，表示硬性的按照行习惯；FocusCellShape = 256

当 高位字节为 2时，表示硬性的按照列习惯；FocusCellShape = 257

方法：

void AboutBox()

函数返回：无

功能描述：

关于EtCell的版本信息

相关函数：

boolean Login(BSTR UserID, BSTR ProductID, BSTR Password)

入口参数：

  • UserID 用户的ID序列号
  • ProductID EtCell控件产品号ID
  • Password 用户密码

函数返回：TRUE=成功；FALSE=失败

功能描述：

使用产品前登陆函数

相关函数：

编号：119

boolean CreateTable(short nRows, short nCols)

入口参数：

  • nRows 要创建报表的总行数
  • nCols 要创建报表的总列数

函数返回：TRUE=成功；FALSE=失败

功能描述：重新创建报表并且进行初始化

相关函数：

编号：72

void Redraw()

函数返回：无

功能描述：

强制EtCell控件刷新显示

相关函数：

编号：54

boolean Save()

函数返回：TRUE=成功；FALSE=失败

功能描述：

把EtCell控件编辑的报表保存到磁盘，按原先文件名进行保存

相关函数：

编号：68

boolean SaveAs(LPCTSTR etFileName)

入口参数：etFileName 要另存为文件名包括路径

函数返回：TRUE=成功；FALSE=失败

功能描述：

把EtCell控件编辑的报表保存到磁盘，EtCell会根据文件的后缀自动保存格式；

例如：(1) .htm 保存为Html文件格式

(2) .xls 保存为Excel格式

(3) .et 保存为EtCell报表格式

相关函数：

编号：69

short GetRowCount()

函数返回：报表的总行数

功能描述：获取报表的总行数

相关函数：

编号：37

short GetColCount()

函数返回：报表的总列数

功能描述：获取报表的总列数

相关函数：

编号：38

short GetCurRow()

函数返回：当前输入焦点单元所在的行

功能描述：获取当前输入焦点单元的所在行

相关函数：

编号：43

short GetCurCol()

函数返回：当前输入焦点单元所在的列

功能描述：获取当前输入焦点单元的所在列

相关函数：

编号：44

boolean GetSelectRange(BSTR* spStartRowCol, BSTR* spEndRowCol)

入口参数：

出口参数：

  • spStartRowCol 选择范围的开始单元，如："B2"
  • spEndRowCol 选择范围的结束单元，如："G7"

函数返回：TRUE=成功；FALSE=失败

功能描述：

获得当前选择的单元范围

相关函数：

编号：136

BSTR GetSelectStartCell()

函数返回：返回选择范围的开始单元，如："B2"

功能描述：

获得选择范围的开始单元，如："B2"

相关函数：

编号：137

BSTR GetSelectEndCell()

函数返回：返回选择范围的结束单元，如："G7"

功能描述：

获得选择范围的结束单元，如："G7"

相关函数：

编号：138

BSTR ChRowColStr(short nRow, short nCol)

入口参数：

  • nRow 行 例如：4
  • nCol 列 例如：2

函数返回：行列对应的字符串表示法 如:"B4"

功能描述：把行列表示法转化为字符串表示法

相关函数：

编号：77

boolean ChToRowCol(BSTR sRowCol, short* nRow, short* nCol)

入口参数：

  • sRowCol 行列字符串的单元名 例如："B4"

出口参数：

  • nRow 转化后的行 例如：4
  • nCol 转化后的列 例如：2

函数返回：TRUE=成功；FALSE=失败

功能描述：把字符串表示法转化为行列表示法

相关函数：

编号：78

BSTR ChToColStr(short col)

入口参数：

  • col 列

函数返回：返回列的字符串表示

功能描述：把数字列转换为字符转方式的列表示 3 列 = "C"

相关函数：

编号：187

short ChToRow(LPCTSTR sRowCol)

入口参数：

  • sRowCol 行列表示法 如："B5"

函数返回：返回列的字符串表示

功能描述：把"B5"式样转换为 行 如：5行

相关函数：

编号：164

short ChToCol(LPCTSTR sRowCol)

入口参数：

  • sRowCol 行列表示法 如："B5"

函数返回：返回列的字符串表示

功能描述：把"B5"式样转换为 列 如：2列

相关函数：

编号：165

boolean SetCellEnable(short minRow, short minCol, short maxRow, short maxCol, boolean bEnable)

入口参数：

  • minRow 范围的开始行
  • minCol 范围的开始列
  • maxRow 范围的结束行
  • maxCol 范围的结束列
  • bEnable 是否运行使能 TRUE=使能；FALSE=不使能

函数返回：TRUE=成功；FALSE=失败

功能描述：设置单元的是否使能

  1. 如果bEnable=TRUE时，那么就不能用键盘和鼠标移动到次单元上
  2. 要和属性FixedCellSelect配合使用，来决定单元是否可以移动到编辑状态

相关函数：

编号：75

boolean GetCellFixed(short row, short col)

入口参数：

  • row 范围的开始行
  • col 范围的开始列

函数返回：TRUE=成功；FALSE=失败

功能描述：返回单元是否为固定单元格

相关函数：

编号：176

boolean SetCellFixed(short minRow, short minCol, short maxRow, short maxCol, boolean bFixed)

入口参数：

  • minRow 范围的开始行
  • minCol 范围的开始列
  • maxRow 范围的结束行
  • maxCol 范围的结束列
  • bFixed 是否运行固定 TRUE=固定；FALSE=不固定

函数返回：TRUE=成功；FALSE=失败

功能描述：设置单元为固定单元

相关函数：

编号：76

boolean SetCellReadOnly(short nRow, short nCol, boolean bReadOnly)

入口参数：

  • nRow 行
  • nCol 列
  • bReadOnly 只读 TRUE=只读；FALSE=可读/可写

函数返回：TRUE=成功；FALSE=失败

功能描述：设置单元的只读特性，如果设置了单元为只读，那么就不能编辑单元内容

相关函数：

编号：81

boolean SetCellFocus(short row, short col)

入口参数：

  • row 行
  • col 列

函数返回：TRUE=成功；FALSE=失败

功能描述：设置单元为当前焦点单元，改变当前的焦点单元

相关函数：

编号：84

boolean SetColHeader(short col, BSTR sColHeader)

入口参数：

  • col 列，如：标尺的表示方法是A,B,C,D,....,对应的列值为1，2，3，4，.....
  • sColHeader 要设置的标尺列显示字符串，如："姓名"，"年龄"

函数返回：

  • True 函数执行成功
  • False 函数执行失败

功能描述：

设置EtCell控件标尺的显示字符串

相关函数：

编号：106

boolean GetCellRect(short row, short col, short* x, short* y, short* width, short* height)

入口参数：

  • row 行
  • col 列
  • x
  • y
  • width
  • height

函数返回：TRUE=成功；FALSE=失败

功能描述：

读取单元的矩形情况

相关函数：

编号：120

bool SetCellType(short row, short col, short nType)

入口参数：

  • row 行
  • col 列
  • nType 单元的类型 ,有关类型请参看类型一览表

函数返回：TRUE=成功；FALSE=失败

功能描述：

设置单元的类型

相关函数：

编号：160

short GetCellType(short row, short col)

入口参数：

  • row 行
  • col 列

函数返回：返回单元类型，如一般单元，图表单元，图片单元等等

功能描述：

获取单元的类型

相关函数：

编号：125

boolean SetCellAlign(short row, short col, short Align)

入口参数：

  • row 行
  • col 列
  • Align 单元文本的显示方式，可以输入值为1,2,3,4,5,6

函数返回：TRUE=成功；FALSE=失败

功能描述：

设置单元文本的显示方式

相关函数：

编号：134

boolean ClickedInCellPlaceButton()

函数返回：TRUE=成功；FALSE=失败

功能描述：程序模拟按动了单元右边的按钮

相关函数：

编号：85

boolean SetCellTransParent(BSTR strRowCol)

入口参数：

  • strRowCol 单元名， 如："D3"

函数返回：TRUE=成功；FALSE=失败

功能描述：

设置单元的背景透明

相关函数：

编号：114

boolean SetCellTransParent1(short row, short col)

入口参数：

  • row 行
  • col` 列

函数返回：TRUE=成功；FALSE=失败

功能描述：

设置单元的背景透明

相关函数：

编号：115

boolean AddCellLinkNode(short nRow, short nCol, short nFatherRow, short nFatherCol, boolean bAdd)

入口参数：

  • nRow 要设置的单元行
  • nCol 要设置的单元列
  • nFatherRow 要连接的单元行
  • nFatherCol 要连接的单元列
  • bAdd bAdd=TRUE 表示增加连接 bAdd=FALSE 表示删除连接

函数返回：TRUE=成功；FALSE=失败

功能描述：

增加单元的连接关系，举例说明功能：假如调用了函数AddCellLinkNode(2,2,4,4,TRUE),那么在单元(2,2)发生变化后，就会使单元(4,4)也自动发生变化，具体的变化，要看是公式影响，还是图表数据影响了，还是脚本影响；

相关函数：

编号：79

long CalcFormula(BSTR sFormula)

入口参数：

  • sFormula 公式，如："SUM(E3:E6)"

函数返回：返回计算的结果

功能描述：

进行公式计算，公式可以有开发者动态制定

相关函数：

编号：140

boolean SetCellFromDB(short row, short col, BSTR cellStr)

入口参数：

  • row 行
  • col 列
  • cellStr 单元的新值

函数返回：TRUE=成功；FALSE=失败

功能描述：

利用脚本功能从数据库中取数据，然后通过次函数设置报表单元内容，才函数采用了异步方式

编号：51

boolean AddInCellListButton(short row, short col)

入口参数：

  • row 行
  • col 列

函数返回：TRUE=成功；FALSE=失败

功能描述：

增加单元格右方的按钮

编号：158

boolean DeleteInCellListButton(short row, short col)

入口参数：

  • row 行
  • col 列

函数返回：TRUE=成功；FALSE=失败

功能描述：

删除单元格右方的按钮

编号：159

void EditCopy()

函数返回：无

功能描述：

拷贝选择区域，相当于CTRL+C

编号：161

void EditCut()

函数返回：无

功能描述：

剪贴选择区域，相当于CTRL+X

编号：162

void EditPaste()

函数返回：无

功能描述：

粘贴已经拷贝的数据，相当于CTRL+V

编号：163

BSTR ShowDlgOpenFile(BSTR lpFilePath, BSTR szFilters, boolean bOpenOrSave)

入口参数：

  • lpFilePath 打开文件的目录
  • szFilters 当前目录下的文件过滤条件，如果存在多个 过滤，那么中间用;分割
  • bOpenOrSave bOpenOrSave=TRUE 打开文件对话框；bOpenOrSave=FALSE保存文件对话框

函数返回：返回文件名，如果没有取消，那么就为空值""

功能描述：

显示打开文件对话框，并且返回选择的文件名，包括路经；

举例如下：
1、打开文件对话框
EtCell1.ShowDlgOpenFile("","EtCell报表文件(*.eT)|*.et",true);

2、打开文件对话框
strFilter = "EtCell报表文件(*.eT)|*.et;HTML文档(*.htm)|*.htm;Excel文件(*.xls)|*.xls";
EtCell1.ShowDlgOpenFile("",strFilter,true);

3、打开文件对话框
strFilter = "*.et;*.htm;*.xls";
EtCell1.ShowDlgOpenFile("",strFilter,true);

4、保存文件对话框
strFilter = "*.et;*.htm;*.xls";
EtCell1.ShowDlgOpenFile("",strFilter,false);

备注：在Version 4 将支持可以显示HTTP FTP中的文件名

编号：188

void SetSingleRowSelection(boolean m_bSingleRowSelection)

入口参数：

  • m_bSingleRowSelection m_bSingleRowSelection=TRUE正行选择；m_bSingleRowSelection=FALSE不正行选择

函数返回：无

功能描述：

设置是否整行选择，m_bSingleRowSelection=TRUE正行选择；m_bSingleRowSelection=FALSE不正行选择。

默认情况下，不正行选择

编号：189

void SetCellNumType(short row, short col, short nType, short nDotNum, BSTR sParam)

入口参数：

  • row 行
  • col 列
  • nType 单元格的类型
  • nDotNum 小数为数
  • sParam 假如单元格格式需要在前面或者后面加的特殊符号，例如 ： ￥3,212,123.00 、 80%

函数返回：无

功能描述：

设置单元格的数字格式类型，包括数字的显示格式和输入格式；
nType 的数值如下：

默认格式 |  | 显示格式举例
0 | EtCell的默认格式 |
数值型 |  |
101 | 不含千份位,负数不为红色；小数为数有nDotNum指定；例如： | 123456.23
102 | 不含千份位,负数为红色；小数为数有nDotNum指定； | 123456.23 -12345.23
103 | 含千份位,负数不为红色；小数为数有nDotNum指定； | 123,456,7.23
104 | 含千份位,负数为红色；小数为数有nDotNum指定； | 123,456,7.23 -123,456,7.23
货币型 |  |
111 | 普通货币型(默认含千分位，并且前面有货币符号)，小数为数有nDotNum指定；具体的符号有参数sParam指定； | ￥123,456,7.23
112 | 货币型 负数为红色，小数为数有nDotNum指定；具体的符号有参数sParam指定; | ￥-123,456,7.23
会计专用类型 |  |
121 | 会计专用,都含千分位,前面带货币符号,具体的符号有参数sParam指定；小数为数有nDotNum指定； | ￥123,456,7.23
百分比类型 |  |
131 | 百分比,后面带 % ；小数为数有nDotNum指定； | 89.55%

程序调用举例如下：

SetCellNumType 3,3,0,0,""
SetCellNumType 3,3,101,2,"￥"
SetCellNumType 3,3,102,0,""
SetCellNumType 3,3,103,2,"￥"
SetCellNumType 3,3,104,1,""
SetCellNumType 3,3,111,2,"￥"
SetCellNumType 3,3,112,2,"$"
SetCellNumType 3,3,121,2,"￥"
SetCellNumType 3,3,131,2,"%"

相关函数：

编号：201

boolean SetAutoAdjustTable(short bAutoRowColSize)

入口参数：

  • bAutoRowColSize 设置报表自动调整行的高度，或者列的宽度

参数说明
bAutoRowColSize = 0; 表示不自动调整，这也是默认状态
bAutoRowColSize = 1; 表示自动调整行的高度
bAutoRowColSize = 2; 自动调整列的宽度
bAutoRowColSize = 3; 自动根据控件的大小调整列的宽度，以便看到所有的列

函数返回：TRUE=成功；FALSE=失败

功能描述：

设置报表自动调整行的高度，或者列的宽度

自动根据控件大小调整列宽的适应

相关函数：

编号：218


Event

控件事件说明

1、void OnExitEdit(short nRow, short nCol, BSTR sCellValue, BSTR sCellScript, BSTR sCellFormula, BSTR sLinkNode, boolean* bMoveNextCell)

入口参数：

  • nRow 正在编辑的单元所在行
  • nCol 正在编辑的单元所在列
  • sCellValue 正在编辑的单元最新值字符串
  • sCellScript 正在编辑的单元脚本
  • sCellFormula 正在编辑的单元公式
  • sLinkNode 正在编辑的单元关联单元字符串

出口参数：

  • bMoveNextCell 是否允许退出当前编辑单元，而跳到用户键盘习惯的下一个单元，如果没有对其赋值那么允许

功能描述：

  • 当编辑完一个单元格退出编辑时，触发此事件。
  • 利用此事件可以监测输入内容的合法性，甚至单元内容的互动操作例如：一个单元的内容变化会影响其他单元的内容变化

在事件中能用到函数<建议>：

例子： VC++例子 C++Builder例子 Delphi例子 VB例子 PB例子

2、void OnExitAliasCellEdit(short row, short col, BSTR AliasName, BSTR sCellValue, boolean* bMoveNextCell)

入口参数：

  • row 正在编辑的单元所在行
  • col 正在编辑的单元所在列
  • AliasName 正在编辑的单元的别名
  • sCellValue 正在编辑的单元的内容

出口参数：

  • bMoveNextCell 是否允许退出当前编辑单元，而跳到用户键盘习惯的下一个单元，如果没有对其赋值那么允许

功能描述：

  • 当编辑完一个别名单元格退出编辑时，触发此事件。
  • 利用此事件可以监测输入内容的合法性，甚至单元内容的互动操作例如：一个单元的内容变化会影响其他单元的内容变化
  • 如果单元格命名了别名，那么就不再触发OnExitEdit事件

在事件中能用到函数<建议>：

例子： VC++例子 C++Builder例子 Delphi例子 VB例子 PB例子

3、void OnExitFieldCellEdit(short row, short col, BSTR FieldName, BSTR FieldValue, boolean* bMoveNextCell)

入口参数：

  • row 正在编辑的单元所在行
  • col 正在编辑的单元所在列
  • FieldName 正在编辑的单元的et字段名
  • FieldValue 正在编辑的单元的et字段内容

出口参数：

  • bMoveNextCell 是否允许退出当前编辑单元，而跳到用户键盘习惯的下一个单元，如果没有对其赋值那么允许

功能描述：

  • 当编辑完一个Et数据集单元格退出编辑时，触发此事件。
  • 利用此事件可以监测输入内容的合法性，甚至单元内容的互动操作例如：一个单元的内容变化会影响其他单元的内容变化
  • 如果单元格命名了et数据集字段名，那么就不再触发OnExitEdit事件

在事件中能用到函数<建议>：

例子： VC++例子 C++Builder例子 Delphi例子 VB例子 PB例子

4、void OnFocusCell(short row, short col, BSTR cellValue,boolean* bFocusCell,boolean* bEditCell,long HWnd,short x, short y,short CellWidth, short CellHeight)

入口参数：

  • row 具有输入焦点的单元所在行
  • col 具有输入焦点的单元所在列
  • cellValue 具有输入焦点的单元字符串内容
  • HWnd 控件的窗口句柄，不同的开发工具需要做相应转换
  • x 具有输入焦点的单元的坐标X值
  • y 具有输入焦点的单元的坐标Y值
  • CellWidth 具有输入焦点的单元的宽度
  • CellHeight 具有输入焦点的单元的高度

出口参数：

  • bFocusCell 是否允许具有输入焦点，如果*bFocusCell=false，那么就不能允许编辑
  • bEditCell 是否允许进行编辑

功能描述：

  • 当用鼠标或者键盘改变了当前的焦点单元时，触发此事件

在事件中能用到函数<建议>：

  • 可以利用HWnd窗口句柄，在单元具有焦点时，动态弹出Combox、ListBox或者对话框，让用户进行选择，选择完毕后对某些单元进行赋值操作
  • 利用返回参数bFocusCell和 bEditCell，可以决定单元格是否允许编辑

例子： VC++例子 C++Builder例子 Delphi例子 VB例子 PB例子

5、void OnFocusAliasCell(short row, short col, BSTR AliasName, BSTR cellValue, boolean* bFocusCell, boolean* bEditCell, long HWnd, short x, short y, short CellWidth, short CellHeight)

入口参数：

  • row 具有输入焦点的单元所在行
  • col 具有输入焦点的单元所在列
  • AliasName 具有输入焦点的单元别名
  • cellValue 具有输入焦点的单元字符串内容
  • HWnd EtCell控件的窗口句柄，不同的开发工具需要做相应转换,转换方法如： (HWND)HWnd
  • x 具有输入焦点的单元的坐标X值
  • y 具有输入焦点的单元的坐标Y值
  • CellWidth 具有输入焦点的单元的宽度
  • CellHeight 具有输入焦点的单元的高度

出口参数：

  • bFocusCell 是否允许具有输入焦点，如果*bFocusCell=false，那么就不能允许编辑
  • bEditCell 是否允许进行编辑

功能描述：

  • 当用鼠标或者键盘改变了当前的焦点单元时，触发此事件

在事件中能用到函数<建议>：

  • 可以利用HWnd窗口句柄，在单元具有焦点时，动态弹出Combox、ListBox或者对话框，让用户进行选择，选择完毕后对某些单元进行赋值操作
  • 利用返回参数bFocusCell和 bEditCell，可以决定单元格是否允许编辑

例子： VC++例子 C++Builder例子 Delphi例子 VB例子 PB例子

6、void OnFocusFieldCell(short row, short col, BSTR FieldName, BSTR FieldValue, short RecordID, boolean* bFocusCell, boolean* bEditCell, long HWnd, short x, short y, short CellWidth, short CellHeight)

入口参数：

  • row 具有输入焦点的单元所在行
  • col 具有输入焦点的单元所在列
  • FieldName 具有输入焦点的et字段名
  • FieldValue 具有输入焦点的et数据表字段内容
  • RecordID 具有输入焦点的et数据表记录ID号，相对于第一条记录
  • HWnd EtCell控件的窗口句柄，不同的开发工具需要做相应转换,转换方法如： (HWND)HWnd
  • x 具有输入焦点的单元的坐标X值
  • y 具有输入焦点的单元的坐标Y值
  • CellWidth 具有输入焦点的单元的宽度
  • CellHeight 具有输入焦点的单元的高度

出口参数：

  • bFocusCell 是否允许具有输入焦点，如果*bFocusCell=false，那么就不能允许编辑
  • bEditCell 是否允许进行编辑

功能描述：

  • 当用鼠标或者键盘改变了当前的焦点单元时，触发此事件

在事件中能用到函数<建议>：

  • 可以利用HWnd窗口句柄，在单元具有焦点时，动态弹出Combox、ListBox或者对话框，让用户进行选择，选择完毕后对某些单元进行赋值操作
  • 利用返回参数bFocusCell和 bEditCell，可以决定单元格是否允许编辑

例子： VC++例子 C++Builder例子 Delphi例子 VB例子 PB例子

7、void OnKeyDown(short nChar, short nRepCnt, short nFlags, boolean* bEtCellCtrlDisposeKeyDown)

入口参数：

  • nChar 键盘的按动的ACSII吗值
  • nRepCnt 按动的次数
  • nFlags 是否按动了Shift Alt Ctrl等键

出口参数：

  • bEtCellCtrlDisposeKeyDown 是否允许EtCell控件处理这个键盘消息，默认允许处理

功能描述：当在控件中有键盘消息时，就触发这个事件

在事件中能用到函数<建议>：

例子： VC++例子 C++Builder例子 Delphi例子 VB例子 PB例子

8、void OnKeyDownAliasCell(short nChar, short nRepCnt, short nFlags, BSTR AliasName, BSTR sCellValue, boolean* bEtCellCtrlDisposeKeyDown)

入口参数：

  • nChar 键盘的按动的ACSII吗值
  • nRepCnt 按动的次数
  • nFlags 是否按动了Shift Alt Ctrl等键
  • AliasName 具有输入焦点的单元别名
  • sCellValue 具有输入焦点的单元内容

出口参数：

  • bEtCellCtrlDisposeKeyDown 是否允许EtCell控件处理这个键盘消息，默认允许处理

功能描述：当在控件中有键盘消息时，就触发这个事件

在事件中能用到函数<建议>：

例子： VC++例子 C++Builder例子 Delphi例子 VB例子 PB例子

9、void OnKeyDownFieldCell(short nChar, short nRepCnt, short nFlags, BSTR FieldName, BSTR FieldValue, short RecordID, boolean* bEtCellCtrlDisposeKeyDown)

入口参数：

  • nChar 键盘的按动的ACSII吗值
  • nRepCnt 按动的次数
  • nFlags 是否按动了Shift Alt Ctrl等键
  • FieldName 具有输入焦点的et字段名
  • FieldValue 具有输入焦点的et数据表字段内容

出口参数：

  • bEtCellCtrlDisposeKeyDown 是否允许EtCell控件处理这个键盘消息，默认允许处理

功能描述：当在控件中有键盘消息时，就触发这个事件

在事件中能用到函数<建议>：

例子： VC++例子 C++Builder例子 Delphi例子 VB例子 PB例子

10、void OnInPlaceButtonClicked(short row, short col, BSTR sCellValue,long HWnd,short x, short y,short CellWidth, short CellHeight)

入口参数：

  • row 具有输入焦点的单元所在行
  • col 具有输入焦点的单元所在列
  • sCellValue 具有输入焦点的单元字符串内容
  • HWnd 控件的窗口句柄，不同的开发工具需要做相应转换
  • x 具有输入焦点的单元的坐标X值
  • y 具有输入焦点的单元的坐标Y值
  • CellWidth 具有输入焦点的单元的宽度
  • CellHeight 具有输入焦点的单元的高度

出口参数：无

功能描述：

  1. 当单元格中存在右边的按钮，并且用户按动了按钮时，就触发这个事件；也可以通过程序动态模拟按动按钮，执行按钮的功能。
  2. 可以利用HWnd窗口句柄，在单元具有焦点时，动态弹出Combox、ListBox或者对话框，让用户进行选择，选择完毕后对某些单元进行赋值操作

在事件中能用到函数<建议>：

  • 动态按动按钮的函数 boolean ClickedInCellPlaceButton() 在OnKeyDown事件中调用这个函数相当于按动了按钮

例子： VC++例子 C++Builder例子 Delphi例子 VB例子 PB例子

11、void OnClickedAliasCellButton(short row, short col, BSTR AliasName, BSTR CellValue, long HWnd, short x, short y, short CellWidth, short CellHeight)

入口参数：

  • row 具有输入焦点的单元所在行
  • col 具有输入焦点的单元所在列
  • AliasName 具有输入焦点的单元别名
  • CellValue 具有输入焦点的单元内容
  • HWnd 控件的窗口句柄，不同的开发工具需要做相应转换
  • x 具有输入焦点的单元的坐标X值
  • y 具有输入焦点的单元的坐标Y值
  • CellWidth 具有输入焦点的单元的宽度
  • CellHeight 具有输入焦点的单元的高度

出口参数：无

功能描述：

  1. 当别名单元格中存在右边的按钮，并且用户按动了按钮时，就触发这个事件；也可以通过程序动态模拟按动按钮，执行按钮的功能。
  2. 可以利用HWnd窗口句柄，在单元具有焦点时，动态弹出Combox、ListBox或者对话框，让用户进行选择，选择完毕后对某些单元进行赋值操作

在事件中能用到函数<建议>：

  • 动态按动按钮的函数 boolean ClickedInCellPlaceButton() 在OnKeyDown事件中调用这个函数相当于按动了按钮

例子： VC++例子 C++Builder例子 Delphi例子 VB例子 PB例子

12、void OnClickedFieldCellButton(short row, short col, BSTR FieldName, BSTR FieldValue, short RecordID, long HWnd, short x, short y, short CellWidth, short CellHeight)

入口参数：

  • row 具有输入焦点的单元所在行
  • col 具有输入焦点的单元所在列
  • FieldName 具有输入焦点的et字段名
  • FieldValue 具有输入焦点的et数据表字段内容
  • HWnd 控件的窗口句柄，不同的开发工具需要做相应转换
  • x 具有输入焦点的单元的坐标X值
  • y 具有输入焦点的单元的坐标Y值
  • CellWidth 具有输入焦点的单元的宽度
  • CellHeight 具有输入焦点的单元的高度

出口参数：无

功能描述：

  1. 当et数据集单元格中存在右边的按钮，并且用户按动了按钮时，就触发这个事件；也可以通过程序动态模拟按动按钮，执行按钮的功能。
  2. 可以利用HWnd窗口句柄，在单元具有焦点时，动态弹出Combox、ListBox或者对话框，让用户进行选择，选择完毕后对某些单元进行赋值操作

在事件中能用到函数<建议>：

  • 动态按动按钮的函数 boolean ClickedInCellPlaceButton() 在OnKeyDown事件中调用这个函数相当于按动了按钮

例子： VC++例子 C++Builder例子 Delphi例子 VB例子 PB例子

13、void OnFileOpened(BSTR sFileName, short nErrorNum, BSTR sErrorInfo)

入口参数：

  • sFileName 正在打开的报表文件名
  • nErrorNum 打开报表时的错误号码，0=表示没有错误
  • sErrorInfo 错误的字符串内容

出口参数：无

功能描述：

当打开报表时，触发此事件

在事件中能用到函数<建议>：

14、void OnImageClicked(short row, short col, BSTR AliasName)

入口参数：

  • row 图片所在的行
  • col 图片所在的列
  • AliasName 图片所在单元的别名

出口参数：无

功能描述：

当用鼠标点击了图片单元的图片时，触发此事件

在事件中能用到函数<建议>：

15、void OnChartClicked(short row, short col, BSTR AliasName)

入口参数：

  • row 图表所在的行
  • col 图表所在的列
  • AliasName 图表所在单元的别名

出口参数：无

功能描述：

当用鼠标点击了图表单元的图表时，触发此事件

在事件中能用到函数<建议>：

16、OnComboxChanged(BSTR strAliasName, short nNewSelectedRow, short nOldSelectedRow)

入口参数：

  • strAliasName ComboBox控件所在单元格的别名
  • nNewSelectedRow 最新选择的行索引（索引从0算起）
  • nOldSelectedRow 落选的行索引（索引从0算起）

出口参数：无

功能描述：

当多列ComboBox改变时，触发此事件

可以通过方法BSTR GetItemString(short nIndex, short nColumn) 取的有关条目的信息。

在事件中能用到函数<建议>：

17、void OnDblClick(short row, short col)

入口参数：

  • row 双击单元所在的行
  • col 双击单元所在的列

出口参数：无

功能描述：

当用鼠标双击报表单元时，触发此事件

可以和正行选择方法void SetSingleRowSelection(boolean m_bSingleRowSelection)配合使用。

在事件中能用到函数<建议>：

18、void OnClick(short row, short col)

入口参数：

  • row 鼠标单击单元所在的行
  • col 鼠标单击单元所在的列

出口参数：无

功能描述：

当用鼠标单击报表单元时，触发此事件

备注：固定单元格，并且设置为不允许选择固定单元时，不能触发此事件

在事件中能用到函数<建议>：

19、void OnContextMenu(short row, short col, long HWnd, short x, short y);

入口参数：

  • row 鼠标右击的行 -1表示无效
  • col 鼠标右击的列 -1表示无效
  • HWnd EtCell控件的窗口句柄，不同的开发工具需要做相应转换,转换方法如： (HWND)HWnd
  • x 鼠标右击的坐标X值
  • y 鼠标右击的坐标Y值

出口参数：

  • 无

功能描述：

  • 当用鼠标右击时，触发此事件，可以用于弹出Popup菜单

在事件中能用到函数<建议>：

可以用开发工具中提供的函数进行弹出Popup菜单；

WEB动态菜单的函数，也可以用于MIS中，但是在MIS利用下面的函数，不如利用开发工具提供的功能方便；
boolean PopupMenu(); //弹出菜单
boolean AddMenu(BSTR strName, BSTR strScript, short nType);//增加菜单选项
void DeleteAllMenu();//删除所有的菜单选项
boolean EnableMenu(BSTR strName, boolean bEnabled);//使菜单选项使能或者无效

例子：
  1、//触发右击事件
//VC 例子 设置POPUP菜单
void CMenuDlg::OnOnContextMenuEtcellctrl1(short row, short col, long
  HWnd, short x, short y)
{
// TODO: Add your control notification handler code here
/**///设置POPUP菜单
CMenu menu;
menu.LoadMenu(IDR_MENU_POPUP);
CWnd *pWnd = FromHandle((HWND)HWnd);
menu.GetSubMenu(0)->TrackPopupMenu(TPM_LEFTALIGN |TPM_RIGHTBUTTON,
x, y,pWnd);

}

2、//VB的例子，其中aaa是文件菜单
Private Sub EtCell1_OnContextMenu(ByVal row As Integer, ByVal col As Integer, ByVal HWnd As Long, ByVal x As Integer, ByVal y As Integer)
PopupMenu aaa
End Sub

3、WEB方式例子：
//在页面中通过JScript脚本触发右击事件
  <SCRIPT FOR="EtCell1" EVENT="OnContextMenu(row,col,
  HWnd,x,y)" LANGUAGE="JScript">
EtCell1.PopupMenu();//弹出在Onload事件中增加的菜单选项
</SCRIPT>
在页面的Onload事件中增加的函数，以便实现WEB页面的Popup菜单；
//增加弹出式菜单,并且是动态变化的

//此菜单永久有效,点击菜单选项的实现函数，利用EtCell内置支持的VBScript脚本语句实现
EtCell1.AddMenu("打印预览","EtCell.PrintPreview",256);

//此菜单永久有效,点击菜单选项的实现函数，利用EtCell内置支持的VBScript脚本语句实现
EtCell1.AddMenu("打印","EtCell.Print true",256););
//此菜单永久有效，点击菜单选项的实现函数，利用页面的JScript函数 window_onload()
EtCell1.AddMenu("页面重新OnLoad","window_onload",257););
//增加菜单的分割符
EtCell1.AddMenu("-","window_onresize",1);
     //此菜单不是永久有效，报表退出就消失，点击菜单选项的实现函数，利用页面的JScript函数
    window_onresize()
EtCell1.AddMenu("最大化窗口","window_onresize",1);
   var strScript = "EtCell.OpenDoc
  \"xz2.eT\"";
EtCell1.AddMenu("关于EtCell的弹出菜单",strScript,0);
strScript = "EtCell.OpenDoc \"wxht.eT\"";
EtCell1.AddMenu("打开销售确认书报表",strScript,0);
//EtCell1.EnableMenu("分割单元格",false);

20、void OnAfterETComplete(short nETFirstRow, short nETLastRow, short nETCount)

入口参数：

  • nETFirstRow ET记录集的开始行
  • nETLastRow ET记录集的结束行
  • nETCount ET记录集的总记录数

出口参数：

  • 无

功能描述：

  • 在MIS C/S模式下调用DatabaseActive激活数据库后，当所有的数据库内容都填充到EtCell报表后，触发此事件；因为在C/S模式下，EtCell访问数据库的方式是通过多线程机制，在开发工具中很难捕获读取数据库的结束事件；在此事件中可以根据自己的一些需求增加自己的功能；
  • 在WEB模式下调用了ImportXML()函数引入了XML数据产生动态报表后，当所有的数据库内容都填充到EtCell报表后，触发此事件；

20、void OnDateCtrlChanged(short row, short col, DATE newDate)

入口参数：

  • row 日期控件所在的行
  • col 日期控件所在的行
  • newDate 日期控件新选择的日期

出口参数：无

功能描述：

当日期控件的日期改变时，触发此事件

附录：

在Web页面上触发事件方法：

一、通过VBScript接收处理EtCell触发的事件方法：

Sub EtCell_OnExitEdit(nRow ,nCol,sCellValue,sCellScript,sCellFormula,sLinkNode,bMoveNextCell)
MsgBox(sCellValue)
End Sub

Sub EtCell_OnClickedAliasCellButton(row,col,AliasName,CellValue,HWnd,x,y,CellWidth,CellHeight)
EtCell.RunWebScriptFunc "openWin","OpenWebFile.asp,480,250"
End Sub

Sub EtCell_OnKeyDownAliasCell(nChar,nRepCnt,nFlags,AliasName,sCellValue,bEtCellCtrlDisposeKeyDown)
EtCell.RunWebScriptFunc "openWin","OpenWebFile.asp,480,250"
End Sub

二、通过JScript接收处理EtCell触发的事件方法：

<SCRIPT FOR="EtCell1" EVENT="OnDblClick(row,col)" LANGUAGE="JScript">
EtCell1.SetCell(row,col,"双击的单元");
</SCRIPT>


EtCell组件通过VBScript ADO进行数据库查询的例子

Dim filePath
filePath = "e:\db1.mdb"
Set Conn =CreateObject("ADODB.Connection")
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & filePath
' 创建数据库对象
Set Rs =CreateObject("ADODB.Recordset")
Rs.Open "SELECT * FROM UserInfo", Conn, adOpenStatic

Dim intRows,avarRecords,intRecord
intRows=10000
avarRecords = Rs.GetRows(intRows)

'取出数据库表的字段名字
Dim FieldCount
FieldCount = Rs.Fields.Count
For i = 1
To Rs.Fields.Count
If i >= EtCell.GetColCount() Then
EtCell.InsertCol i
End If
aa = Rs(i-1).Name
EtCell.SetCell 1,i,aa
Next

'通过线程进行设置报表的单元格值
EtCell.ThreadSetCell((avarRecords))

'关闭ADO的数据连接
Rs.Close
Conn.Close

'刷新显示
EtCell.Redraw


EtCell组件通过VBScript ADO进行数据库插入操作的例子

Set Conn = CreateObject("ADODB.Connection")
Conn.Open "vod"
fatherId=23
dispStr = "数据库插入测试"
fileName = "d:\u27979测试.mpg"
bbb="insert into TreeInfo(fatherId,dispStr,fileName) values(" & fatherId & ",'"
& dispStr & "','" & fileName & "')"

Set Rs = Conn.Execute(bbb)

Conn.Close


EtCell组件读取外部Et报表文件的例子

Dim fileName,str

fileName = "d:\f1报表例子.eT"

If EtCell.OpenFileCell(fileName) Then

str = EtCell.GetFileCell(8,7)

msgbox str

EtCell.CloseFileCell()

End If


通过EtCell进行网络传输的例子

Dim obj
'创建网络传输的COM组件，这个组件是昂利万软件公司的产品，需要的可以下载
Set obj = CreateObject("Network.Upload")
'obj.SetProxy "99.99.99.192",1080,1 '通过代理服务器进行数据传输

If(obj.Connect("192.168.0.100",8989)) Then
EtCell.SetCell 8,4,"连接成功！" '在EtCell组件中显示连接结果

'obj.ShellWeb "http://192.168.0.1/cs/"
 'obj.ShellExec "explorer.exe",""
If(obj.AsyncUploadFile("e:\1.mpg")) Then
EtCell.SetCell 8,4,"上载成功！"
Else
EtCell.SetCell 8,4,"上载不成功！"
End If
Else
EtCell.SetCell 8,4,"连接不成功！"
End If

Set obj = Nothing


EtCell组件通过COM组件发送EMail的例子

发送EMail的COM组件是济南昂利万软件开发有限公司开发的产品，此产品可以和所有开发工具完美结合，实现发送EMail的功能。特色功能有:
(1)能发送带附件的邮件；
(2)可以发送HTML格式的邮件；
(3)可以通过代理发送邮件

Dim obj
Set obj = CreateObject("ToEmail.SMTP")
obj.SetLoginMethod 2,"OnlyOne","123" '邮件的用户名和密码
obj.SetSender "赵光宝","zhaoguangbao@163.net" '设置发送者的信息
obj.Subject="EMail COM源程序" '设置邮件的标题

'增加Html格式的邮件内容
obj.Body="<img src='http://pimg.163.com/freemail/logo.gif'>EMail COM源程序"
'obj.Attachments = "d:\11.et"

obj.Files = "d:\etcell.zip"
'obj.SetProxy "99.99.99.192",1080,1
obj.Connect "smtp.163.net",25
If (obj.SendTo("zhaoguangbao@163.com")) Then
EtCell.SetCell 8,4,"发送成功！"
Else
EtCell.SetCell 8,4,"不成功！"
End If

Set obj = Nothing


昂利万报表套件-感谢各位朋友的支持！

各位尊敬的朋友：

    EtCell组件版终于跟大家见面啦！真诚欢迎您的使用，盼望继续得到您宝贵的意见和支持。为回报各位朋友一直以来对EtCell组件的热爱与支持，济南昂利万软件开发有限公司以强大的技术开发力量进行开发新版。我们非常希望EtCell组件2.0版能得到您的认可。

    目前采用EtCell组件进行软件开发的单位,国内已有多家,并正在逐步走向海外。长期以来，在计算机软件领域一直是国外产品涌入国内，国产软件很少能走出国门，EtCell组件凭借其一流的技术水平，完全可以做到这一点。组件技术在软件领域正悄悄的掀起一场新的技术革命。

    在EtCell组件的编写过程中，不断得到朋友们的指正与建议，使她愈来愈满足用户的需求。希望大家一如既往的提出你的建议，不论是表扬还是批评，您的关注让我们觉得非常荣幸和感谢。在此，谨向所有关心和支持EtCell组件及国产软件的朋友们表示真诚的致谢！

昂利万EtCell组件开发组

联系电话：(0531)69952003

联系人：赵光宝