通过Javascript的MS Word对象模型:邮件合并


MS Word Object Model via Javascript: Mail Merge

我正在为当地一家慈善机构构建一个网站应用程序,进展顺利,我似乎克服了大多数挑战,但这是我遇到的一个巨大问题,我甚至不知道这是否可能。

我希望用户能够点击一个按钮,通过邮件输出一个Microsoft Word文件,将文本文件和预构建的模板(dotx(文件合并在服务器端。文本文件将只包含一条从mySQL数据库中获取并通过PHP生成的记录。

我知道使用XSLT来修改文档zip中的文档文件,但我无法访问慈善机构服务器上的php.ini,无论如何,考虑到创建宏到邮件合并是多么简单,这似乎有点太多了。

所以我现在正在考虑使用Word对象模型,它必须通过Javascript,但大多数用户要么使用Firefox,要么使用Chrome,例如var oApplication = new ActiveXObject("Application.Word");可以与这些浏览器配合使用,或者我可以简单地使用= new Object("Application.Word");吗?

此外,我可以确认Javascript中的对象将与VBA中的对象具有相同的函数名和参数吗?我从未尝试过通过Javascript使用Word,但如果它与VBA相同,那么我应该没事。

我使用本地主机进行开发,文件结构为:

  • 模板''构象.docx
  • template''data.txt

其中data.txt是从数据库中获取的数据的PHP生成的CSV。

ActiveX/COM自动化(访问word.application所需(仅在IE中受支持,其他浏览器都不支持。

如果支持,您仍然无法从客户端轻松地与服务器上的Word文件交互。

您可以在服务器上生成文件(使用PHP生成word文档(,尽管要访问word本身实际内置的功能(如邮件合并(,您需要以编程方式与服务器上安装的word的真实实例进行交互(使用PHP/COM/word.application(来控制它,为了避免这种情况,您可以手动执行邮件合并所做的任何操作。

另一种选择是使用包含VBA代码的Word文档,VBA代码与PHP web服务交互以生成输出文档。

web服务是应用程序的一个选项吗?如果是这样的话,看看Docmosis吧——你可以上传文档模板,然后发送带有数据的请求,进行邮件合并,输出包括MS word在内的各种选项的结果。