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或其它约定的样式名称,则认为该段落为标题,这种方式的代码实现也不复杂,如下所示:

csharp 复制代码
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

相关推荐
Kapaseker几秒前
C# 斩获TIOBE年度编程语言
c#·编程语言
工业甲酰苯胺11 分钟前
使用 C# 和 SQL Server 自动化邮件中的用户分配数据处理
数据库·c#·自动化
ejjdhdjdjdjdjjsl1 小时前
C#控件事件与数据存储实战
开发语言·c#
云草桑1 小时前
C#性能优化SQL中left join与exists linq ORM sqlsuger
sql·mysql·c#·linq·sql优化
曹牧1 小时前
C#:单行定义多个变量
开发语言·windows·c#
chao1898442 小时前
基于 C# 实现 P2P 视频聊天工具
c#·音视频·p2p
数据的世界012 小时前
C#权威指南第1章:.NET体系结构
c#·.net
傻啦嘿哟2 小时前
实战:爬虫数据实时流处理——Kafka+Flink技术方案全解析
c#·linq
Tmin.2 小时前
Word论文中遇到的
word
唐青枫2 小时前
深入理解 Volatile:C#.NET 内存可见性与有序性
c#·.net