C# 复制一个Word文档的部分或全部内容到另一个Word文档
C# 复制一个Word文档的部分或全部内容到另一个Word文档
我最近喜欢折腾Office软件相关的东西,想把很多Office软件提供的功能用.NET来实现,如果后期能把它用来开发一点我自己的小应用程序那就更好了。
扯远了,回到正题。复制文档内容这个功能太常见啦,在微软Word中实现这个功能很简单,只需要复制和粘贴就行了。这篇文章的主要目的是记录如何用C#来实现复制一个Word文档的部分或全部内容到另一个word文档,废话不多说,下面开始。
第一部分:复制部分内容:
在我的这个示例中,复制部分内容指的是复制一个word文档的部分段落(包括格式、图片和超链接等)到另一个word文档。
原文档截图:
步骤参考:
第一步:新建一个word文档对象doc1并加载需要复制的word文档。
1 2 | Document doc1 = new Document(); doc1.LoadFromFile( "sample.docx" ); |
第二步:新建一个word文档对象doc2。
1 | Document doc2 = new Document(); |
第三步:获取被复制文档doc1的第一个section以及第一、二个段落(图片和标题)。
1 2 3 | Section s = doc1.Sections[0]; Paragraph p1 = s.Paragraphs[0]; Paragraph p2 = s.Paragraphs[1]; |
第四步:给doc2添加一个section,并将doc1的第一二段的内容和格式等复制到doc2中。
1 2 3 4 5 | Section s2 = doc2.AddSection(); Paragraph NewPara1 = (Paragraph)p1.Clone(); s2.Paragraphs.Add(NewPara1); Paragraph NewPara2 = (Paragraph)p2.Clone(); s2.Paragraphs.Add(NewPara2); |
第五步:保存并重新打开文档。
1 2 | doc2.SaveToFile( "copy.docx" , FileFormat.Docx2010); System.Diagnostics.Process.Start( "copy.docx" ); |
目标文档效果图:
第二部分:复制全部内容
复制全部内容指的是将除header和footer以外的其他所有内容复制到另一个文档。
步骤参考:
第一步:新建两个word document对象,并加载待复制的源word文档和目标word文档。
1 2 | Document sourceDoc = new Document( "sample.docx" ); Document destinationDoc = new Document( "target.docx" ); |
第二步:遍历源word文档中的所有section并把它们的内容复制到目标word文档。
1 2 3 4 5 6 7 | foreach (Section sec in sourceDoc.Sections) { foreach (DocumentObject obj in sec.Body.ChildObjects) { destinationDoc.Sections[0].Body.ChildObjects.Add(obj.Clone()); } } |
第三步:保存并重启目标word文档。
1 2 | destinationDoc.SaveToFile( "target.docx" ); System.Diagnostics.Process.Start( "target.docx" ); |
在word文档之间单独复制header和footer也可以实现的,如有需要可以在下面留言。
原文档与效果图:
效果图:
结语:
文章写的比较简单,这里我还是使用了E-iceblue公司的免费Word控件,原因是它简单好用,而且我也使用的比较熟练了。接下来我还会研究它的其它功能,并用C#实现Office软件的其它功能。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· 上周热点回顾(2.17-2.23)
· 如何使用 Uni-app 实现视频聊天(源码,支持安卓、iOS)
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
2015-01-19 改用C++生成自动化数据表