.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参考;

 

 

 

 

 

 

 

  

 

Tags: