zoukankan      html  css  js  c++  java
  • .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参考;

      

  • 相关阅读:
    Docker容器部署 Nginx服务
    trap 的用法 /etc/init.d/rcS trap :1 2 3 24
    android system setup and building (2)
    ubuntu 中建立tftp 服务器
    Mount nfs 报错Protocol not supported
    android system setup and building (1)
    mknod 详解
    linux 内核中已经定义的主设备号及查看设备设备号
    fstab 文件详解
    Linux根文件系统的挂载过程分析
  • 原文地址:https://www.cnblogs.com/ms1976/p/13892385.html
Copyright © 2011-2022 走看看