【XLL API 函数】xlCoerce
将 XLOPER/XLOPER12 转换为另一种类型,或是查询表格中的单元格值。
函数原型
Excel12(xlCoerce, LPXLOPER12 pxRes, 2, LPXLOPER12 pxSource, LPXLOPER12 pxDestType);
参数
pxSource
需要转换的 XLOPER 或 XLOPER12
pxDestType ( xltypeInt)
可选参数,表示你要转换的目标类型。你可以使用位运算符 ( | ) 指定多个可能的类型。如果省略此参数,引用的单个单元格将转换为下面几种类型中的一种:xltypeStr, xltypeNum, xltypeBool, xltypeErr, xltypeNil (如果引用单元格为空),如果引用的是单元格区域,将转换为 xltypeMulti。这使得 xlCoerce 以最方便的方式来查看单元格的值。
属性值和返回值
返回转换的值 xltypeStr, xltypeNum, xltypeBool, xltypeErr, xltypeNil, or xltypeMulti.
备注
xlCoerce 不能与 xltypeBigData 或 xltypeFlow 相互转换。转递 xltypeMissing 或 xltypeNil 给 pxDestType 和省略 pxDestType 参数的效果是一样的。另外在某些情况下转换会失败,一些字符串不能转换为数值,但其外一些情况下就可以转换。
实例
下面的代码可以在 \SAMPLES\EXAMPLE\EXAMPLE.C 中找到。
注意: xlcAlert 函数会自动将参数转换为字符串,所以强制转换的步骤可以删除,xInt 可以立即转换到 xlcAlert。xlcAlert 是命令宏,只能从宏表调用
[C++]
short WINAPI xlCoerceExample(short iVal)
{
XLOPER12 xStr, xInt, xDestType;
xInt.xltype = xltypeInt;
xInt.val.w = iVal;
xDestType.xltype = xltypeInt;
xDestType.val.w = xltypeStr;
Excel12f(xlCoerce, &xStr, 2, (LPXLOPER12)&xInt, (LPXLOPER12)&xDestType);
Excel12f(xlcAlert, 0, 1, (LPXLOPER12)&xStr);
Excel12f(xlFree, 0, 1, (LPXLOPER12)&xStr);
return 1;
}