2011-01-10 67 views
2

我有一个用C#编写的.net网络应用程序,只能在Intranet上使用。从.net应用程序创建Word文档

我有一个页面,我需要创建一个Word文档,动态修改一些文本,保存Word文档并将其作为电子邮件附件发送。

我试着用Word自动化来做这件事,尽管它在我的开发机器上工作,但当其他用户试图使用它时,它不能在服务器上工作。

所以...如何创建一个Word文档,保存并将其用作电子邮件附件?我搜索了并且有人说'使用open xml'...但是(除了我不知道该怎么做的事实之外),这是否允许我创建并保存一个Word文档,这个Word文档可以被用户打开Word的旧版本(比较早的是Word 97)。

我一直在阅读'Sharepoint Server'这个词,但是,我们不知道这可能适合.net web应用程序。

任何人都可以指出我正确的方向吗?

+0

你知道为什么它不在服务器上运行? – 2011-01-10 11:44:45

+0

你想要生成什么样的文件格式? .DOC,.DOCX,.RTF,... – 2011-01-10 11:46:43

回答

3

OpenXML是现在正确的方法。从头开始创建Word文档实际上相当简单,并且有很多教程。

仅仅因为您使用Sharepoint标记了您的问题,我不确定您是否使用Sharepoint - 如果有的话,甚至还有一些关于Generating Documents from SharePoint Using Open XML Content Controls的示例代码直接来自Microsoft。

+1

要复卷机:自动化不无尽的权限问题的服务器,因为(我猜)上工作。微软说“不服务器上尝试办公自动化,因为办公室没有被设计为” ...... http://support.microsoft.com/?id=257757 – 2011-01-10 13:32:52

+0

要氧杂:我需要生成一个Word文档将与Word兼容返回到Word 97-2003 – 2011-01-10 13:34:15

+0

到月球:我是否必须走下XML的路线?我认为Sharepoint允许人们在服务器上共享办公文档。所以我希望能够打开一个Word文档,修改其中的一些文本(书签),然后将其保存在我想要的地方。 – 2011-01-10 13:36:46

1

代码在您的开发计算机上工作但不在服务器上的最可能的原因是您的开发计算机可能安装了Office/Word主互操作程序集,但您不会说这些计算机是安装在服务器上还是不。我假设他们不是。

如果您的用户上的Microsoft Office XP(2002)或Office 2003 Microsoft Office Compatibility Pack安装,那么你最好的选择是使用Open XML SDK来实时生成一个.docx文件,您的用户会可以通过安装兼容包来打开。用户打开文档后,可以将其保存为正常的.doc格式。

如果您的用户群包含Office 2000或更早版本的用户,那么您运气不佳,因为这些版本的Office没有兼容包。

如果没有安装Office程序集,您将无法在Web服务器上生成.doc格式,正如其他人指出的那样,Microsoft强烈建议您不要这样做。

0

其他人已经评论了为什么自动化这个词可能无法正常工作,为什么它不是一个不行。

OpenXML很好,但只支持较新的文件格式。

如果你想支持旧的.doc文件格式(Word97的等等),那么你将不得不看另一个组件,可能从市场上如(无连接)Aspose Words

0

不要从服务中使用Office Automation。办公自动化设计用于自动化Office 桌面应用程序。它假定存在一个用户界面。

它也假设单线程。服务器(尤其是任何类型的Web服务器)将在多个线程上运行,而Office自动化代码根本无法处理。

此外,对于使用调用Office Automation的代码的每个最终用户,您必须拥有有效的Office许可证。

1

你有没有考虑过使用RTF? RTF文件只是文本,所以你可以使用普通的.Net文件I/O来读取文件,改变你感兴趣的位,然后再写出来。 RTF可以从97以后的Word版本中读取(也可能是旧版本)。一个缺点是如果您需要对文档进行任何复杂的等变化,如果您只是将文本作为RTF处理,可能会很困难。