zoukankan      html  css  js  c++  java
  • C# 复制一个Word文档的部分或全部内容到另一个Word文档

    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软件的其它功能。

  • 相关阅读:
    leetcode-242-Valid Anagram
    leetcode-232-Implement Queue using Stacks
    机器学习(3)——梯度下降法
    Codeforces Round #305 (Div. 2)D. Mike and Feet(单调栈)
    Codeforces Round #304 (Div. 2)(CF546D) Soldier and Number Game(线性筛)
    Codeforces Round #304 (Div. 2)(CF546E) Soldier and Traveling(最大流)
    机器学习(2)——线性回归法
    Codeforces Round #303 (Div. 2)(CF545) E Paths and Trees(最短路+贪心)
    机器学习(1)——K近邻算法
    简易解说拉格朗日对偶(Lagrange duality)(转载)
  • 原文地址:https://www.cnblogs.com/Yesi/p/5142418.html
Copyright © 2011-2022 走看看