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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

VTK中polydata的属性数据结构表示和用法

vtk中通过vtkDataArray进行数据的存储&#xff0c;通过vtkDataObject进行可视化数据的表达&#xff0c;在vtkDataObject内部有一个vtkFieldData的实例&#xff0c;负责对数据的表达&#xff1a; ​​​​​​​ vtkFieldData存储数据的属性数据&#xff0c;该数据是对拓…

《福建教育》期刊简介及投稿要求

《福建教育》期刊简介及投稿要求 《福建教育》国内外公开发行的学术期刊&#xff0c;目前出版文献量达19187篇&#xff1b;总下载次数&#xff1a; 1361672次&#xff1b;总被引次数&#xff1a; 8709次 《福建教育》是福建省教育厅主管的唯一一份主流教育专业期刊&#xff0…

【嵌入式智能产品开发实战】(十二)—— 政安晨:通过ARM-Linux掌握基本技能【C语言程序的安装运行】

目录 程序的安装 程序安装的本质 在Linux下制作软件安装包 政安晨的个人主页&#xff1a;政安晨 欢迎 &#x1f44d;点赞✍评论⭐收藏 收录专栏: 嵌入式智能产品开发实战 希望政安晨的博客能够对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xf…

MybatisPlus速成

MybatisPlus快速入门 快速入门入门案例常见注解常见配置 核心功能条件构造器自定义SQLService接口 扩展功能代码生成静态工具逻辑删除枚举处理器JSON处理器 插件功能分页插件通用分页实体 参考文档 mybatis-plus参考文档 全部资料链接 讲义 快速入门 入门案例 <dependency…

骑行不将就,坐垫要讲究!跟维乐来一场骑美合一的美学旅行~

想象一下&#xff0c;你胯下的坐垫不再是冷冰冰的硬疙瘩&#xff0c;而是化身为“骑行界的舒适艺术家”。美学坐垫宛如马鞍上的微型沙发&#xff0c;采用美学与人体工学的跨界联姻&#xff0c;不仅赏心悦目&#xff0c;更能温柔拥抱你的臀部。它那精妙的曲线设计&#xff0c;仿…

AI大模型在金融行业的应用场景和落地路径

作者&#xff1a;林建明 来源&#xff1a;IT阅读排行榜 本文摘编自《AIGC重塑金融&#xff1a;AI大模型驱动的金融变革与实践》&#xff0c;机械工业出版社出版这是最好的时代&#xff0c;也是最坏的时代。尽管大模型技术在金融领域具有巨大的应用潜力&#xff0c;但其应用也面…

基于两个单片机串行通信的电子密码锁设计

1.功能 电子号码锁在实际应用中应该有两部分&#xff0c;一部分在外部&#xff0c;有键盘部分和密码显示&#xff1b;另一部分内部&#xff0c;设置密码、显示密码。使用单片机自身带有的串口可以很方便的实现单片机之间的通信&#xff0c;使输入的密码值传送到主机检验是否是…

ctf题目

目录 1.文件包含的一道题目&#xff0c;没什么难度&#xff0c; 2.一道sql注入的题目&#xff0c;伪静态 3.限制只能本地访问。 1.文件包含的一道题目&#xff0c;没什么难度&#xff0c; 但是一个点就是它这里去包含的那个文件名就是flag&#xff0c;而不是flag.php也不是f…

数据库---------完全备份和增量备份的数据恢复,以及断点恢复

目录 一、在数据库表中&#xff0c;分三次录入学生考试成绩 1.1先创建库&#xff0c;创建表&#xff0c;完成三次数据的录入 1.2首次录入成绩后&#xff0c;做该表的完全备份 1.3第二次插入后 做增量备份 1.4第三次插入后 做增量备份 二、模拟数据丢失&#xff0c;并使用…

小练习——java中循环语句打印乘法口诀表

正向乘法表 for (int i 1; i<9; i) {for (int j 1; j < i; j) {System.out.print(j "X" i "" (i * j) "\t");}System.out.println();}代码结果&#xff1a; 打印反向乘法表 for (int i 9; i > 1; i--) {for (int j 1; j <…

大数据技术之 Apache Doris(一)

第 1 章 Doris 简介 1.1 Doris 概述 Apache Doris 由百度大数据部研发&#xff08;之前叫百度 Palo&#xff0c;2018 年贡献到 Apache 社区后&#xff0c;更名为 Doris &#xff09;&#xff0c;在百度内部&#xff0c;有超过 200 个产品线在使用&#xff0c;部署机器超过 10…

机器学习周报第35期

目录 一、文献阅读&#xff1a;You Only Look Once: Unified, Real-Time Object Detection1.1 摘要1.2 背景1.3 论文模型1.4 网络设计1.5 YOLO的局限性1.6 实现代码 target 7*7*30 值域为0-1 一、文献阅读&#xff1a;You Only Look Once: Unified, Real-Time Object Detection…

从0开始搭建基于VUE的前端项目(三) Vuex的使用与配置

准备与版本 vuex 3.6.2(https://v3.vuex.vuejs.org/zh/)概念 vuex是什么? 是用作 【状态管理】的 流程图如下 state 数据状态,成员是个对象 mapState 组件使用this.$store.state.xxx获取state里面的数据 getters 成员是个函数,方便获取state里面的数据,也可以加工数据 ma…

LC 106.从中序与后序遍历序列构造二叉树

106. 从中序与后序遍历序列构造二叉树 给定两个整数数组 inorder 和 postorder &#xff0c;其中 inorder 是二叉树的中序遍历&#xff0c; postorder 是同一棵树的后序遍历&#xff0c;请你构造并返回这颗 二叉树 。 示例 1: 输入&#xff1a; inorder [9,3,15,20,7], post…

个人主页导航源码

源码简介 个人主页导航源码&#xff0c;个人主页导航源码&#xff0c;一款带后台的个人导航主页源码。 搭建环境 PHP 5.2 Nginx Mysql5.6 安装教程 1.上传源码压缩包到网站目录并解压 2.访问网站域名安装提示进行安装即可 后台路径为&#xff1a;https://域名/admin/ …

ngrok 内网穿透使用

title: ngrok 内网穿透使用 search: 2024-02-29 文章目录 背景Windows安装ngrok指令授权ngrok个人用户Authtoken穿透 http 或 https 服务ngrok的代理http指令ngrok获得静态域名指令ngrok的代理ssh指令 背景 这次寒假回家&#xff0c;很无奈&#xff0c;很多东西放在项目组服务…

Vue2(十一):脚手架配置代理、github案例、插槽

一、脚手架配置代理 1.回顾常用的ajax发送方式&#xff1a; &#xff08;1&#xff09;xhr 比较麻烦&#xff0c;不常用 &#xff08;2&#xff09;jQuery 核心是封装dom操作&#xff0c;所以也不常用 &#xff08;3&#xff09;axios 优势&#xff1a;体积小、是promis…

微软Azure推出9种逼真AI语音服务;OpenAI有限开放Voice Engine访问权限

&#x1f680; 微软Azure推出9种逼真AI语音服务 摘要&#xff1a;微软Azure团队在2023年9月对外宣布&#xff0c;针对商业客户推出了一系列逼真的AI语音服务。最近&#xff0c;该公司进一步表示&#xff0c;这些服务现已包含9种更为真实的人工智能声音&#xff0c;并且已于所有…

PostgreSQL:所有支持的数据类型及建表语句实例

哈喽&#xff0c;大家好&#xff0c;我是木头左&#xff01; 一、引言 在当今这个数据驱动的时代&#xff0c;数据库已经成为了企业和个人不可或缺的工具。而在众多数据库产品中&#xff0c;PostgreSQL以其强大的功能和高度的可扩展性&#xff0c;受到了越来越多开发者的青睐。…

ZC706+AD9361 运行 open WiFi

先到github上下载img&#xff0c;网页链接如下&#xff1a; https://github.com/open-sdr/openwifi?tabreadme-ov-file 用win32 Disk lmager 把文件写入到SD卡中&#xff0c;这一步操作会把SD卡重新清空&#xff0c;注意保存数据。这个软件我会放在最后的网盘链接中 打开linu…