使用JavaScript“创建”Microsoft Word文档

时间:2011-07-21 17:05:55

标签: javascript jquery

我想使用JavaScript动态创建文档,然后在Microsoft Word中打开该文档。这可能吗?这是我目前的代码:

<html>
  <head>
      <title></title>

       <script src="js/jquery-1.4.4.js" type="text/javascript"></script>
  </head>
  <body>

  <div id="myDiv">The quick brown fox jumped lazly over the dead log.</div>

  <script type="text/jscript">
     var printWindow = window.open("", "Print", "width=800,height=400,scrollbar=0");
     var printAreaHtml = $("#myDiv").attr("outerHTML");

     printWindow.document.open("text/html", "replace");
     printWindow.document.writeln("<html><head>")
     printWindow.document.writeln("<meta HTTP-EQUIV='Content-Type'  content='application/vnd.ms-word'>");
     printWindow.document.writeln("<meta HTTP-EQUIV='Content-Disposition' content='attachment;filename=print.doc'>");
     printWindow.document.writeln("</head>");
     printWindow.document.writeln("<body>");
     printWindow.document.write(printAreaHtml);

     printWindow.document.writeln("</body>");
     printWindow.document.writeln("</html>");
     printWindow.document.close();

     //    printWindow.print();     

  </script>

  </body>
</html>

7 个答案:

答案 0 :(得分:4)

我不确定你在代码中想要做什么,但这里有一些关于访问word文档和doc中的表格的信息:

  1. Microsoft Word对象模型

    此对象模型是Microsoft Word(不是Javascript)的一部分,它允许您从其他程序(不仅仅是网页,而是任何计算机程序)远程“自动化”单词。

    它主要是为Visual Basic设计的,但可以通过网页上的Javascript访问 - 参见下面的第2段。

    然而,通过Javascript使用它有点棘手,特别是因为你不能使用visual basic常量 - 你需要通过值来引用它们。如果你进一步研究,你很快就会知道我的意思。

    那么你在哪里可以找到这个对象模型?

    如果你找的话,它就在Word帮助文件中。

    如果查看Word帮助,在编程信息下,您将找到Microsoft Word Visual Basic编程参考。

    Word对象模型,可让您执行解决问题所需的操作,如:

    • 打开Word
    • 在Word中打开文档
    • 访问该ActiveDocument中的表集合。
    • 访问给定表格的行和单元格。
  2. 如何从Javascript访问此内容?

    这可能只是通过Internet Explorer(也许是Opera)来实现。

    在这里,您需要了解ActiveXObjects。

    ActiveXObjects(如果您不知道)是单独的计算机程序,可以启用其他功能。互联网上有很多ActiveX对象。

    当您安装Word时,它还会安装一个用于自动化Word的ActiveX对象,使您可以访问Word对象模型。

    所以在javascript中,让我们打开一个新的单词实例:

    var oApplication=new ActiveXObject("Word.Application");
    oApplication.Visible=true; // "Visible" is in the Word Object Model`
    

    你有它。

    然后,如果您想打开文件并获取表格:

    oApplication.Documents.Open("myfilename");
    var oDocument=oApplication.ActiveDocument;
    var oTable=oDocument.Tables(1);`
    
  3. 现在我留给你继续其余的事情。

答案 1 :(得分:1)

我不相信这个想法会起作用。您需要使用服务器端语言创建Word文件。例如PHP:http://www.webcheatsheet.com/php/create_word_excel_csv_files_with_php.php

答案 2 :(得分:1)

编辑:当问到这个问题时,这是不可能的,但2017年是这样。请参阅jrm的评论链接 - http://www.effectiveui.com/blog/2015/02/23/generating-a-downloadable-word-document-in-the-browser/

浏览器对Javascript有一些严格的限制,这会阻止您创建可下载的文件。请参阅此相关问题:

Create a file in memory for user to download, not through server

答案 3 :(得分:0)

使用客户端无法实现此功能。主要的是你需要发送标题而不是html。所以我建议你使用服务器端脚本作为Max建议,如果你使用Apache服务器也将这些文件命名为.doc,最好使用.htaccess文件。

让我们假设你的php文件需要创建一个带有一些传递参数的.doc文件,让我们说id。所以你想让file_.doc指向file.php?id =,尝试使用以下重写规则,以便浏览器也可以通过扩展理解 RewriteRule文件_(。*)。doc file.php?id = $ 1

答案 4 :(得分:0)

如果您需要生成服务器端文档并且服务器正在运行Java,请看一下: https://github.com/leonardoanalista/java2word/

答案 5 :(得分:-1)

有时我们无法使用服务器端应用程序或activeX来创建office文档,因为phonegap移动应用程序仅使用客户端javascipt来运行。 我现在找到的唯一方法是使用二进制文件格式或OOXML

http://msdn.microsoft.com/en-us/library/hh643138(v=office.12

有人说创建RTF文件要容易得多,我也同意。

答案 6 :(得分:-1)

这绝对是可能的。 Googoose是一个jQuery插件,我编写它来处理许多更复杂的转换。它仍然相当新,但似乎还有其他一些尝试,所以你可以检查出来。这是迄今为止我发现的最好的文档,它实际上解释了这个过程http://sebsauvage.net/wiki/doku.php?id=word_document_generation。如果您有兴趣,请查看Googoose中的示例。