我想使用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>
答案 0 :(得分:4)
我不确定你在代码中想要做什么,但这里有一些关于访问word文档和doc中的表格的信息:
Microsoft Word对象模型
此对象模型是Microsoft Word(不是Javascript)的一部分,它允许您从其他程序(不仅仅是网页,而是任何计算机程序)远程“自动化”单词。
它主要是为Visual Basic设计的,但可以通过网页上的Javascript访问 - 参见下面的第2段。
然而,通过Javascript使用它有点棘手,特别是因为你不能使用visual basic常量 - 你需要通过值来引用它们。如果你进一步研究,你很快就会知道我的意思。
那么你在哪里可以找到这个对象模型?
如果你找的话,它就在Word帮助文件中。
如果查看Word帮助,在编程信息下,您将找到Microsoft Word Visual Basic编程参考。
Word对象模型,可让您执行解决问题所需的操作,如:
如何从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);`
现在我留给你继续其余的事情。
答案 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中的示例。