C# 復制一個Word文檔的部分或全部內容到另一個Word文檔
我最近喜歡折騰Office軟件相關的東西,想把很多Office軟件提供的功能用.NET來實現,如果后期能把它用來開發一點我自己的小應用程序那就更好了。
扯遠了,回到正題。復制文檔內容這個功能太常見啦,在微軟Word中實現這個功能很簡單,只需要復制和粘貼就行了。這篇文章的主要目的是記錄如何用C#來實現復制一個Word文檔的部分或全部內容到另一個word文檔,廢話不多說,下面開始。
第一部分:復制部分內容:
在我的這個示例中,復制部分內容指的是復制一個word文檔的部分段落(包括格式、圖片和超鏈接等)到另一個word文檔。
原文檔截圖:
步驟參考:
第一步:新建一個word文檔對象doc1並加載需要復制的word文檔。
Document doc1 = new Document();
doc1.LoadFromFile("sample.docx");
第二步:新建一個word文檔對象doc2。
Document doc2 = new Document();
第三步:獲取被復制文檔doc1的第一個section以及第一、二個段落(圖片和標題)。
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軟件的其它功能。
