C#调用FreeSpire.Office读取word数据的基本用法

  FreeSpire.Office是Spire.Office的免费版本,后者支持全面、复杂的office文件操作功能,包括文件格式转换、文档操作、文档打印等,详细介绍见下图及参考文献1。本文学习FreeSpire.Office的基本用法并用其获取word文档的基本信息。
在这里插入图片描述
  新建Winform项目,在Nuget包管理器中搜索并安装FreeSpire.Office,直接安装FreeSpire.Doc也可以。
在这里插入图片描述
  主要使用Spire.Doc.Document类读取、创建、操作word文档,由于Document类属性多、函数多、结构复杂、对象嵌套关系不少,本文仅介绍其中的少部分内容。
  Document类支持从word文档、HTML、Rtf、文件流等多源形式读取数据,提供LoadFromFile、LoadText、LoadHTML、LoadRtf等多种形式的加载函数,本文中使用LoadFromFile加载word文档。
  本文学习Document类结构的过程中主要看到及使用的属性及函数如下图所示,下面逐一进行概述:

在这里插入图片描述
  Document类
  1)Background属性保存文档的背景设置信息;
  2)Bookmarks属性保存文档的书签信息;
  3)ChildObjects属性保存直属文档的对象信息,可以是章节、文本、图片等各种类型的对象;
  4)Comments属性保存文档的批注信息;
  5)PageCount属性保存文档的总页数;
  6)Sections属性保存文档的所有节信息,在word文档中插入分节符就会增加Section对象;
  7)Styles属性保存文档所有可用的样式信息,如正文、标题1、标题2等样式;
  8)Watermark属性保存文档的水印设置信息。

  Section类
  1)ChildObjects属性保存直属当前节的对象信息;
  2)Columns属性保存当前节的分栏信息;
  3)HeadersFooters属性保存当前节的页眉页脚信息;
  4)PageSetup属性保存当前节的页面设置信息;
  5)Paragraphs属性保存当前节的段落信息;
  6)Tables属性保存当前节的表格信息。

  Paragraph类,Spire.Office中的段落属于通用段落概念,段落中既包含文字,也能包含表格、图片等数据,这些数据都会保存在段落的ChildObjects属性中,并通过每个DocumentObject对象实例的DocumentObjectType属性区分具体的对象类型。
  1)CharCount属性保存当前段落的字符数(不含空格);
  2)CharCountIncludeSpace属性保存当前段落的字符数(含空格);
  3)ChildObjects属性保存当前段落直属的对象集合;
  4)GetStyle()函数获取当前段落使用的样式信息,可以通过样式名称判断当前段落是正文、标题或其它形式的数据;
  5)Text属性保存当前段落的文本内容;
  6)WordCount属性保存当前段落的字数。

  本文最初想读取word文档的导航标题结构,不过暂时没有看到Document类中是否有属性或函数可以直接获取标题信息,根据参考文献4中的说明,可以通过遍历所有段落的样式名称,如果为标题1、标题2或其它约定的样式名称,则认为该段落为标题,这种方式的代码实现也不复杂,如下所示:

using Document doc = new Document();
doc.LoadFromFile(txtFilePath.Text);

txtResult.Text = $"总页数:{doc.PageCount}";

for(int i=0;i<doc.Sections.Count;i++)
{
    txtResult.Text += $"\r\n第{i + 1}节:";
    
    for(int j = 0; j < doc.Sections[i].Paragraphs.Count;j++) 
    {
        txtResult.Text += $"\r\n\t第{j + 1}段:样式名{doc.Sections[i].Paragraphs[j].GetStyle().Name}";
    }
}

  除了继续学习FreeSpire.Office的基本用法,后续还会学习其它word操作模块(如Aspose.Words、NPOI等),看是否有方便读取word文档标题或导航的方式。

参考文献:
[1]https://www.e-iceblue.com/Tutorials.html
[2]https://blog.csdn.net/lajigao/article/details/81236311
[3]ttps://www.cnblogs.com/Fooo/p/15601912.html
[4]https://blog.csdn.net/weixin_42727550/article/details/115915561

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/506133.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

python统计分析——双样本均值比较

参考资料&#xff1a;python统计分析【托马斯】 1、配对样本t检验 在进行两组数据之间的比较时&#xff0c;有两种情况必须区分开。在第一种情况中&#xff0c;同一对象在不同时候的两个记录值进行相互比较。例如&#xff0c;用学生们进入初中时的身高和他们一年后的身高&…

学习transformer模型-Positional Encoding位置编码的简明介绍

今天介绍transformer模型的positional encoding 位置编码 背景 位置编码用于为序列中的每个标记或单词提供一个相对位置。在阅读句子时&#xff0c;每个单词都依赖于其周围的单词。例如&#xff0c;有些单词在不同的上下文中具有不同的含义&#xff0c;因此模型应该能够理解这…

鸿蒙OS开发实例:【ArkTS 实现MQTT协议】

介绍 MQTT是物联网中的一种协议&#xff0c;在HarmonyOS API9平台&#xff0c;解决方案以C库移植为实现方案。 遥遥领先的平台&#xff0c;使用MQTT怎能不遥遥领先呢&#xff01; 新年快乐&#xff0c;本篇将带领你手把手实现HarmonyOS ArkTS语言的MQTT协议。 准备 阅读…

LLM--提示词Propmt的概念、作用及如何设计提示词

文章目录 1. 什么是提示词&#xff1f;2. 提示词的作用3. 如何设计提示词&#xff1f;3.1. 提供详细的信息3.2. 指定角色3.3. 使用分隔符和特殊符号3.4. 提供示例3.5. 少量示例的思维链&#xff08;COT&#xff09;模型3.6. 思维树&#xff08;TOT&#xff09;模型3.7. 自洽性 …

【4】单链表(有虚拟头节点)

【4】单链表&#xff08;有虚拟头节点&#xff09; 1、虚拟头节点2、构造方法3、node(int index) 返回索引位置的节点4、添加5、删除6、ArrayList 复杂度分析(1) 复杂度分析(2) 数组的随机访问(3) 动态数组 add(E element) 复杂度分析(4) 动态数组的缩容(5) 复杂度震荡 7、单链…

【Linux 10】环境变量

文章目录 &#x1f308; Ⅰ 命令行参数⭐ 1. main 函数的参数⭐ 2. main 函数参数的意义⭐ 3. 查看 argv 数组的内容⭐ 4. 命令行参数结论⭐ 5. 为什么要有命令行参数⭐ 6. 命令行参数传递由谁执行 &#x1f308; Ⅱ 环境变量基本概念⭐ 1. 常见环境变量 &#x1f308; Ⅲ 查看…

LeetCode_876(链表的中间结点)

//双指针//时间复杂度O(n) 空间复杂度O(1)public ListNode middleNode(ListNode head) {ListNode slowhead,fast head;while (fast!null && fast.next!null){slow slow.next;fast fast.next.next;}return slow;} 1->2->3->4->5->null 快指针移动两个…

9款免费云服务器,最长永久免费使用

随着云计算技术的快速发展&#xff0c;越来越多的企业和个人开始选择使用云服务器。云服务器提供了灵活、可扩展且易于管理的资源&#xff0c;使得用户可以根据需求随时调整计算能力。本文将分享9款免费云服务器&#xff0c;其中最长可永久免费使用&#xff0c;为用户提供了更多…

flutter官方案例context_menus

1&#xff1a;根据项目中的案例进行部署 2&#xff1a;运行查看有什么用&#xff0c;可不可以直接复制粘贴 案例地址 https://github.com/flutter/samples/tree/main/context_menus案例展示方法 直接把这个文件夹中的文件复制到lib文件夹中 3&#xff0c;19&#xff0c;4的fl…

HTML常用的图片标签和超链接标签

目录 一.常用的图片标签和超链接标签&#xff1a; 1.超链接标签&#xff1a; 前言: 超链接的使用&#xff1a; target属性: 1)鼠标样式&#xff1a; 2)颜色及下划线: 总结: 2.图片标签&#xff1a; 前言: img的使用: 设置图片&#xff1a; 1.设置宽度和高度: 2.HTM…

内网渗透之黄金票据的制作

1、黄金票据是用来留后门的也叫做未知权限&#xff0c;前提条件是你已经拿到了域控的最高权限 一、开始之前我们先来了解一下kerberos Kerberos是一种由MIT&#xff08;麻省理工大学&#xff09;提出的一种网络身份验证协议。它旨在通过使用密钥加密技术为客户端/服务器应…

基于muduo网络库实现的集群聊天服务器

目录 项目内容开发环境安装说明技术介绍项目目录数据库设计项目介绍启动服务器启动客户端注册账号登录成功一对一聊天业务创建群聊业务加入群聊业务群聊业务添加好友业务离线消息存储业务 特殊说明 &#xff01;&#xff01;&#xff01;项目是照着腾讯课堂施磊老师的视频学习&…

【QT+QGIS跨平台编译】054:【exiv2lib_int+Qt跨平台编译】(一套代码、一套框架,跨平台编译)

点击查看专栏目录 文章目录 一、exiv2lib_int介绍二、文件下载三、文件分析四、pro文件五、编译实践一、exiv2lib_int介绍 exiv2lib_int是 exiv2 这个开源的图像元数据库中的一个组件。 Exiv2是一个开源的C++库,用于读取、编辑和写入图片和视频文件的元数据。它可以处理各种类…

01-XML-04XML处理

XML处理 DOM DOM解析要求解析器将整个XML文件全部加载到内存中&#xff0c;生成一个Document对象。 优点&#xff1a;元素和元素之间保留结构&#xff0c;关系&#xff0c;可以针对元素进行增删改查操作。 缺点&#xff1a;如果XML文件过大&#xff0c;可能会导致内存溢出。SA…

【Linux】寿司线程池{单例模式之懒汉模式下的线程池}

文章目录 回顾单例模式0.多线程下的单例模式的意义1.什么是单例模式1.0设计模式1.1C单例模式的介绍及原理1.2拷贝构造和赋值重载的处理1.3if (nullptr ptr)&#xff0c;nullptr放在比较运算符的前面?1.4实现单例模式的方式 2.实现懒汉方式的单例模式2.1单线程的单例模式2.2多…

Go 源码之 gin 框架

Go 源码之 gin 框架 go源码之gin - Jxy 博客 一、总结 gin.New()初始化一个实例&#xff1a;gin.engine&#xff0c;该实例实现了http.Handler接口。实现了ServeHTTP方法 注册路由、注册中间件&#xff0c;调用addRoute将路由和中间件注册到 methodTree 前缀树&#xff08;节…

AR-Net网络(图像篡改检测)

AR-Net网络 摘要AbstractAR-Net1. 文献摘要2. 研究背景3. 创新点4. AR-Net 网络架构5. 实验6. 结论总结 摘要 AR-Net使用自适应注意力机制来融合位置和通道维度的特征&#xff0c;使网络能够充分利用不同维度的被篡改特征&#xff0c;此外&#xff0c;AR-Net 改进了预测掩模&a…

【Web and HTTP,HTTP概况,HTTP连接,持久HTTP,用户-服务器状态:cookie】

文章目录 Web and HTTPHTTP概况HTTP:超文本传输协议使用TCP&#xff1a;HTTP是无状态的 HTTP连接非持久HTTP持久HTTP响应时间模型 持久HTTP非持久HTTP的缺点&#xff1a;持久HTTP提交表单输入 用户-服务器状态&#xff1a;cookie Web and HTTP Web页&#xff1a;由一些对象组成…

智慧校园管理系统

一、项目介绍 1.1 项目简介 智慧校园管理系统&#xff1a;主要是以年级、班级为单位&#xff0c;进行老师和学生信息记录和统计功能。项目采用前后端分离架构思想&#xff0c;前端采用HTMLCSSVUE来实现页面效果展示&#xff0c;后端采用SpringBootMybatisPlus框架实现数据存储…

v3-admin-vite 改造自动路由,view页面自解释Meta

需求 v3-admin-vite是一款不错的后端管理模板&#xff0c;主要是pany一直都在维护&#xff0c;最近将后台管理也进行了升级&#xff0c;顺便完成一直没时间解决的小痛痒&#xff1a; 在不使用后端动态管理的情况下。我不希望单独维护一份路由定义&#xff0c;我希望页面是自解…