C#与Word文档的交互

这篇具有很好参考价值的文章主要介绍了C#与Word文档的交互。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

C#访问word应用软件需要先安装word,word会向系统注册COM组件,COM组件提供了外部应用程序的一个访问接口,通过这些接口,可以很方便地程序性地操作word软件中的各种COM对象的属性和方法。比如文字,图片,形状,段落,光标位置,字体,表格,边框,背景,公式,格式,书签,页面属性,页眉页脚,选择范围,查找/替换,剪贴板操作,响应事件等等,基本上能够在前台操作的功能,都能在类库中找到对应的接口。

Word软件COM接口定义了一套不变的标准,外部程序可以对这些标准的接口进行二次封装,从而构建更加稳定便捷的文档操作特性。

C#与Word文档的交互
我们所看到的word软件界面在系统中被视为一个COM对象,对象类型为
Microsoft.Office.Interop.Word.Document 继承自_Document接口
C#与Word文档的交互
这个接口提供了操作Word文档的所有方法/属性/事件。
一个Word应用程序可以包含多个word文档,一个Word应用程序在一个进程中运行
C#与Word文档的交互

 Word应用程序也是一个COM对象,类型为Microsoft.Office.Interop.Word.Application,

C#与Word文档的交互

 对于其中每一个方法如何使用可以访问微软官方文档MSDN

Microsoft.Office.Interop.Word Namespace | Microsoft DocsExplore all classes and interfaces of the Microsoft.Office.Interop.Word namespace.https://docs.microsoft.com/en-us/dotnet/api/microsoft.office.interop.word?view=word-pia

新建一个Word应用程序实例

Microsoft.Office.Interop.Word.Application application = new Microsoft.Office.Interop.Word.Application();

如果应用程序已经被创建,也可以直接获取已经创建的Word实例

application = (Application)Marshal.GetActiveObject("Word.Application");

新建一个Word文档实例,有两种方式:将已经存在的Word文件作为一个副本打开,相当于创建了一个Word文档对象,内容模板从另外一个文件中获取并重新构建

application.Documents.Add("路径")

另一种方式为打开文件的时候将文件锁住,不让其他应用程序修改文件内容,直到Document实例被关闭,保存或取消保存,才会更新文件,释放文件锁定。

application.Documents.Open(path)
COM接口中包含一部分事件,监听这些事件,可以与Word进行一些动态的内容交互
application.WindowSelectionChange += Application_WindowSelectionChange;
application.DocumentBeforeClose += Application_DocumentBeforeClose;

需要注意的是事件委托的方法必须使用多线程执行,防止外部应用程序阻塞了Word主线程

private static void Application_WindowSelectionChange(Selection Sel)
    {

      App.Current.Dispatcher.Invoke((Action)(() =>
      {
        RocResultProcess.RocKeepon();
        RocResultProcess.HoldOn();
        RocResultProcess.AppendTitle($"Word选中事件回调");
        RocResultProcess.AppendLine($"选中的文本:{Sel.Text}" +
          $"\r\n字体:{Sel.Font.Name}" +
          $"\r\n字体颜色:{Sel.Font.Color.ToString()}" +
          $"\r\n字体大小:{Sel.Font.Size}" +
          $"\r\n字体加粗:{Sel.Font.Bold}" +
          $"\r\n选中部分所在文档的起始位置:{Sel.Start}" +
          $"\r\n选中部分所在文档的结束位置:{Sel.End}" +
          ""
          );
        if (!string.IsNullOrWhiteSpace(Sel.Range.Text))
        {
          if (Sel.Range.Text=="/")
          {
            Sel.Copy();
          }
          else
          {
            Sel.Range.Copy();
          }
          
          Code.Library.Text.ShowRichTextInRoc();
        }
        RocResultProcess.HoldOff();
        RocResultProcess.RocKeepoff();
      }));
    }

成品展示

读取多个word文件的内容,进行加工处理,得到一个综合的数据模型,这个数据模型表示了Word内容的结构化信息,然后将数据模型格式化的输出到成RTF字节流,批量的写入一个新的word文件。

C#与Word文档的交互文章来源地址https://www.toymoban.com/news/detail-444076.html

到了这里,关于C#与Word文档的交互的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 细数应用软件的缺陷分类

    本文分享自华为云社区《应用软件的缺陷分类》,作者:Uncle_Tom 。 软件缺陷分类在已知缺陷管理、缺陷用例库建设、静态检查工具的能力覆盖和横向对比中起着重要的作用。本文参考GB/T-30279, CNNVD,NVD,以及CWE的各种视图, 给出了一个建立适合自己的缺陷分类方法。 最近先后

    2024年02月13日
    浏览(35)
  • Android 平台应用软件开发(学习中)

    1,LinearLayout(线性布局),RelativeLayout(相对布局),FrameLayout(帧布局),AbsoluteLayout(绝对布局),TableLayout(表格布局)。 2,线性布局中的控件属性说明 ①android:background,设置UI控件的背景,其值可以是资源文件夹中的图片或者是颜色的十六进制值。 ②android:orientation,该属性是线性布局

    2024年02月04日
    浏览(42)
  • 小课堂:应用软件如何做安全方案

    一、导语 作为三大入侵途径之一的“应用软件”,被用于入侵的频率非常高。 我们常用的Apache、Nginx、Tomcat、MySQL、SQL Server、Serv-U等大部分服务器软件,都有安全隐患,需要做好安全防护措施。 下面我们以Apache为例,讲解如何防御入侵。Apache是一款非常优秀的Web服务器软件

    2024年02月16日
    浏览(42)
  • 易语言软件定制软件开发脚本开发协议软件电脑网站APP应用视频制作工程制作

    随着信息技术的不断发展,易语言软件定制开发已成为许多公司的一项重要业务。本文将探讨如何利用易语言承接软件定制软件开发脚本开发协议软件电脑网站APP应用视频制作工程制作。 一、易语言概述 易语言是一种简单易学的编程语言,它采用中文编程,让不会英文的初

    2024年02月08日
    浏览(76)
  • 苹果电脑菜单栏应用管理软件Bartender 4 mac软件特点

    Bartender mac是一款可以帮助用户更好地管理和组织菜单栏图标的 macOS 软件。它允许用户隐藏和重新排列菜单栏图标,从而减少混乱和杂乱。 Bartender mac软件特点 菜单栏图标隐藏:Bartender 允许用户隐藏菜单栏图标,只在需要时显示。这样可以减少菜单栏的拥挤和视觉干扰,使界

    2024年02月03日
    浏览(43)
  • 软件测试/测试开发丨ChatGPT在软件测试领域的应用

    随着互联网技术的迅速发展,软件已经成为现代社会中不可或缺的一部分。而软件测试作为保障软件质量的关键环节,也越来越受到人们的关注。在这个领域,ChatGPT作为一种新型的人工智能技术,正逐渐应用于软件测试领域,为软件测试带来了诸多创新和改进。 在软件测试

    2024年02月14日
    浏览(59)
  • 软件工程应用题汇总

    DFD/L0(基本系统模型) 只包含源点终点和一个处理(XXX系统) DFD/L1(功能级数据流图)在L0基础上进一步划分处理(XXX系统) 个人理解   DFD/L2(在L1基础上进一步分解后的数据流图) 变换流 以CD为变换中心          箭头尾部记得加圆圈(空心圆代表传递的数据,实心圆代表传递

    2024年01月18日
    浏览(33)
  • 蚁剑软件的配置与应用

    蚁剑(antSword)是一款开源的网站管理软件,它主要面向于合法授权的渗透测试安全人员以及进行常规操作的网站管理员,由于蚁剑(antSword)所有脚本的源代码均来自中国菜刀,流量特征和菜刀相差不大,因此提供了编码/解码器绕waf,使用nodejs编写,支持自定义:     编码

    2023年04月10日
    浏览(24)
  • VOSviewer软件的基础与应用

    VOSviewer是一款免费且专业的文献计量分析软件,也是一个知识图谱可视化工具,由荷兰莱顿大学开发,主要用于构建和查看文献计量知识图谱,基于文献的共引和共被引原理,具有可视化能力强、适合于大规模样本数据的特点,并支持标签视图、密度视图、聚类视图和分散视

    2024年02月09日
    浏览(31)
  • 应用软件安全编程--01预防SQL注入

    SQL 注入是一种数据库攻击手段。攻击者通过向应用程序提交恶意代码来改变原 SQL 语句的含义,进而执行任意SQL 命令,达到入侵数据库乃至操作系统的目的。防止 SQL 注入的主要方法有:净 化并验证非受信输入,采用参数化查询。 对于预防 SQL  注入的情况,示例1给出了不规

    2024年02月06日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包