Excel 使用的数据类型

适用于:Excel 2013 | Office 2013 | Visual Studio

Microsoft Excel 会交换多种 ANSI C/c ++ 类型,以及一些特定于 Excel 的数据结构。 本文介绍了这些内容,为其他部分提供上下文。有关详细信息,请参阅 xlfRegister(窗体 1)主题。

ANSI C/C++ 类型

数字

Excel 的所有版本:

  • 8 字节双精度

  • [signed] short [int] - 用于 布尔 值和整数

  • unsigned short [int]

  • [signed long] int

字符串

Excel 的所有版本:

  • [signed] char * – 以 null 结尾的字节字符串(最多 255 个字符)

  • unsigned char * – 最多 255 个字符的长度计数字节字符串

自 Excel 2007 起:

  • unsigned short * – 最多 32,767 个字符的 Unicode 字符串,可以以 null 结尾或长度计数

Excel 中的所有工作表数字均存储为双精度值,以便在与 Excel 交换整数类型时无需声明加载项函数(实际上这样产生了少量的转换开销)。

如果使用整数类型,Excel 会验证输入是否在类型限制内,如果超出这些类型,则输入失败并 显示 #NUM! 。 注册采用使用 short int 实现的 Boolean 参数的函数时例外。在这种情况下,任何非零输入均转换为 1,并会直接传入零。

特定于 Excel 的数据结构

Excel 的所有版本:

  • FP – 一种二维浮点数组结构,最多支持 65,356 行(按给定版本的 Excel 中支持的最大列数)。

  • XLOPER – 一种多类型数据结构,可以表示所有工作表数据类型 (包括错误) 、整数、范围引用、XLM 宏工作表流控制类型和内部二进制存储数据类型。

    注意

    字符串表示为最多包含 255 个字符的长度计数型字节字符串。

自 Excel 2007 起:

  • FP12 – 支持从 Excel 2007 开始的所有行和列的二维浮点数组结构。

  • XLOPER12 - 一种多类型数据结构,可以表示所有工作表数据类型 (包括错误) 、整数、范围引用、XLM 宏工作表流控制类型和内部二进制存储数据类型。

    注意

    字符串表示为最多包含 32,767 个字符的长度计数型 Unicode 字符串。

注册数据类型代码

XLL 函数使用 C API 函数 xlfRegister 注册,该函数会将为返回类型和参数类型编码的字母字符串用作其第三个参数。 此字符串还包含用于告知 Excel 此函数是否具有以下特征的信息:可变、线程安全(自 Excel 2007 起)、等效于宏工作表、是否通过就地修改参数返回结果。

xlfRegister(窗体 1)主题复制了下表,并进行了详细介绍。 此处复制该表的目的在于为其他部分提供上下文。 例如,可以将采用长度计数型 Unicode 字符串(自 Excel 2007 起)的函数描述为采用 C% 类型的参数。

数据类型 按值传递 按引用传递(指针) 注释
Boolean
A
L
short(0=false 或 1=true)
double
B
E
字符*
C、F
以 null 结尾的 ASCII 字节字符串
unsigned char *
D、G
长度计数型 ASCII 字节字符串
从 Excel 2007) 开始的 unsigned short * (
C%、F%
以 null 结尾的 Unicode 宽字符字符串
从 Excel 2007) 开始的 unsigned short * (
D%、G%
长度计数型 Unicode 宽字符字符串
unsigned short [int]
H
WORD
[signed] short [int]
I
M
16 位
[signed long] int
J
N
32 位
Array
O
按引用传递为三个参数:
1. short int *rows
2. 短 int *列
3. double *array
Array
(自 Excel 2007 起)
O%
按引用传递为三个参数:
1. int *rows
2. int *columns
3. double *array
FP
K
浮点数组结构
FP12
(自 Excel 2007 起)
K%
大型网格浮点数组结构
XLOPER
P
变量类型工作表值和数组
R
值、数组和范围引用
XLOPER12
(自 Excel 2007 起)
Q
变量类型工作表值和数组
U
值、数组和范围引用

下列类型均是 Microsoft Office Excel 2007 新增的类型,较旧版本中不支持这些类型:C%F%D%G%K%O%QU。 下列字符串类型用于就地修改的参数:FF%GG%。 如果 XLOPERXLOPER12 参数分别注册为 PQ 类型,当 Excel 准备这些类型时,会将单个单元格引用转换为简单值,并将多单元格引用转换为数组。

PQ 类型始终作为下列类型之一引入函数:xltypeNumxltypeStrxltypeBoolxltypeErrxltypeMultixltypeMissingxltypeNil,但不会作为 xltypeRefxltypeSRef 引入,因为始终会取消引用这些类型。

类型 O 实际上是堆栈上的三个参数,是为了与 Fortran DLL 兼容而引入的,其中参数通过引用传递。 该类型不能用于返回值,除非将参数声明为就地修改返回值,并将结果置于引用值中。 O% 类型在 Excel 2007 中扩展 O 类型,使它可以访问范围大于 Office Excel 2003 网格的数组。

另请参阅