//加载文档1和文档2
Document doc1 = new Document();
doc1.LoadFromFile("Sales Report.docx",FileFormat.Docx);
Document doc2 = Document();
doc2.LoadFromFile(Stories.docx获取文档2的第一个section
Section sec = doc2.Sections[0];
克隆该section并把它添加到文档1
doc1.Sections.Add(sec.Clone());
doc1.SaveToFile(Mergesection.docx",FileFormat.Docx);
加载文档1
Document document = Document();
document.LoadFromFile(将文档2的所有内容插入到文档1
document.InsertTextFromFile(将结果另存为到另一个单独的文档
document.SaveToFile(MergeFiles.docx效果图:

?
第二部分:拆分Word文档
根据section break拆分Word文档
加载源文档);
定义一个新的文档对象
Document newWord;
遍历源文档的所有section,克隆每个section并将其添加至一个新的word文档,然后保存文档
for (int i = 0; i < document.Sections.Count; i++)
{
newWord = Document();
newWord.Sections.Add(document.Sections[i].Clone());
newWord.SaveToFile(String.Format(@"testoutput_{0}.docx效果图:
?
根据page break拆分Word文档
如下文档含有两个page break分别在第一页和第二页的末尾:

?
加载源文档
Document original = Document();
original.LoadFromFile(New Zealand.docx);
创建一个新的文档并给它添加一个section
Document newWord = Document();
Section section = newWord.AddSection();
int index = ;
遍历源文档的所有section,检测page break并根据page break拆分文档
foreach (Section sec in original.Sections)
{
foreach (DocumentObject obj sec.Body.ChildObjects)
{
if (obj is Paragraph)
{
Paragraph para = obj as Paragraph;
section.Body.ChildObjects.Add(para.Clone());
foreach (DocumentObject parobj para.ChildObjects)
{
if (parobj is Break && (parobj as Break).BreakType == BreakType.PageBreak)
{
int i = para.ChildObjects.IndexOf(parobj);
int j = i; j < para.ChildObjects.Count; j++)
{
section.Body.LastParagraph.ChildObjects.RemoveAt(i);
}
newWord.SaveToFile(String.Format(result/out-{0}.docx;
newWord = Document();
section = newWord.AddSection();
section.Body.ChildObjects.Add(para.Clone());
while (i >= )
{
section.Paragraphs[].ChildObjects.RemoveAt(i);
i--;
}
if (section.Paragraphs[0].ChildObjects.Count == )
{
section.Body.ChildObjects.RemoveAt();
}
}
}
}
Table)
{
section.Body.ChildObjects.Add(obj.Clone());
}
}
}
newWord.SaveToFile(String.Format(效果图:

?
?
完整代码:
合并
using Spire.Doc;
namespace Merge_Word_Document
{
class Program
{
static void Main(string[] args)
{
合并一个Word文档的某一个section到另一个文档
/*Document doc1 = new Document();
doc1.LoadFromFile("Sales Report.docx",FileFormat.Docx);
Document doc2 = new Document();
doc2.LoadFromFile("Stories.docx",FileFormat.Docx);
Section sec = doc2.Sections[0];
doc1.Sections.Add(sec.Clone());
doc1.SaveToFile("Mergesection.docx",FileFormat.Docx);*/
合并两个完整的Word文档到一个单独的文档
Document document = Document();
document.LoadFromFile(拆分
System;
Spire.Doc;
Spire.Doc.Documents;
Split_Word_Document
{
根据section拆分
Document document = new Document();
document.LoadFromFile("Stories.doc");
Document newWord;
for (int i = 0; i < document.Sections.Count; i++)
{
newWord = new Document();
newWord.Sections.Add(document.Sections[i].Clone());
newWord.SaveToFile(String.Format(@"testout_{0}.docx",i));
}根据page break拆分
Document original = Document();
original.LoadFromFile();
Document newWord = Document();
Section section = newWord.AddSection();
;
original.Sections)
{
sec.Body.ChildObjects)
{
Paragraph)
{
Paragraph para = obj Paragraph;
section.Body.ChildObjects.Add(para.Clone());
para.ChildObjects)
{
BreakType.PageBreak)
{
para.ChildObjects.IndexOf(parobj);
)
{
section.Body.LastParagraph.ChildObjects.RemoveAt(i);
}
newWord.SaveToFile(String.Format(;
newWord = Document();
section = newWord.AddSection();
section.Body.ChildObjects.Add(para.Clone());
)
{
section.Paragraphs[].ChildObjects.RemoveAt(i);
i--;
}
)
{
section.Body.ChildObjects.RemoveAt();
}
}
}
}
Table)
{
section.Body.ChildObjects.Add(obj.Clone());
}
}
}
newWord.SaveToFile(String.Format(注意:这里我使用了一个免费的word API(http://freeword.codeplex.com)。
?
?
(编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!