C# OpenXmlPowerTools DocumentBuilder在单独页面上合并文档

C# OpenXmlPowerTools DocumentBuilder在单独页面上合并文档,c#,asp.net-mvc-4,C#,Asp.net Mvc 4,我试图合并4个单词的文档,并强制每个文档的内容从新页面开始。但它不是将每个文档中的文本附加到单独的页面,而是将所有文档中的文本添加到一个页面。 像这样: 我怎样才能修好它? 代码如下: public class HomeController : Controller { public void DocMerger() { var source1 = Server.MapPath(Url.Content("~/App_Data/1.docx")); //sour

我试图合并4个单词的文档,并强制每个文档的内容从新页面开始。但它不是将每个文档中的文本附加到单独的页面,而是将所有文档中的文本添加到一个页面。 像这样:

我怎样才能修好它? 代码如下:

 public class HomeController : Controller
{ 
    public void DocMerger()
    {
        var source1 = Server.MapPath(Url.Content("~/App_Data/1.docx")); //source 1
        var source2 = Server.MapPath(Url.Content("~/App_Data/2.docx")); //source 2
        var source3 = Server.MapPath(Url.Content("~/App_Data/3.docx")); //source 3
        var source4 = Server.MapPath(Url.Content("~/App_Data/4.docx")); //source 4
        var merged =  Server.MapPath(Url.Content("~/App_Data/merged.docx")); //merged

        var f1 = new FileInfo(source1);
        var f2 = new FileInfo(source2);
        var f3 = new FileInfo(source3);
        var f4 = new FileInfo(source4);

        //Use DocumentBuilder and merge the files
        var sources = new List<OpenXmlPowerTools.Source>()
        {
            new Source(new WmlDocument(f1.FullName),false),
              new Source(new WmlDocument(f2.FullName),false),
                new Source(new WmlDocument(f3.FullName),false),
                  new Source(new WmlDocument(f4.FullName),false)
        };
        var mergedDocument = DocumentBuilder.BuildDocument(sources);
        mergedDocument.SaveAs(merged); //save merged data as merged.docx

    }

}
公共类HomeController:控制器
{ 
公共部门合并()
{
var source1=Server.MapPath(Url.Content(“~/App\u Data/1.docx”);//源1
var source2=Server.MapPath(Url.Content(“~/App\u Data/2.docx”);//源2
var source3=Server.MapPath(Url.Content(“~/App\u Data/3.docx”);//源3
var source4=Server.MapPath(Url.Content(“~/App\u Data/4.docx”);//源4
var merged=Server.MapPath(Url.Content(“~/App\u Data/merged.docx”);//merged
var f1=新文件信息(source1);
var f2=新文件信息(source2);
var f3=新文件信息(source3);
var f4=新文件信息(source4);
//使用DocumentBuilder并合并文件
var sources=新列表()
{
新源(新WmlDocument(f1.全名),false),
新来源(新WmlDocument(f2.全名),假),
新来源(新WmlDocument(f3.全名),假),
新源(新WmlDocument(f4.FullName),false)
};
var mergedDocument=DocumentBuilder.BuildDocument(源);
mergedDocument.SaveAs(合并);//将合并的数据另存为merged.docx
}
}

这是用于“源”的构造函数:

然后,只需将keepSections值上的false更改为true:

var sources = new List<OpenXmlPowerTools.Source>()
    {
        new Source(new WmlDocument(f1.FullName),true),
        new Source(new WmlDocument(f2.FullName),true),
        new Source(new WmlDocument(f3.FullName),true),
        new Source(new WmlDocument(f4.FullName),true)
    };
var sources=新列表()
{
新来源(新WmlDocument(f1.全名),true),
新来源(新WmlDocument(f2.全名),true),
新来源(新WmlDocument(f3.全名),true),
新源(新WmlDocument(f4.FullName),true)
};

您并没有真正使用
openxmlsdk
但是,
OpenXmlPowerTools
是另一个库,您应该编辑标记。我可以使用DocX库修复它。这是四个文档之一的示例:
使用(DocX document=DocX.Load(source1)){Novacode.paragration p2=document.insertparagration();p2.InsertPageBreakAfterSelf();document.Save();}
仅当合并的文档具有节时,此操作才有效。“简单”文档只是按原样合并。
var sources = new List<OpenXmlPowerTools.Source>()
    {
        new Source(new WmlDocument(f1.FullName),true),
        new Source(new WmlDocument(f2.FullName),true),
        new Source(new WmlDocument(f3.FullName),true),
        new Source(new WmlDocument(f4.FullName),true)
    };