我有一个用C#编写的.net Web应用程序,仅在Intranet上使用。
我有一个页面,我需要在其中创建Word文档,动态修改某些文本,保存Word文档并将其作为电子邮件附件发送。
我尝试使用Word Automation,尽管它在我的开发机器上运行,但当其他用户尝试使用它时,它在服务器上无效。
那么......如何动态创建Word文档,保存并将其用作电子邮件附件?我搜索过,人们说'使用open xml'......但是(除了事实上我不知道怎么做)这会让我创建并保存一个Word文档,这个文档可以被人们用来打开Word的旧版本(比如Word 97)。
我一直在阅读“Sharepoint Server”这个词,但是,再一次,不知道这可能适合.net网络应用程序。
有人能指出我正确的方向吗?
答案 0 :(得分:3)
OpenXML是现在正确的方法。从头开始创建Word文档实际上非常简单,并且有很多教程。
仅仅因为您使用Sharepoint标记了您的问题我不确定您是否使用Sharepoint - 如果是这样,甚至有一些关于Generating Documents from SharePoint Using Open XML Content Controls的示例代码直接来自Microsoft。
答案 1 :(得分:1)
代码在您的开发计算机上运行但不在服务器上运行的最可能原因是因为您的开发计算机上可能安装了Office / Word主互操作程序集,但您没有说这些是否已安装在服务器上。我假设他们不是。
如果您的用户在Microsoft Office XP(2002)或Office 2003 AND 安装了Microsoft Office Compatibility Pack,那么您最好的选择是使用Open XML SDK生成即时启用.docx文件,您的用户可以通过安装兼容包来打开该文件。用户打开文档后,可以将其保存为正常的.doc格式。
如果您的用户群包括Office 2000或更早版本的用户,那么您就不幸了,因为这些版本的Office没有兼容包。
如果没有安装Office程序集,您将无法在Web服务器上生成.doc格式,并且正如其他人所指出的那样,Microsoft强烈建议不要这样做。
答案 2 :(得分:1)
你考虑过使用RTF吗? RTF文件只是文本,因此您可以使用普通的.Net文件I / O来读取文件,更改您感兴趣的位,然后再将其写出来。 RTF可以从97以后的Word版本读取(也可能是旧版本)。一个缺点是如果您需要对文档进行任何复杂的更改,如果您只是将RTF作为文本处理,则可能很难。
答案 3 :(得分:0)
其他人已经评论过为什么“自动化”这个词可能不起作用以及为什么它无论如何都不行。
OpenXML很好,但只支持较新的文件格式。
如果你想支持较旧的.doc文件格式(Word97等),那么你将不得不查看另一个组件,可能是一个商业的组件,如(无连接)Aspose Words
答案 4 :(得分:0)
不要从服务中使用Office Automation。 Office Automation旨在自动化Office 桌面应用程序。它假定存在UI。
它还假设单线程。服务器(尤其是任何类型的Web服务器)将在多个线程上运行,而Office Automation代码根本无法处理。
此外,对于使用调用Office Automation的代码的每个最终用户,您必须拥有有效的Office许可证。