C# 从模板生成Word文档
我请求根据提供给我的模板动态创建word文档。我做了一些研究,一切似乎都指向OpenXML。我已经研究过了,但是创建的cs文件超过了15k行,并且正在破坏我的VS2010(导致它在我每次更改时都没有响应) 我一直在看这个关于开放XML的教程系列C# 从模板生成Word文档,c#,ms-word,openxml,C#,Ms Word,Openxml,我请求根据提供给我的模板动态创建word文档。我做了一些研究,一切似乎都指向OpenXML。我已经研究过了,但是创建的cs文件超过了15k行,并且正在破坏我的VS2010(导致它在我每次更改时都没有响应) 我一直在看这个关于开放XML的教程系列 我过去用文本文件和正则表达式做过一些事情,但由于Word对所有内容都进行了加密,所以这不起作用。是否有其他一些选项可以相当轻量级地从模板创建word文档。我目前正沿着这些思路进行工作,我一直在使用,所采取的方法是将实际的模板文件打开,并将文本放入模板中
我过去用文本文件和正则表达式做过一些事情,但由于Word对所有内容都进行了加密,所以这不起作用。是否有其他一些选项可以相当轻量级地从模板创建word文档。我目前正沿着这些思路进行工作,我一直在使用,所采取的方法是将实际的模板文件打开,并将文本放入模板中的各个位置文件我一直使用内容控件作为位置标记 打开文档的SDK工具在能够比较文档并查看其构造方式方面非常宝贵。然而,我一直在对工具生成的代码进行大量重构,并删除了根本没有使用的部分 我不能谈论doc文件,但对于docx文件,它们不是加密的,它们只是包含xml文件的zip文件
有大量非常有用的示例和代码示例我目前正沿着这些思路进行工作,我一直在利用,所采取的方法是将实际的模板文件打开,并将文本放入模板文档中的各个位置。我一直使用内容控件作为位置标记 打开文档的SDK工具在能够比较文档并查看其构造方式方面非常宝贵。然而,我一直在对工具生成的代码进行大量重构,并删除了根本没有使用的部分 我不能谈论doc文件,但对于docx文件,它们不是加密的,它们只是包含xml文件的zip文件
有大量非常有用的示例和代码示例//您好,非常简单
//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();
//嗨,很简单
//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();
你必须取出什么零件?这个工具创建的代码数量太多了,所以我正在做的主要工作是将模板文件上传到系统并保存为字节数组。该模板文件具有用作放置标记的内容控件。当我处理它时,我使用模板字节数组,使用OpenXMLSDK打开它,然后找到所有内容控件,并根据Id和保存在数据库中的值填充它们。我充分利用了这个模板,并主要使用SDK来替换文本。我主要使用SDK工具来研究如何在代码中构建它,然后我在代码中编写它。您需要去掉哪些部分?这个工具创建的代码数量太多了,所以我正在做的主要工作是将模板文件上传到系统并保存为字节数组。该模板文件具有用作放置标记的内容控件。当我处理它时,我使用模板字节数组,使用OpenXMLSDK打开它,然后找到所有内容控件,并根据Id和保存在数据库中的值填充它们。我充分利用了这个模板,并主要使用SDK来替换文本。我主要使用SDK工具来研究如何在代码中构建它,然后在代码中编写它。