1

我请求根据提供给我的模板即时创建 Word 文档。我做了一些研究,一切似乎都指向 OpenXML。我已经调查过了,但是创建的 cs 文件超过 15k 行并且正在破坏我的 VS 2010(导致它在我每次进行更改时都没有响应)。

我一直在看这个关于 Open XML 的教程系列 http://openxmldeveloper.org/blog/b/openxmldeveloper/archive/2011/10/13/getting-started-with-open-xml-development.aspx

过去我用文本文件和正则表达式做过一些事情,但是由于 Word 加密了所有内容,这不起作用。是否有任何其他相当轻量级的选项可用于从模板创建 word 文档。

4

2 回答 2

3

//嗨,这很简单。

            //First, you should copy your Template file into another location.
            string SourcePath = "C:\\MyTemplate.dotx";
            string DestPath = "C:\\MyDocument.docx";
            System.IO.File.Copy(SourcePath, DestPath);

            //After copying the file, you can open a WordprocessingDocument using your Destination Path.

            WordprocessingDocument Mydoc = WordprocessingDocument.Open(DestPath, true);

            //After openning your document, you can change type of your document after adding additional parts into your document.
            mydoc.ChangeDocumentType(WordprocessingDocumentType.Document);

            //If you wish, you can edit your document 
            AttachedTemplate attachedTemplate1 = new AttachedTemplate() { Id = "MyRelationID" };

            MainDocumentPart mainPart = mydoc.MainDocumentPart;
            MySettingsPart = mainPart.DocumentSettingsPart;

            MySettingsPart.Settings.Append(attachedTemplate1);

            MySettingsPart.AddExternalRelationship("http://schemas.openxmlformats.org/officeDocument/2006/relationships/attachedTemplate", new Uri(CopyPath, UriKind.Absolute), "MyRelationID");



            //Finally you can save your document.
            mainPart.Document.Save();
于 2013-03-29T14:56:28.323 回答
2

我目前正在从事这些方面的工作,并且一直在使用Open XML SDKOpenXmlPowerTools所采取的方法是将实际模板文件打开并将文本放入模板文档中的各种占位符中。我一直在使用内容控件作为位置标记。

用于打开文档的 SDK 工具在比较文档并查看其构造方式方面非常宝贵。但是,从该工具生成的代码我一直在大量重构并删除根本不使用的部分。

我不能谈论 doc 文件,但是对于 docx 文件,它们没有加密,它们只是包含 xml 文件的 zip 文件

Eric White 的博客有大量非常有用的示例和代码示例

于 2012-08-23T21:12:25.483 回答