.net npoi读word内容+目录
最近在做读npoi文档存入搜索引擎,实现快速查询word文档中内容并展示,效果希望带有目录导航。
网上有很多例子都是读写操作,很肤浅没有具体读到想要的东西所以自己就写了个demo,也有微软提供的office,需要装一致的版本,而且必须装,直接忽略。
尝试了两种方案:1、使用npoi
2、使用Spire.Doc
先介绍一下Spire.Doc,这个是收费版本的,网上也有很多破解版,也实现了基本要的要过,不过取目录有点问题,做各种处理,做的太繁琐就没继续,先上一个效果图:

看起来效果还不错,不过需要付费的,不付费有水印,被我用技术手段给去掉了,大概提示“Evaluation Warning: The document was created with Spire.Doc for .NET.”。目录没办法读出来。速度还挺快不能打满分。核心代码如下:
using Spire.Doc; 引用
Spire.Doc.Document document = new Spire.Doc.Document();
document.LoadFromFile(path);
document.SaveToFile("D:\\1法规\\02中华人民共和国会计法2017修订版.txt", FileFormat.Html);//FileFormat支持转换很多想了解的可以看看(word、html、txt、xml、pdf、jpg等格式很多)
string upStr = File.ReadAllText("D:\\1法规\\02中华人民共和国会计法2017修订版.txt", Encoding.UTF8);
xml应该可以读到目录,最后没尝试,接下来用npoi读word内容加目录。
这个是纯文字,没有任何样式读取

核心代码
XWPFDocument document = null;
using (FileStream file = new FileStream(fileName, FileMode.Open, FileAccess.Read))
{
document = new XWPFDocument(file);
}
StringBuilder sbFileText = new StringBuilder();
foreach (XWPFParagraph paragraph in document.Paragraphs)
{
sbFileText.AppendLine(paragraph.ParagraphText);
}
npoi转成html示例图
看起来还不错,不花钱的东西有这样很知足了,功能还不是很全呀,目录还没出现,嗯继续搞

看npoi给的示例根本没有呀,咋办哦难搞
最后一个属性一个属性的看,找了一下有没有自己想要的,发现大陆
npoi提供 protected List<XWPFSDT> contentControls;
这个主要记录目录,非常完美了nice

这个调用是被受保护的,没办法直接调用做个反射读出来就可以啦
目录+纯内容+body H实现了,接下来怎么操作
直接存库,存搜索引擎------------前台的问题来了,目录怎么匹配具体到哪一行呀,我给的方案是点目录跳转直接全字搜索到匹配的跳过去高亮就行。目前还没有更好的方案,接下来可以参考word里面目录链接进行反编,word里面href大概是#_Toc54704623,就是对应到具体的行,目前没有破译出来,搞出来慢慢跟你们分享。
不知道怎么实现的可以留言发demo参考;
.net npoi读word内容+目录的更多相关文章
- 使用NPOI读取Word文档内容并进行修改
前言 网上使用NPOI读取Word文件的例子现在也不少,本文就是参考网上大神们的例子进行修改以适应自己需求的. 参考博文 http://www.cnblogs.com/mahongbiao/p/376 ...
- OpenXml读取word内容(三)
内容和表格内容一起读: word内容: 代码: public static void ReadWordByOpenXml(string path) { using (WordprocessingDoc ...
- NPOI处理Word文本中段落编号
NPOI的XWPFParagraph对象中,是无法直接读取段落编号的,然而可以读取的是编号的样式名称(GetNumFmt),编号分组ID(GetNumID),编号样式(NumLevelText)等.具 ...
- 根据python上下文管理,写一个在读文件内容前后自动打开关闭文件的程序
利用上下文管理实现读f文件前后自动打开关闭文件#在本目录创建f文件,内容写monkey代码如下 import contextlib #导入模块1 @contextlib.contextmanager# ...
- c#读取word内容,c#提取word内容
Post by 54admin, 2009-5-8, Views:575 1: 对项目添加引用,Microsoft Word 11.0 Object Library 2: 在程序中添加 using W ...
- POI读word doc 03 文件的两种方法
Apache poi的hwpf模块是专门用来对word doc文件进行读写操作的.在hwpf里面我们使用HWPFDocument来表示一个word doc文档.在HWPFDocument里面有这么几个 ...
- 利用NPOI导出Word文档帮助类
/// <summary> /// NPOI操作Word /// </summary> public class NpoiWordHelper { /// <summar ...
- 使用FreePic2Pdf导出书签至Word建立层级目录——快速初始化Word笔记本目录
使用FreePic2Pdf导出书签至Word建立层级目录 --快速初始化Word笔记本目录 文:安徽师范大学2014级计算机科学与技术 王昊 (Get Contact:441301158@qq.com ...
- java读取word内容
暂时只写读取word内容的方法. 依赖的jar: poi-3.9-20121203.jarpoi-ooxml-3.9-20121203.jarxmlbeans-2.3.0.jar package co ...
随机推荐
- Spring框架分为哪七大模块,各模块的主要功能作用是什么
七大模块,如下: 1. Spring Core: Core封装包是框架的最基础部分,提供IOC和依赖注入特性.这里的基础概念是BeanFactory,它提供对Factory模式的经典实现来消除对程序性 ...
- vue +signalR 实现服务端到客户端消息发送
承接上一篇 上一篇博客实现是了消息的实时通信,这一篇博客主要讲如何从中心服务内部向客户端发送消息. 先看下最终效果: 在core应用程序里加一个控制器TestController 注入控制器中的IHu ...
- Java Set 常用集合 HashSet、LinkedHashSet、TreeSet
Java 中的 Set 是非常常用的数据类型.Set 是无序的 Collection,Java Set 有三个常用的实现类,分别是:HashSet.LinkedHashSet.TreeSet 本文基于 ...
- Oracle复习(复习精简版v1.0)
自己没记不住的,超基础Oracle知识,新手可以看一下. 大多数例子是用scott用户中的emp表完成 排序:order by 列名 desc是降序,默认是升序: update 表名 set 列 ...
- 30种SQL语句优化
1.'对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用 ...
- java工作三年应具备的技能
LZ常常思考自己的未来,也从自己的思考中总结出了一些东西,作为第一部分来谈谈.LZ认为一名程序员应该有几个阶段(以下时间都算上实习期). 第一阶段:三年 我认为三年对于程序员来说是第一个门槛,这个阶段 ...
- linux中重启网卡后网络不通(NetworkManager篇)
1.问题描述 RHEL7.6系统,使用nmcli绑定双网卡后,在使用以下命令重启network服务后主机网络异常,导致无法通过ssh远程登录系统. systemctl restart network ...
- Tomcat 8.5安装
安装 打开Tomcat官网:http://tomcat.apache.org/,下载tar.gz压缩文件,下载后文件名是apache-tomcat- 8.5.23.tar.gz.使用root用户安装, ...
- Centos-内核核心组成
linux内核,相当于linux大脑,高可靠和高稳定都是针对内核来说 完整linux核心组成部分 1. 内存管理 合理有效的管理整个系统的物理内存,同时快速响应内核各子系统对内存分配的请求 2. 进程 ...
- 商品现货数据不好拿?商品季节性难跟踪?一键解决没烦恼的Python爬虫分享
更多精彩内容,欢迎关注公众号:数量技术宅.探讨数据分析.量化投资问题,请加技术宅微信:sljsz01 季节性在大宗商品的交易中至关重要 大宗商品交易中,特别是在期货市场,由于商品价格周期的存在,季节性 ...