在 ASP.NET MVC 解决方案中,我如何 assemble 将多个 Word 模板组件合并到单个 Microsoft Word 文档中?
In an ASP.NET MVC solution, how can I assemble multiple Word templates components into a single Microsoft word document?
我们的系统在整个文本(如报告或文章)中插入组件——动态生成的 html 块。
组件是 MVC 局部视图,在循环遍历文本段落时根据需要插入,如下所示:
@foreach (Paragraph p in Model.TextComponent.InputText.Paragraphs){
@if ((Model.HeaderComponent != null))
{
@Html.Partial("_HeaderComponent", Model.HeaderComponent)
}
@if ((Model.NDAComponent != null))
{
@Html.Partial("_NDAComponent", Model.NDAComponent)
}
}
我们想对 assemble docx 文件使用相同的逻辑,但未能找到这方面的任何示例。我们一直在使用 TemplateEngine.dotx,这对模板的格式化非常有用,但我们还没有想出如何像使用 MVC 分部视图那样将模板拆分为分部视图。
您可以在服务器端使用 Open XML SDK assemble 打开 XML 文档,请参阅 Welcome to the Open XML SDK 2.5 for Office 了解更多信息。
您可以使用 openXML sdk。
以下代码可以帮助将一个word文档的内容复制到另一个文档中。
using (WordprocessingDocument myDoc = WordprocessingDocument.Open(OutputFile, true))
{
MainDocumentPart mainPart = myDoc.MainDocumentPart;
AlternativeFormatImportPart chunk =
mainPart.AddAlternativeFormatImportPart(
AlternativeFormatImportPartType.WordprocessingML, altChunkId);
using (FileStream fileStream = File.Open(file, FileMode.Open))
chunk.FeedData(fileStream);
AltChunk altChunk = new AltChunk();
altChunk.Id = altChunkId;
mainPart.Document
.Body
.InsertAfter(altChunk, mainPart.Document.Body
.Elements<Paragraph>().Last());
}
我们的系统在整个文本(如报告或文章)中插入组件——动态生成的 html 块。
组件是 MVC 局部视图,在循环遍历文本段落时根据需要插入,如下所示:
@foreach (Paragraph p in Model.TextComponent.InputText.Paragraphs){
@if ((Model.HeaderComponent != null))
{
@Html.Partial("_HeaderComponent", Model.HeaderComponent)
}
@if ((Model.NDAComponent != null))
{
@Html.Partial("_NDAComponent", Model.NDAComponent)
}
}
我们想对 assemble docx 文件使用相同的逻辑,但未能找到这方面的任何示例。我们一直在使用 TemplateEngine.dotx,这对模板的格式化非常有用,但我们还没有想出如何像使用 MVC 分部视图那样将模板拆分为分部视图。
您可以在服务器端使用 Open XML SDK assemble 打开 XML 文档,请参阅 Welcome to the Open XML SDK 2.5 for Office 了解更多信息。
您可以使用 openXML sdk。
以下代码可以帮助将一个word文档的内容复制到另一个文档中。
using (WordprocessingDocument myDoc = WordprocessingDocument.Open(OutputFile, true))
{
MainDocumentPart mainPart = myDoc.MainDocumentPart;
AlternativeFormatImportPart chunk =
mainPart.AddAlternativeFormatImportPart(
AlternativeFormatImportPartType.WordprocessingML, altChunkId);
using (FileStream fileStream = File.Open(file, FileMode.Open))
chunk.FeedData(fileStream);
AltChunk altChunk = new AltChunk();
altChunk.Id = altChunkId;
mainPart.Document
.Body
.InsertAfter(altChunk, mainPart.Document.Body
.Elements<Paragraph>().Last());
}