最近在做读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内容+目录的更多相关文章

  1. 使用NPOI读取Word文档内容并进行修改

    前言 网上使用NPOI读取Word文件的例子现在也不少,本文就是参考网上大神们的例子进行修改以适应自己需求的. 参考博文 http://www.cnblogs.com/mahongbiao/p/376 ...

  2. OpenXml读取word内容(三)

    内容和表格内容一起读: word内容: 代码: public static void ReadWordByOpenXml(string path) { using (WordprocessingDoc ...

  3. NPOI处理Word文本中段落编号

    NPOI的XWPFParagraph对象中,是无法直接读取段落编号的,然而可以读取的是编号的样式名称(GetNumFmt),编号分组ID(GetNumID),编号样式(NumLevelText)等.具 ...

  4. 根据python上下文管理,写一个在读文件内容前后自动打开关闭文件的程序

    利用上下文管理实现读f文件前后自动打开关闭文件#在本目录创建f文件,内容写monkey代码如下 import contextlib #导入模块1 @contextlib.contextmanager# ...

  5. c#读取word内容,c#提取word内容

    Post by 54admin, 2009-5-8, Views:575 1: 对项目添加引用,Microsoft Word 11.0 Object Library 2: 在程序中添加 using W ...

  6. POI读word doc 03 文件的两种方法

    Apache poi的hwpf模块是专门用来对word doc文件进行读写操作的.在hwpf里面我们使用HWPFDocument来表示一个word doc文档.在HWPFDocument里面有这么几个 ...

  7. 利用NPOI导出Word文档帮助类

    /// <summary> /// NPOI操作Word /// </summary> public class NpoiWordHelper { /// <summar ...

  8. 使用FreePic2Pdf导出书签至Word建立层级目录——快速初始化Word笔记本目录

    使用FreePic2Pdf导出书签至Word建立层级目录 --快速初始化Word笔记本目录 文:安徽师范大学2014级计算机科学与技术 王昊 (Get Contact:441301158@qq.com ...

  9. java读取word内容

    暂时只写读取word内容的方法. 依赖的jar: poi-3.9-20121203.jarpoi-ooxml-3.9-20121203.jarxmlbeans-2.3.0.jar package co ...

随机推荐

  1. [Abp vNext 源码分析] - 21. 界面与文字的本地化

    一.简介 ABP vNext 提供了全套的本地化字符串支持,具体用法可以参考官方使用文档.vNext 本身是对 Microsoft 提供的本地化组件进行了实现,通过 JSON 文件提供本地化源,这一点 ...

  2. Windows下设置Mongodb用户名密码

    MongoDB认证: 在默认的情况下,Mongodb是监听在127.0.0.1 IP上的,端口号默认为27017,任何客户端都可以连接,不需要认证 默认情况下,Mongodb也是没有管理账户的,除非你 ...

  3. SQLSERVER如何在子查询中使用ORDER BY

    今天在使用公司的一个pager接口的时候,需要传递一个查询的SQL语句,因为我希望他能够在pager对他查询出来的结果排序之前自己先进行排序, 于是在这个SQL中添加了ORDER BY,但是得到的结果 ...

  4. java调用Oracle中的存储过程与存储函数

    1 //调用存储过程 2 public static void testPro(){ 3 String driver = "oracle.jdbc.OracleDriver"; 4 ...

  5. Harmony OS 开发避坑指南——源码下载和编译

    Harmony OS 开发避坑指南--源码下载和编译 本文介绍了如何下载鸿蒙系统源码,如何一次性配置可以编译三个目标平台(Hi3516,Hi3518和Hi3861)的编译环境,以及如何将源码编译为三个 ...

  6. RTThread DFS文件系统使用: 基于使用SFUD驱动的SPI FLASH之上的ELM FATFS文件系统

    参考博文: 博文很长,但是实际要操作的步骤没几下. http://m.elecfans.com/article/730878.html  为了防止几年后文章链接找不到,我把文章复制过来了 /***** ...

  7. 引用类型之Array(二)

    操作方法 concat( ) concat() 方法用于连接两个或多个数组. 该方法不会改变现有的数组,而仅仅会返回被连接数组的一个副本. 语法 arrayObject.concat(arrayX,a ...

  8. 用Python爬取B站、腾讯视频、爱奇艺和芒果TV视频弹幕!

    众所周知,弹幕,即在网络上观看视频时弹出的评论性字幕.不知道大家看视频的时候会不会点开弹幕,于我而言,弹幕是视频内容的良好补充,是一个组织良好的评论序列.通过分析弹幕,我们可以快速洞察广大观众对于视频 ...

  9. fastjson配置序列化过滤转换

    @Configuration@EnableWebMvcpublic class WebConfig implements WebMvcConfigurer { @Override public voi ...

  10. CDH5部署三部曲之一:准备工作

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...