C# 复制一个Word文档的部分或所有内容到另外一个Word文档

C# 复制一个Word文档的部分或所有内容到另外一个Word文档html

我最近喜欢折腾Office软件相关的东西,想把不少Office软件提供的功能用.NET来实现,若是后期能把它用来开发一点我本身的小应用程序那就更好了。spa

扯远了,回到正题。复制文档内容这个功能太常见啦,在微软Word中实现这个功能很简单,只须要复制和粘贴就好了。这篇文章的主要目的是记录如何用C#来实现复制一个Word文档的部分或所有内容到另外一个word文档,废话很少说,下面开始。3d

第一部分:复制部份内容:component

在个人这个示例中,复制部份内容指的是复制一个word文档的部分段落(包括格式、图片和超连接等)到另外一个word文档。orm

原文档截图:htm

                 

 

步骤参考:对象

第一步:新建一个word文档对象doc1并加载须要复制的word文档。blog

Document doc1 = new Document();
doc1.LoadFromFile("sample.docx");

 

第二步:新建一个word文档对象doc2。图片

Document doc2 = new Document();

 

第三步:获取被复制文档doc1的第一个section以及第1、二个段落(图片和标题)。开发

Section s = doc1.Sections[0];
Paragraph p1 = s.Paragraphs[0];
Paragraph p2 = s.Paragraphs[1];

 

第四步:给doc2添加一个section,并将doc1的第一二段的内容和格式等复制到doc2中。

Section s2 = doc2.AddSection();
Paragraph NewPara1 = (Paragraph)p1.Clone();
s2.Paragraphs.Add(NewPara1);
Paragraph NewPara2 = (Paragraph)p2.Clone();
s2.Paragraphs.Add(NewPara2);

 

第五步:保存并从新打开文档。

doc2.SaveToFile("copy.docx", FileFormat.Docx2010);
System.Diagnostics.Process.Start("copy.docx");

 

目标文档效果图:

 

 

第二部分:复制所有内容

复制所有内容指的是将除header和footer之外的其余全部内容复制到另外一个文档。

步骤参考:

第一步:新建两个word document对象,并加载待复制的源word文档和目标word文档。

Document sourceDoc = new Document("sample.docx");
Document destinationDoc = new Document("target.docx");

 

第二步:遍历源word文档中的全部section并把它们的内容复制到目标word文档。

foreach (Section sec in sourceDoc.Sections)
{
    foreach (DocumentObject obj in sec.Body.ChildObjects)
    {
        destinationDoc.Sections[0].Body.ChildObjects.Add(obj.Clone());
    }
}

 

第三步:保存并重启目标word文档。

destinationDoc.SaveToFile("target.docx");
System.Diagnostics.Process.Start("target.docx");

 

在word文档之间单独复制header和footer也能够实现的,若有须要能够在下面留言。

原文档与效果图:

 

效果图:

 

 

结语:

文章写的比较简单,这里我仍是使用了E-iceblue公司的免费Word控件,缘由是它简单好用,并且我也使用的比较熟练了。接下来我还会研究它的其它功能,并用C#实现Office软件的其它功能。

相关文章
相关标签/搜索