我有一个请求,根据提供给我的模板动态创建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文档。
答案 0 :(得分: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();
答案 1 :(得分:1)
我目前正在研究这些方面的内容,我一直在使用Open XML SDK和OpenXmlPowerTools采取的方法是将实际的模板文件打开并将文本放入各种占位符在模板文档中。我一直在使用内容控件作为位置标记。
用于打开文档的SDK工具在比较文档和查看文档构造方面具有无法估量的价值。但是,从工具生成的代码我已经大量重构并删除了根本没有使用的部分。
我不能谈论doc文件但是对于docx文件它们没有加密它们只是包含xml文件的zip文件
Eric White's blog包含大量非常有用的示例和代码示例