.net下將富文本編輯器文本原樣讀入word文檔


 

    關鍵詞:富文本編輯器  生成word  樣式

 

    為了解決標題中提出的問題,首選需要了解,在.net環境下讀取數據庫中的內容動態生成word至少有2種方式,【方式一】一種方式是在項目中添加引用,例如在“添加引用”對話框中的COM子tab中添加Microsoft Office 11.0 Object Library,然后再在代碼中添加office相關的命名空間,使用word相關的對象讀取模版文件並將文本寫到模版提前設置好了標簽的位置。這種方式是最初出現的方式,缺點在於:1.在服務器上需要按照office,否則在服務器環境想會因缺少庫文件無法生成;2.需保持開發環境和服務器環境下office的版本一致,而服務器的環境相對穩定,軟件更新頻度不高,這一點對於那些喜歡追最新版本的開發者來說,可能會造成很多不必要的麻煩。【方式二】動態生成word文件的第二種方式是使用Open XML SDK,這種方法無需服務器安裝office,是一種比較neat的方法,缺點是這種方式可能更適合新開發生成word的功能,對於方式一遺留代碼的維護最好還是用方式一的方法。

 

    用上面的方式將內容讀入word和Excel等模版並不難。用富文本編輯器(最近比較fun KindEditor)進行文本編輯並控制樣式,實際就是給文本加上html的標記,例如<strong></strong>等等,這時候將內容讀入word並根據html tag的樣式在word中顯示同樣的樣式,需要一定技巧,弄不好容易直接顯示html tag的文本。用方式二將富文本編輯器產生的內容生成到word中並顯示對應的樣式文章比較多,只要知道Open XML SDK這種開發方式就能搜到,因為操作的中間數據是統一的Office Open XML格式的,方式一的文章幾乎沒有,好不容易找到了一個英文的,思路也確實很簡單,就是先把富文本編輯器產生的要讀入word的文本保存到一個網頁文件(.html文件中),然后在word中插入該文件,但給出的代碼不太可用,仍然進行了一下午的摸索才得到行之有效的方式。下面是我的完整代碼,每個參數都是設好的,可直接使用:


StreamWriter sw = new StreamWriter(System.Web.HttpContext.Current.Server.MapPath("~/temp.html"), false, Encoding.Default); sw.Write("<html><head></head><body>");//temp.html中沒有完整的html文件標記不行,沒有的話會在word中顯示html tag而不是樣式,預先寫入模版也行 sw.Write(dr["summary"].ToString()); sw.Write("</body></html>"); sw.Close(); object oFalse = false; object oTrue = true; object oMissing = System.Reflection.Missing.Value; doc.Bookmarks.get_Item(ref bm[202]).Range.InsertFile(System.Web.HttpContext.Current.Server.MapPath("~/temp.html"), ref oMissing, ref oFalse, ref oTrue, ref oFalse);

 下面是效果圖:

(1)富文本編輯器中的文本

 

(2)生成的word文本

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM