有没有一种方法可以在没有安装Word的计算机上动态生成Word文档?

18

我计划在web服务器上动态生成Word文档。有没有在C#中实现这个目标的好方法?我知道可以通过编写脚本来实现,不过我希望能有其他选择。

我打算使用C#在web服务器上动态生成Word文档。除了编写脚本之外,是否还有其他好的方式可以实现此目标呢?请注意保留HTML标记。
8个回答

19

我曾经在一家公司工作,他们非常需要生成Word文档,最终他们对扩展名为“.doc”的RTF文档也很满意。Word可以轻松识别和打开它们。

这些RTF文档是用免费的.NET库iText.net生成的。该API易于使用,性能出色,机器上不需要安装Word,而且你还可以以后轻松地扩展到生成PDF、HTML和文本文档。四年过去了,我创建的解决方案仍然在使用中,这可以证明iText.net的实用性。

看起来官方的iText页面建议使用iText Sharp是当前最好的.NET选择,所以这是另一个选择。


我发现这个项目的文档不存在。 - benpage

9

你最好生成一个rtf文件,Word会知道如何打开。


是的,你不再那么依赖于不同的单词版本。 - Toon Krijthe
4
我之前点了个赞,因为我认为你说的是“生成rtf文件会更好,因为全世界都知道如何打开它。” - Karl

7
如果想生成Office 2007文档,请检查Open XML文件格式,它们是简单的压缩XML文件,请查看以下链接:
- Open XML文件格式:是什么,我该如何入门? - 介绍Office(2007)Open XML文件格式 编辑:请检查此项目,可以作为一个很好的起点:
- DocumentMaker 看起来非常简单和可定制,看一下这段代码:
Paragraph p = new Paragraph();
p.Runs.Add(new Run("Text can have multiple format styles, they can be "));
p.Runs.Add(new Run("bold and italic", 
        TextFormats.Format.Bold | TextFormats.Format.Italic));
doc.Paragraphs.Add(p);

我推荐这种方法,它有点复杂,但是免费且效果很好。我也使用 XML 来创建 Excel 文档。 - Mitchel Sellers
1
我无法想象你为什么会推荐这个。除非你知道所有客户端都安装了Word2007或导入程序,否则它是无用的。该格式是一个5000页的规范。 - Stephan Eggermont

6
Word可以很容易地打开扩展名为.doc的HTML文件。如果您包含内部样式表,您可以使其完全格式化。之前有关于此主题的帖子:在C#中导出Word文档

6
创建旧的.DOC文件(Word 2007之前)几乎没有不使用Word本身的可能性。这种格式太过复杂。微软已经发布了格式说明,但足以让成年程序员落泪。这也有历史原因,但这并不能让事情变得更好。
新的.DOCX会更容易一些,尽管仍然有很多麻烦。但是,取决于您所针对的Word版本,还有其他选项。
首先是经典的.RTF。该格式仍然相当复杂,但文档记录良好,并且在许多应用程序和平台上具有强大的支持。您可以使用一些字符串替换到模板文件中,以使事情变得更容易(它是非二进制的)。
然后是“旧”的Word XML文件。我认为它们从Word XP开始就可以工作了。有点像.DOCX的前身。我用过它们,效果不错。文档记录也相当不错。
最后,我会选择简单的HTML方式。Word可以很好地加载HTML文件,从2000版本开始。最简单的方法是将HTML文件的扩展名更改为.DOC,然后您就拥有了它。您还可以添加一些特定于Word的标记和注释,以使其在Word中看起来更好。使用Word的“另存为...HTML”选项即可查看它们。

使用docx并不会更容易。从二进制到xml的转换是一种保留复杂性的操作。 - Stephan Eggermont

1

有第三方库可以完成这项工作。

例如,快速搜索谷歌会出现这个

我没有尝试过任何库,所以无法给您具体的建议,抱歉!

让我们知道您的进展如何...


1
在Office 2007中,微软推出了一种新的文件格式,称为Microsoft Open Office XML Format(.docx)。这种格式与旧版本的Microsoft Word不兼容。由于这是XML格式,因此您可以创建或阅读而无需安装Word。

你没有看到吧?一个规范有 5K 页,存在几千个缺陷。 - Stephan Eggermont

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接