.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 ...
随机推荐
- Flutter中如何方便的获取音视频的长度
此次主要是flutter集成im,在发送视频时需要加上时长,但是用视频controller只能在初始化时具备路径才可以可以使用:just_audio插件中的方法进行获取 详情看官方文档:https:/ ...
- Spring--AOP的见解
AOP是指面向切面编程,与JAVA中的动态代理有很深的渊源. 在使用Spring框架时,AOP编程能简化很多繁杂的步骤,精简代码. 切面:横切关注点(跨越程序中多个模块的功能),被模块化的特殊对象,也 ...
- 微服务电商项目发布重大更新,打造Spring Cloud最佳实践!
Spring Cloud实战电商项目mall-swarm地址:转发+关注 私信我获取地址 系统架构图 系统架构图 项目组织结构 mall├── mall-common-- 工具类及通用代码模块├─ ...
- 项目启动加载配置,以及IP黑名单,使用CommandLineRunner和ApplicationRunner来实现(一般用在网关进行拦截黑名单)
//使用2个类的run方法都可以在项目启动时加载配置,唯一不同的是他们的参数不一样,CommandLineRunner的run方法参数是基本类型,ApplicationRunner的run方法参数是一 ...
- RT Thread的SPI设备驱动框架的使用以及内部机制分析
注释:这是19年初的博客,写得很一般,理解不到位也不全面.19年末得空时又重新看了RTThread的SPI和GPIO,这次理解得比较深刻.有时间时再整理上传. -------------------- ...
- c++ 中. 和 ->,波浪号 ~ 符号怎么用 ————很重要
参考:https://www.cnblogs.com/Simulation-Campus/p/8809999.html 1. 用在类中的析构函数之前,表示该函数是析构函数.如类A的析构函数 clas ...
- C/C++ 中 exit() 函数
参考: https://blog.csdn.net/jjjcainiao/article/details/21935795 知乎上的问题]C/C++ 中 exit() 函数的参数到底有什么意义? C ...
- 启动VNC Shell扩展
下载source files - 18.3 Kb Introduction 我们使用RealVNC来远程控制我们的网络中的pc机,VNC是一个伟大的产品,但如果不记住计算机名称,它可以是乏味的,在网络 ...
- 多测师讲解自动化_rf框架搭建_高级讲师肖sir
robot framework:自动化测试框架(简称RF框架) Python3.7 RIDE(可视化界面). Wxpython pip(在线下载) . setuptools(在线安装) . 第三方 ...
- 多测师讲解python __for 循环___高级讲师肖sir
横向输出 1.遍历字符串 2.遍历列表 3.遍历元组 方法一: 方法二: 方法三: #循环字典:方法一# dict1={"name":"zhihao",&quo ...