C#教程

关注公众号 jb51net

关闭
首页 > 软件编程 > C#教程 > C#复制Word内容

C#高效实现复制Word文档内容

作者:咕白m625

在日常办公或企业级文档处理中,我们经常需要复制 Word 文档的内容,本文将基于 Free Spire.Doc for .NET 免费库,详细介绍如何在 C# 中实现 Word 内容的复制,希望对大家有所帮助

在日常办公或企业级文档处理中,我们经常需要复制 Word 文档的内容—比如合并多个文档的核心章节、提取指定的段落或表格、备份文档中的关键部分等。手动复制不仅效率低下,还容易丢失格式;而通过代码自动化复制,既能保证格式完整,又能批量处理,极大提升工作效率。

本文基于 Free Spire.Doc for .NET 免费库,详细介绍如何在 C# 中实现 Word 内容的复制,涵盖「全文档复制」「指定段落复制」「指定节内容复制」等常见场景。该库无需安装 Microsoft Office,且 API 简洁易用。

安装指令(NuGet 包管理器控制台):Install-Package FreeSpire.Doc

1. 基础场景:复制整个 Word 文档的全部内容

这是最直接的场景,例如将源文档的所有内容(文字、图片、表格、格式等)完整复制到一个新文档或已有文档中。使用 Clone() 方法即可实现深度复制。

using System;
using Spire.Doc;

namespace CopyWholeWordContent
{
    class Program
    {
        static void Main(string[] args)
        {
            try
            {
                // 1. 加载源文档
                Document sourceDoc = new Document();
                sourceDoc.LoadFromFile(@"C:\Users\Administrator\Desktop\源文档.docx");

                // 2. 克隆源文档(创建独立副本)
                Document targetDoc = sourceDoc.Clone();

                // 3. 保存目标文档
                targetDoc.SaveToFile("复制全文档内容.docx", FileFormat.Docx);

                // 释放资源
                sourceDoc.Close();
                targetDoc.Close();

                Console.WriteLine("全文档内容复制完成!");
                // 可选:打开生成的文档查看结果
                System.Diagnostics.Process.Start("复制全文档内容.docx");
            }
            catch (Exception ex)
            {
                Console.WriteLine($"复制失败:{ex.Message}");
            }
        }
    }
}

关键说明

2. 进阶场景1:复制指定段落内容

有时我们只需提取文档中的某几个段落(如摘要、结论),并将其追加到另一个文档末尾。以下代码演示如何从源文档中提取指定索引的段落,完整保留其格式(字体、字号、颜色等)并添加到目标文档的最后一个节。

using System;
using Spire.Doc;
using Spire.Doc.Documents;

namespace CopySpecificParagraphs
{
    class Program
    {
        static void Main(string[] args)
        {
            try
            {
                // 1. 加载源文档
                Document sourceDoc = new Document();
                sourceDoc.LoadFromFile(@"C:\Users\Administrator\Desktop\source.docx");

                // 2. 提取源文档中指定索引的段落(索引从0开始,此处提取第9个段落)
                Paragraph para = sourceDoc.Sections[0].Paragraphs[8];

                // 3. 加载目标文档(已有文档)
                Document targetDoc = new Document();
                targetDoc.LoadFromFile(@"C:\Users\Administrator\Desktop\target.docx");

                // 4. 获取目标文档的最后一个节(将段落添加到该节末尾)
                Section lastSection = targetDoc.LastSection;

                // 5. 克隆并添加指定段落(Clone()创建独立副本)
                lastSection.Paragraphs.Add((Paragraph)para.Clone());

                // 6. 保存目标文档
                targetDoc.SaveToFile("CopyParagraphs.docx", FileFormat.Docx2016);

                // 7. 释放资源
                sourceDoc.Dispose();
                targetDoc.Dispose();

                Console.WriteLine("指定段落复制完成!");
            }
            catch (Exception ex)
            {
                Console.WriteLine($"复制失败:{ex.Message}");
            }
        }
    }
}

关键说明

3. 进阶场景2:复制指定节的全部内容

当需要复制整个节(包括其中的段落、表格、图片等所有元素)到目标文档时,可以通过遍历节的子对象实现精确控制。这种方法比直接复制整个节更灵活,便于按需跳过某些元素。

using System;
using Spire.Doc;
using Spire.Doc.Documents;

namespace CopySpecificSection
{
    class Program
    {
        static void Main(string[] args)
        {
            try
            {
                // 1. 加载源文档
                Document sourceDoc = new Document();
                sourceDoc.LoadFromFile(@"C:\Users\Administrator\Desktop\source.docx");

                // 2. 提取源文档中指定的节(示例:提取第1节,索引0)
                Section sourceSection = sourceDoc.Sections[0];

                // 3. 加载目标文档
                Document targetDoc = new Document();
                targetDoc.LoadFromFile(@"C:\Users\Administrator\Desktop\target.docx");

                // 4. 获取目标文档的最后一个节(将内容添加到此节末尾)
                Section lastSection = targetDoc.LastSection;

                // 5. 遍历源节正文的所有子对象(段落、表格、图片等),克隆后添加到目标节
                foreach (DocumentObject obj in sourceSection.Body.ChildObjects)
                {
                    lastSection.Body.ChildObjects.Add(obj.Clone());
                }

                // 6. 保存文档并释放资源
                targetDoc.SaveToFile("CopySection.docx", FileFormat.Docx2019);
                sourceDoc.Dispose();
                targetDoc.Dispose();

                Console.WriteLine("指定节内容复制完成!");
            }
            catch (Exception ex)
            {
                Console.WriteLine($"复制失败:{ex.Message}");
            }
        }
    }
}

代码详解

总结与注意事项

通过以上三种方法,你可以灵活应对各种 Word 文档内容复制的需求,无需手动操作,大幅提升处理效率。操作时需注意以下几点:

到此这篇关于C#高效实现复制Word文档内容的文章就介绍到这了,更多相关C#复制Word内容内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文