如果您对 print_r($obj)(其中 $obj 是从对 COM 对象上的函数的调用返回的内容)没有返回任何有用的内容感到沮丧,并且 variant_get_type($obj) 仅返回一个数字,那么您实际上需要的函数是
com_print_typeinfo($obj);
它以人类可读(好吧,程序员可读)的格式列出了所有函数、变量及其类型。太棒了!
(PHP 4 >= 4.1.0, PHP 5, PHP 7, PHP 8)
VARIANT 是 COM 中 PHP zval 的等价物;它是一个结构,可以包含具有各种不同可能类型的值。COM 扩展提供的 variant 类允许您更好地控制 PHP 向 COM 传递和从 COM 接收值的方式。
示例 #1 variant 示例
<?php
$v = new variant(42);
print "类型是 " . variant_get_type($v) . "<br/>";
print "值是 " . $v . "<br/>";
?>
注意:
在返回值或获取 variant 属性时,只有当类型之间存在不会导致信息丢失的直接映射时,才会将 variant 转换为 PHP 值。在所有其他情况下,结果将作为 variant 类的实例返回。您可以强制 PHP 将 variant 转换为或计算为 PHP 本机类型,方法是显式使用强制转换运算符,或通过print隐式强制转换为字符串。您可以使用各种 variant 函数对 variant 执行算术运算,而无需强制转换或冒数据丢失的风险。
另请参阅 variant_get_type()。
如果您对 print_r($obj)(其中 $obj 是从对 COM 对象上的函数的调用返回的内容)没有返回任何有用的内容感到沮丧,并且 variant_get_type($obj) 仅返回一个数字,那么您实际上需要的函数是
com_print_typeinfo($obj);
它以人类可读(好吧,程序员可读)的格式列出了所有函数、变量及其类型。太棒了!
感谢 Harald Radi 和 Wez Furlong。
某些 VBA 函数具有可选参数。有时您想要传递的参数不是连续的。
例如
GoTo What:=wdGoToBookmark, Name="BookMarkName"
GoTo(wdGoToBookmark,,,"BookMarkName)
在 PHP 中,"空白" 参数需要为空。
也就是...
<?php
// 某些服务器可能具有自动超时,因此需要尽可能长的时间。
set_time_limit(0);
// 在开发过程中显示所有错误、警告和通知。
error_reporting(E_ALL);
// 用作某些 COM 函数中不需要参数时的占位符。
$empty = new VARIANT();
// 加载相应的类型库。
com_load_typelib('Word.Application');
// 创建要使用的对象。
$word = new COM('word.application') or die('无法加载 Word');
print "加载了 Word,版本 {$word->Version}\n";
// 使用书签 YourName 和 YourAge 打开一个新文档。
$word->Documents->Open('C:/Unfilled.DOC');
// 填写表单中的信息。
$word->Selection->GoTo(wdGoToBookmark,$empty,$empty,'YourName'); // 请注意使用 wdGoToBookmark(来自类型库)和使用 $empty。
$word->Selection->TypeText($_GET['YourName']);
$word->Selection->GoTo(wdGoToBookmark,$empty,$empty,'YourAge');
$word->Selection->TypeText($_GET['YourAge']);
// 保存、关闭 Word 并完成。
$word->Documents[1]->SaveAs("C:/{$_GET['YourName']}.doc");
$word->Quit();
$word->Release();
$word = null;
print "Word 已关闭。\n";
?>
示例文档是...
您好 [书签 YourName],您 [书签 YourAge] 岁。
并且它将被称为...
word.php?YourName=Richard%20Quadling&YourAge=35
此致,
Richard。