使用PHP COM对象打开Word文档

时间:2009-12-23 11:17:39

标签: php ms-word document

我有一些生成word文档的代码,如下所示:

$word->Documents [1]->SaveAs ( $localDir . $filename );

现在,我有点希望我现在可以通过执行以下操作来保存文件:

$word->Documents->Open($remoteDir . $filename)

// remotedir = 'word/', so for example the above would be '/word/document1.doc'

但似乎在主机上打开它,而不是用户!无论如何在用户的机器上而不是在服务器上打开它?

编辑:为了清楚起见,它将在一个内部网上专门用于一个用户,该用户将一直在Windows机器上,安装了Word等...只是想尝试让她的生活变得更好更容易!

由于

2 个答案:

答案 0 :(得分:3)

我认为你从根本上误解了在哪里运行。 PHP是一种纯粹的服务器端语言。您无法使用它在客户端的PC上打开文件,以便用户在其前面打开一个Word实例。

您可以通过客户端脚本(即VBScript或其他一些Microsoft脚本风格)来实现。但是,要为大量障碍和不兼容性做好准备,因为在所有浏览器中默认情况下会出于安全原因阻止此类事件,有时即使在客户端浏览器中使用特殊设置(“可信站点”),也无法绕过这些块。

您可以在用户的​​浏览器中将文档显示为嵌入式HTML对象。

最简单的事情可能是生成文件,并将其作为下载提供给用户。然后,用户可以保存并打开它。完成工作。

答案 1 :(得分:2)

/word/document1.doc是服务器中文件的路径,而不是客户端中的文件路径。在Windows上,假设为客户端PC启用了文件共享,则可以使用\\IP\word\document1.doc之类的路径,其中IP是客户端PC的IP。
您可以使用$_SERVER['REMOTE_ADDR']获取连接到服务器的PC的IP; $_SERVER['REMOTE_HOST']是DNS反向查找的结果,在您的情况下可以返回相同的$_SERVER['REMOTE_ADDR']值。

如果尚未将远程文件设置为(如果有指令或那样),PHP可能无法打开远程文件。

如果直接从COM对象访问共享文件不起作用,则可以将文件从客户端PC复制到临时文件中的服务器,然后将该文件提供给COM对象。这样,如果访问网络文件时出现任何错误,您应该能够获取它们。

我觉得很奇怪,无论如何,通过网络文件路径获得本地文件。你确定COM对象没有复制它在传递的删除文件路径中找到的文件吗?你尝试过不同的文件吗?如果这也发生在不同的文件中,那么我们就会遗漏一些东西;我会发现很奇怪,对于您尝试打​​开的所有网络文件,已经有一个同名的本地文件。尝试重命名网络文件。