https://www.cnblogs.com/zhenzaizai/p/7782748.html

前段时间项目上遇到这么一个需求,需要将多个OCR识别的word文档合并成一个,于是就在网上找了找,自己修改了一下。在这里跟大家分享一下,希望有用的到的。

  要做多word文档合并,首先要导入Microsoft.Office.Interop.Word这个dll。我觉得很多人会在这个问题上纠结很久,因为找不到这个dll,当然我也这里找了很久才找到,最终我的解决办法是这样的。如果在VS的引用下的COM组件中找不到这个dll,那么,你就在你的电脑上查找这个文件,如果找到了,你可以直接把它复制到你项目中,然后用浏览的方式直接找到这个dll引用就可以了。另外网上还有人说添加Microsoft Office 11.0 Object Library这个引用,看你具体需要吧,如果用得着,那就添加,用不着就没必要。如果你电脑上查找不到Microsoft.Office.Interop.Word.dll,那么可能是你的office安装的有问题,就往这方面解决。好了,引用了这个dll后就可以写代码了。

  这里网上有一个封装好的类,稍微修改了一下,还不错,所以就直接拿来给大家参考。其实我觉得开发没必要什么都亲力亲为,我们程序员的工作任务是解决实际的问题,而并不是写代码。

 public class WordClass{Microsoft.Office.Interop.Word.Application objApp = null;Document objDocLast = null;Document objDocBeforeLast = null;public WordClass(){objApp = new Application();}#region 打开文件public void Open(string tempDoc){object objTempDoc = tempDoc;object objMissing = System.Reflection.Missing.Value;objDocLast = objApp.Documents.Open(ref objTempDoc, //FileName ref objMissing, //ConfirmVersions ref objMissing, //ReadOnly ref objMissing, //AddToRecentFiles ref objMissing, //PasswordDocument ref objMissing, //PasswordTemplate ref objMissing, //Revert ref objMissing, //WritePasswordDocument ref objMissing, //WritePasswordTemplate ref objMissing, //Format ref objMissing, //Enconding ref objMissing, //Visible ref objMissing, //OpenAndRepair ref objMissing, //DocumentDirection ref objMissing, //NoEncodingDialog ref objMissing //XMLTransform );objDocLast.Activate();}#endregion#region 保存文件到输出模板public void SaveAs(string outDoc){object objMissing = System.Reflection.Missing.Value;object objOutDoc = outDoc;objDocLast.SaveAs(ref objOutDoc, //FileName ref objMissing, //FileFormat ref objMissing, //LockComments ref objMissing, //PassWord ref objMissing, //AddToRecentFiles ref objMissing, //WritePassword ref objMissing, //ReadOnlyRecommended ref objMissing, //EmbedTrueTypeFonts ref objMissing, //SaveNativePictureFormat ref objMissing, //SaveFormsData ref objMissing, //SaveAsAOCELetter, ref objMissing, //Encoding ref objMissing, //InsertLineBreaks ref objMissing, //AllowSubstitutions ref objMissing, //LineEnding ref objMissing //AddBiDiMarks );}#endregion#region 循环合并多个文件(复制合并重复的文件)/// <summary> /// 循环合并多个文件(复制合并重复的文件) /// </summary> /// <param name="tempDoc">模板文件</param> /// <param name="arrCopies">需要合并的文件</param> /// <param name="outDoc">合并后的输出文件</param> public void CopyMerge(string tempDoc, string[] arrCopies, string outDoc){object objMissing = Missing.Value;object objFalse = false;object objTarget = WdMergeTarget.wdMergeTargetSelected;object objUseFormatFrom = WdUseFormattingFrom.wdFormattingFromSelected;try{//打开模板文件 Open(tempDoc);foreach (string strCopy in arrCopies){objDocLast.Merge(strCopy, //FileName ref objTarget, //MergeTarget ref objMissing, //DetectFormatChanges ref objUseFormatFrom, //UseFormattingFrom ref objMissing //AddToRecentFiles );objDocBeforeLast = objDocLast;objDocLast = objApp.ActiveDocument;if (objDocBeforeLast != null){objDocBeforeLast.Close(ref objFalse, //SaveChanges ref objMissing, //OriginalFormat ref objMissing //RouteDocument );}}//保存到输出文件 SaveAs(outDoc);foreach (Document objDocument in objApp.Documents){objDocument.Close(ref objFalse, //SaveChanges ref objMissing, //OriginalFormat ref objMissing //RouteDocument );}}finally{objApp.Quit(ref objMissing, //SaveChanges ref objMissing, //OriginalFormat ref objMissing //RoutDocument );objApp = null;}}/// <summary> /// 循环合并多个文件(复制合并重复的文件) /// </summary> /// <param name="tempDoc">模板文件</param> /// <param name="arrCopies">需要合并的文件</param> /// <param name="outDoc">合并后的输出文件</param> public void CopyMerge(string tempDoc, string strCopyFolder, string outDoc){string[] arrFiles = Directory.GetFiles(strCopyFolder);CopyMerge(tempDoc, arrFiles, outDoc);}#endregion#region 循环合并多个文件(插入合并文件)/// <summary> /// 循环合并多个文件(插入合并文件) /// </summary> /// <param name="tempDoc">模板文件</param> /// <param name="arrCopies">需要合并的文件</param> /// <param name="outDoc">合并后的输出文件</param> public void InsertMerge(string tempDoc, List<string> arrCopies, string outDoc){object objMissing = Missing.Value;object objFalse = false;object confirmConversion = false;object link = false;object attachment = false;try{//打开模板文件 Open(tempDoc);foreach (string strCopy in arrCopies){objApp.Selection.InsertFile(strCopy,ref objMissing,ref confirmConversion,ref link,ref attachment);}//保存到输出文件 SaveAs(outDoc);foreach (Document objDocument in objApp.Documents){objDocument.Close(ref objFalse, //SaveChanges ref objMissing, //OriginalFormat ref objMissing //RouteDocument );}}finally{objApp.Quit(ref objMissing, //SaveChanges ref objMissing, //OriginalFormat ref objMissing //RoutDocument );objApp = null;}}/// <summary> /// 循环合并多个文件(插入合并文件) /// </summary> /// <param name="tempDoc">模板文件</param> /// <param name="arrCopies">需要合并的文件</param> /// <param name="outDoc">合并后的输出文件</param> public void InsertMerge(string tempDoc, string strCopyFolder, string outDoc){string[] arrFiles = Directory.GetFiles(strCopyFolder);List<string> files = new List<string>();for (int i = 0; i < arrFiles.Count(); i++){if (arrFiles[i].Contains("doc")){files.Add(arrFiles[i]);}}InsertMerge(tempDoc, files, outDoc);}#endregion#region 合并文件夹下的所有txt文件/// <summary>/// 合并多个txt文件/// </summary>/// <param name="infileName">文件存在的路劲</param>/// <param name="outfileName">输出文件名称</param>public void CombineFile(string filePath, string outfileName){string[] infileName = Directory.GetFiles(filePath, "*.txt");int b;int n = infileName.Length;FileStream[] fileIn = new FileStream[n];using (FileStream fileOut = new FileStream(outfileName, FileMode.Create)){for (int i = 0; i < n; i++){try{fileIn[i] = new FileStream(infileName[i], FileMode.Open);while ((b = fileIn[i].ReadByte()) != -1)fileOut.WriteByte((byte)b);}catch (System.Exception ex){Console.WriteLine(ex.Message);}finally{fileIn[i].Close();}}}}#endregion}

  使用这个类,我们可以把一个目录下的所有word文档合并成一个,也可以把一个目录下的所有txt文件合并成一个。

版权声明:本文为博主原创文章,若要转载,请注明原处。

C# 实现将多个word文档合并成一个word文档的功能相关推荐

  1. 如何让多个word文档合并成一个

    几千年没发过动态了,今天随便发发证明本人健在吧! 近两天有几个同学问我Word文档合并成一个,我属实有些懵. 首先建立一个空白文档,在[插入]里面找到[对象],然后选择[从文件中提取],之后按照顺序选 ...

  2. python 合并word文档,实现同一个文件夹下面的word合并成一个word

    python 合并word文档,实现同一个文件夹下面的word合并成一个word -- coding:utf-8 -- import win32com.client as win32 import o ...

  3. WPS文字如何将多个文档快速合并成一个WPS文档?

    有些时候我们需要将多个WPS文档合并成一个文档,如我们写系列文章的时候是一篇一个文档保存,最后写完之后想将他们合并成一个WPS文档便于转换PDF格式输出.除了一个个文档打开然后复制粘贴到新文档外,我们 ...

  4. 怎样将图片合并成一个PDF文档

    图片转pdf就是将一些图片文件合并成一个PDF格式的文档,那具体怎样操作?又有哪些方法可以把图片转pdf? 首先可以用jpg转换成pdf软件来实现,首先在工具中的其他文件转pdf类型中选择" ...

  5. 多张JPG如何合并成一个PDF文档

    jpg合并成一个pdf文件,当我们扫描一些文档资料之后形成的图片会放在同一个文件夹中,为了方便查看和管理这些图片,就会将图片合成一个文档转换成PDF文件,今天教大家免费的方法,一起看看吧. 1,打开浏 ...

  6. 把多个txt文档合并为一个txt文档并排序

    当我们得到多个txt文档时,想要把这些文档的内容合并为一个文档并按首列来进行排序,比如按首列数字升序排序,下面介绍操作方法: 步骤一:把多个txt文件放在同一文件夹下,并新建一个txt文档,在里面写下 ...

  7. 如何将多个excel表格合并成一个_怎样在线就能将多个PDF文档合并成一个?

    有时在收集资料时,找到多个可用的文档,则需要将这些PDF文档合并成一个单独的文件使用.目前市面上合并PDF的软件也很多,但考虑到下载安装费时还不安全,下面介绍一种在线就能完成PDF合并的方法. 1.打 ...

  8. java给多个不同文档(doc,docx,jpg,png,tif)合并成一个pdf文档 并添加设置页面权限,和水印

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 前言 对pdf文档的合并转换 加水印等 多个文件转pdf 还有改变图片的尺寸大小 依赖包可以自己去找下 代码 package com. ...

  9. 多个word合并成一个word(新版)

    /** * @program: 合并多份word文件 * @description: * @author: corey * @create: 2020-04-29 19:04 **/ public c ...

最新文章

  1. iOS iTunes Connect协议更新导致无法构建新版本
  2. 软件开发环境-过程控制和消息服务器
  3. tomcat启动_tomcat学习|tomcat的启动过程
  4. 总算解决了路由器上iptables的nat问题
  5. Error(6,35)java: 程序包 不存在,解决办法
  6. 华三ospf联动bfd_HCIE2020__路由交换专家__BFD综合实验
  7. uva 10120——Gift?!
  8. java围棋毕业设计_(毕业论文)围棋游戏的设计与实现.doc
  9. C# 无边框异型窗体制作
  10. h3c s5500-28c-si操作
  11. 常考程序 —— 笔试篇
  12. log4cpp 用法
  13. Android UI学习之ListView(使用ArrayAdapter和SimpleAdapter)
  14. 【考研数学】张宇1000题,汤家凤1800,李永乐660,应该怎么选择?
  15. iPhone13全系列参数对比
  16. single-spa_如何使用Single-SPA开发和部署微前端
  17. halcon 灰度投影
  18. 匿名发脉脉的拼多多员工,是如何被发现的?背后真相令人发指...
  19. Linux下的搜狗拼音输入法-fcitx sougopinyin
  20. DNSPod十问Matt Overman:二维码真的代替域名了吗?

热门文章

  1. 安卓桌面壁纸_Android上什么记事本软件更好用?这款安卓手机便签APP不错
  2. 车联网系统的组成概述
  3. 静压式窨井液位监测仪——一体化设计的智能仪表
  4. STC-ISP 打开工程文件问题×××××××
  5. 【前端】jQuer选择器小结
  6. JAVA在线航班订票系统计算机毕业设计Mybatis+系统+数据库+调试部署
  7. 五笔学习之基本指法练习和数字键练习
  8. bootstrap动态调用select下拉框
  9. 状态机 java_java版的状态机实现
  10. 雷军回应“小米手机都是中低端”;特斯拉CEO埃隆马斯克确认感染新冠病毒;Firefox 83.0发布|极客头条...