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

相关推荐
vfvfb2 小时前
word文档结尾批量插入图片 docx批量插入图片 指定几张
word·docx插入图片·word批量插入图片·word文档批量插入图片
c#上位机2 小时前
wpf之TextBlock
c#·wpf
almighty2712 小时前
C# WinForm分页控件实现与使用详解
c#·winform·分页控件·c#分页·winform分页
almighty2712 小时前
C#实现导入CSV数据到List<T>的完整教程
c#·csv·格式转换·c#导入数据·csv数据导入
程序猿多布13 小时前
Lua和C#比较
c#·lua
老马啸西风17 小时前
sensitive-word 敏感词性能提升14倍优化全过程 v0.28.0
安全·开源·nlp·word·敏感词·sensitive-word
csdn_aspnet1 天前
使用 MongoDB.Driver 在 C# .NETCore 中实现 Mongo DB 过滤器
mongodb·c#·.netcore
csdn_aspnet1 天前
使用 C# .NETCore 实现MongoDB
mongodb·c#·.netcore
象骑士Hack1 天前
Word 常用快捷键大全:提升文档处理效率的必备技巧
word