IBM Lotus Symphony


Lotus Symphony Spreadsheets 中用于编程的附加项函数

警告图标 以下描述的通过附加项扩展 Lotus® Symphony™ Spreadsheets 的方法已经过时。为确保与现有附加项兼容,这些接口仍然有效并受支持,但在对新的附加项编程时,您应该使用新的 API 函数

您可以使用附加项来扩展 Lotus Symphony Spreadsheets,这些附加项是外部编程模块,用于提供更多函数来处理电子表格。这些函数在函数向导附加项类别中列出。如果您希望自己编写附加项程序,那么您可以在此了解要成功添加附加项,必须通过外部 DLL 导出哪些函数。

Lotus Symphony 会搜索配置中定义的附加项文件夹以获取适当的 DLL。要使 DLL 能由 Lotus Symphony 识别,该 DLL 必须包含特定属性,如下所述。这些信息帮助您针对 Lotus Symphony Spreadsheets函数向导编写自己的附加项程序。

附加项概念

每个附加项库都提供多个函数。有些函数用于管理目的。您可以为自己的函数选择几乎任何名称。但是,它们也要遵循有关参数传递的特定规则。具体的命名与调用约定因平台而异。

AddIn DLL 的函数

必须至少存在管理函数 GetFunctionCount 和 GetFunctionData。使用这两个函数可以确定函数、参数类型以及返回值。对于返回值,支持双精度和字符串类型。对于参数,还支持单元格区域双精度数组、字符串数组和单元格数组类型。

参数通过引用传递。因此,这些值基本上是可以更改的。但是,这在 Lotus Symphony Spreadsheets 中不受支持,因为这种更改在电子表格中没有任何意义。

在运行时会重新加载库,管理函数会对其内容进行分析。对于每个函数都提供了有关参数的数目和类型、内部和外部函数名称以及管理编号的信息。

函数以同步方式调用并立即返回结果。实时函数(异步函数)也可以使用;但是由于其复杂性,在此不作详细说明。

有关接口的常规信息

添加到 Lotus Symphony Spreadsheets 的附加项函数中,参数的数目最多为 16 个:包括一个返回值和最多 15 个函数输入参数。

数据类型定义如下:

表 1. 数据类型定义
数据类型 定义
CALLTYPE

在 Windows 中:FAR PASCAL(_far _pascal)

在其他操作系统中:缺省值(特定于操作系统的缺省值)

USHORT 2 字节无符号整数
DOUBLE 8 字节与平台相关的格式
Paramtype

与平台相关,例如 int

指向双精度值的 PTR_DOUBLE =0 指针

指向以零结尾的字符串的 PTR_STRING =1 指针

指向双精度数组的 PTR_DOUBLE_ARR =2 指针

指向字符串数组的 PTR_STRING_ARR =3 指针

指向单元格数组的 PTR_CELL_ARR =4 指针

NONE =5

DLL 函数

以下介绍在外部 DLL 处调用的函数。

以下信息适用于所有 DLL 函数:

void CALLTYPE fn(out, in1, in2, ...)

输出:结果值

输入:任何类型的数(double&、char*、double*、单元格区域),其中“单元格区域”是双精度数组、字符串数组或单元格数组类型的数组。

GetFunctionCount()

返回函数数目,不包含引用参数的管理函数。每个函数都有一个 0 到 nCount-1 之间的唯一编号。GetFunctionData 和 GetParameterDescription 函数稍后需要该编号。

语法

void CALLTYPE GetFunctionCount(USHORT& nCount)

参数

USHORT &nCount:

输出:针对一个变量的引用,该变量应包含附加项函数的数目。例如,如果附加项为 Lotus Symphony Spreadsheets 提供 5 个函数,那么 nCount=5。

GetFunctionData()

确定有关附加项函数的所有重要信息。

语法

void CALLTYPE GetFunctionData(USHORT& nNo, char* pFuncName, USHORT& nParamCount, Paramtype* peType, char* pInternalName)

参数

USHORT& nNo:

输入:0 到 nCount-1 闭区间内的一个函数编号:

char* pFuncName:

输出:程序员看到的函数名称,该名称与 DLL 中的名称一致。该名称不会确定用于函数向导的名称。

USHORT& nParamCount:

输出:附加项函数中的参数数目。该数目必须大于零,因为始终存在结果值;最大值为 16。

Paramtype* peType:

输出:指向包含正好 16 个 Paramtype 类型的数组的指针。第一批 nParamCount 项用适合类型的参数填充。

char* pInternalName:

输出:用户看到的函数名称,该名称与函数向导中显示的名称相同。名称可以包含元音变音字符。

pFuncName 和 pInternalName 参数是字符数组,在 Lotus Symphony Spreadsheets 中以大小 256 来实现。

GetParameterDescription()

对附加项函数及其参数提供简要描述。作为一个选项,该函数可用于显示函数向导中的函数和参数描述。

语法

void CALLTYPE GetParameterDescription(USHORT& nNo, USHORT& nParam, char* pName, char* pDesc)

参数

USHORT& nNo:

输入:该函数在库中的编号;介于 0 到 nCount-1 之间。

USHORT 和 nParam:

输入:表示描述是针对哪个参数提供的;参数以 1 开始;如果 nParam 为 0,表明 pDesc 中提供的是参数本身;在这种情况下,pName 没有任何意义。

char* pName:

输出:采用参数名称或类型,例如,字“数字”或“字符串”或“日期”等等。在 Lotus Symphony Spreadsheets 中以 char[256] 实现。

char* pDesc:

输出:采用参数的描述,例如,“Value,在该参数中将计算宇宙的大小”。在 Lotus Symphony Spreadsheets 中以 char[256] 实现。

pName 和 pDesc 是字符数组;在 Lotus Symphony Spreadsheets 以大小 256 实现。请注意,函数向导中的可用空间受限,无法完全使用 256 个字符。

单元格区域

下表包含有关为传递单元格区域,外部程序必须提供的数据结构的信息。Lotus Symphony Spreadsheets 可根据数据类型识别三种不同的数组。

双精度数组

作为参数,可以传递具有数字/双精度类型的值的单元格区域。在 Lotus Symphony Spreadsheets 中双精度数组定义如下:

表 2. 双精度数组的定义
偏移 名称 描述
0 Col1 单元格区域左上角的列号;编号从 0 开始。
2 Row1 单元格左上角的行号;编号从 0 开始。
4 Tab1 单元格区域左上角的表号;编号从 0 开始。
6 Col2 单元格区域右下角的列号;编号从 0 开始。
8 Row2 单元格区域右下角的行号;编号从 0 开始。
10 Tab2 单元格区域右下角的表号;编号从 0 开始。
12 Count 后续元素的数目。对空单元格将不进行计数或传递。
14 Col 元素的列号;编号从 0 开始。
16 Row 元素的行号;编号从 0 开始。
18 Tab 元素的表号;编号从 0 开始。
20 Error 错误号,值 0 定义为“无错误”。如果元素来自公式单元格,那么错误值将由该公式确定。
22 Value 8 字节的双精度/浮点类型的 IEEE 变量
30 ... 下一个元素

字符串数组

一个单元格区域,包含“文本”数据类型的值,并且作为字符串数组传递。Lotus Symphony Lotus Symphony Spreadsheets 中的字符串数组定义如下:

表 3. 字符串数组的定义
偏移 名称 描述
0 Col1 单元格区域左上角的列号;编号从 0 开始。
2 Row1 单元格左上角的行号;编号从 0 开始。
4 Tab1 单元格区域左上角的表号;编号从 0 开始。
6 Col2 单元格区域右下角的列号;编号从 0 开始。
8 Row2 单元格区域右下角的行号;编号从 0 开始。
10 Tab2 单元格区域右下角的表号;编号从 0 开始。
12 Count 后续元素的数目。对空单元格将不进行计数或传递。
14 Col 元素的列号;编号从 0 开始。
16 Row 元素的行号;编号从 0 开始。
18 Tab 元素的表号;编号从 0 开始。
20 Error 错误号,值 0 定义为“无错误”。如果元素来自公式单元格,那么错误值将由该公式确定。
22 Len 后续字符串的长度(包含结束零字节)。如果包含结束零字节的长度等于奇数值,那么会对该字符串添加第二个零字节,以使长度成为偶数值。因此,Len 是通过 ((StrLen+2)&~1) 计算得到的。
24 String 包含结束零字节的字符串
24+Len ... 下一个元素

单元格数组

单元格数组用于调用包含文本以及数字的单元格区域。Lotus Symphony Spreadsheets 中的单元格数组定义如下:

表 4. 单元格数组的定义
偏移 名称 描述
0 Col1 单元格区域左上角的列号;编号从 0 开始。
2 Row1 单元格左上角的行号;编号从 0 开始。
4 Tab1 单元格区域左上角的表号;编号从 0 开始。
6 Col2 单元格区域右下角的列号;编号从 0 开始。
8 Row2 单元格区域右下角的行号;编号从 0 开始。
10 Tab2 单元格区域右下角的表号;编号从 0 开始。
12 Count 后续元素的数目。对空单元格将不进行计数或传递。
14 Col 元素的列号; 编号从 0 开始。
16 Row 元素的行号;编号从 0 开始。
18 Tab 元素的表号;编号从 0 开始。
20 Error 错误号,值 0 定义为“无错误”。如果元素来自公式单元格,那么错误值将由该公式确定。
22 Type 单元格内容的类型,0 == 双精度,1 == 字符串
24 Value 或 Len

如果类型 == 0,那么为 8 字节的双精度/浮点类型的 IEEE 变量

如果类型 == 1,那么为后续字符串的长度(包含结束零字节)。如果包含结束零字节的长度等于奇数值,那么会对该字符串添加第二个零字节,以使长度成为偶数值。因此,Len 是通过 ((StrLen+2)&~1) 计算得到的。

26,如果类型 == 1 String 如果类型 == 1,那么为包含结束零字节的字符串
32 或 26+Len ... 下一个元素

产品反馈 | 其他文档 | 商标