我计划在网络服务器上动态生成一个 Word 文档。有没有在c#中这样做的好方法?我知道我可以编写 Word 来执行此操作,但我更喜欢另一种选择。
8 回答
我过去曾在一家真正想要生成 Word 文档的公司工作,最后他们对具有“.doc”扩展名的 RTF 文档非常满意。Word 可以毫无问题地识别和打开它们。
RTF 文档是使用iText.net(免费的 .net 库)生成的,API 非常易于使用,性能非常好,您不需要机器上的文字,还可以扩展到生成 PDF、HTML 和未来的文本文档只需很少的努力。四年后,我创建的解决方案仍然存在,所以这是对 iText.net 有利的一点证明。
看起来iText 官方页面表明iText Sharp是目前最好的 .Net 选择,所以这是另一种选择
您最好生成一个 rtf 文件,该文件将知道如何打开。
如果要生成 Office 2007 文档,请查看 Open XML File Formats,它们是简单的压缩 XML 文件,请查看以下链接:
编辑:检查这个项目,可以作为一个很好的起点:
看起来非常简单和可定制,看看这个代码片段:
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);
Word 会很高兴地打开带有 .doc 扩展名的 HTML。如果包含内部样式表,则可以将其完全格式化。之前有一篇关于这个问题的帖子:
如果没有 Word 本身,创建旧的 .DOC 文件(Word 2007 之前的版本)几乎是不可能的。格式太复杂了。微软已经发布了格式说明,但这足以让一个成年程序员落泪。这也是有原因的(历史上的),但这并不能让事情变得更好。
新的 .DOCX 会更容易,虽然还是有点麻烦。但是,根据您所针对的 Word 版本,还有一些其他选项。
一方面,有经典的 .RTF。该格式仍然非常复杂,但有据可查,并且在许多应用程序和平台上都有强大的支持。您可能会在模板文件中使用一些字符串替换来使事情变得更容易(它是非二进制的)。
然后是“旧的”Word XML 文件。我认为他们从 Word XP 开始工作。有点像 .DOCX 的前身。我用过,还不错。而且文档还不错。
最后,我会选择的简单方法是制作一个简单的 HTML。从 2000 版开始,Word 可以很好地加载 HTML 文件。以最简单的方式,只需将 HTML 文件的扩展名更改为 .DOC 即可。您还可以添加一些特定于单词的标签和注释,使其在 Word 中看起来更好。使用 Word 的另存为...HTML 选项来查看它们是什么。
在 Office 2007 中,Microsoft 引入了一种称为Microsoft Open Office XML 格式(.docx) 的新文件格式。此格式与旧版本的 Microsoft Word 不兼容。由于这是 XML,您无需安装 Word 即可创建或阅读。
这是基于自定义模板生成文档的组件。文档是从共享点列表生成的......因此数据会从列表项中动态提取到文档中:http: //store.sharemuch.com/products/generate-word-documents-from-sharepoint-list
希望有帮助,
雅罗斯拉夫·彭萨斯基博客:www.sharemuch.com