最近在做讀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參考;