8

我正在尝试使用 COM 函数打开并读取带有 PHO 的 Word 文档的内容。但是每当我尝试阅读内容时,它都会给我以下错误:

致命错误:未捕获的异常“com_exception”,带有消息“来源: Microsoft Word
描述:此命令不可用,因为没有打开文档。”

我有以下代码:

    $word = new \COM ( "word.application" ) or die ( "Could not initialise MS Word object." );
    $word->Documents->Open ( realpath("test.doc" ) );

    // Extract content.
    $content = (string) $word->ActiveDocument->Content;

    echo $content;

    $word->ActiveDocument->Close(false);

    $word->Quit();
    $word = null;
    unset($word);

我 100% 确定 Word 文档存在。我已经检查过很多次了。该文件的权限设置为Full Control. 所以也不能这样。


我还阅读了关于 php.net 的评论。它说 IIS 引起了问题(我正在运行)。他的解决方案是这样的:

  • 执行“dcomcnfg”
  • 打开组件服务 > 计算机 > 我的电脑 > DCOM 配置
  • 搜索 Microsoft Office Word 97-2003 文档(它会像这样翻译成您的语言,所以花点时间搜索一下)<-- 卡在这个文档上,找不到任何名为“Microsoft Office... "
  • 右键单击它并打开属性
  • 选择“身份”选项卡
  • 通常这被设置为“启动用户”。您必须将其更改为“交互式用户”或您选择的管理员用户。
  • 应用这些新设置并测试您的 COM 应用程序。它现在应该可以正常工作了。

无论如何,我还没有得到这个工作。任何人都知道如何解决这个错误......???

4

1 回答 1

8

我刚刚找到了解决方案。我谈到的步骤:

  • 执行“dcomcnfg”
  • 打开组件服务 > 计算机 > 我的电脑 > DCOM 配置
  • 搜索 Microsoft Office Word 97-2003 文档(它将是...
  • ETC..

这样可行。但就像我说的,我找不到Microsoft Office Word 97-2003配置。所以这就是我为了让它出现在列表中所做的。

  1. 开始
  2. mmc -32
  3. 文件
  4. 添加删除管理单元
  5. 组件服务
  6. 添加
  7. 好的
  8. 控制台根
  9. 组件服务
  10. 电脑
  11. 我的电脑
  12. DCOM 配置
  13. 微软 Excel 应用程序

所以现在你应该可以按照我第一篇文章中的步骤进行操作了。然后 PHP 应该能够毫无问题地阅读文档。

于 2012-08-24T07:44:49.440 回答