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

 

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

 

    爲了解決標題中提出的問題,首選須要瞭解,在.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)富文本編輯器中的文本spa

 

(2)生成的word文本.net

相關文章
相關標籤/搜索