Asp.Net在線預(yù)覽Word文檔的解決方案與思路詳解
前幾天有個(gè)老項(xiàng)目找到我,有多老呢?比我工作年限都長(zhǎng),見(jiàn)到這個(gè)項(xiàng)目我還得叫一聲前輩。
這個(gè)項(xiàng)目目前使用非常穩(wěn)定,十多年了沒(méi)怎么更新過(guò),現(xiàn)在客戶想加一個(gè)小功能:在線預(yù)覽Word文檔
。
首先想到的是用第三方的服務(wù),例如WPS
的開(kāi)放平臺(tái)。
剛看完文檔,客戶來(lái)了句,要一次性的哦,后續(xù)再付費(fèi)的通通不要。
得嘞,換其他方案吧。
項(xiàng)目特點(diǎn)
Asp.Net
不帶Core
,.NET Framework 4.0
,部署在Windows
平臺(tái)上。
解決方案
大致思路:先將Word
文檔轉(zhuǎn)換Html
,再預(yù)覽Html
。
1、Word
文檔轉(zhuǎn)Html
先引用Office
的DLL
,在COM
里面,注意:電腦需要安裝Office哦。
又注意:請(qǐng)?jiān)?code>DLL屬性里面將嵌入互操作類(lèi)型改為False
轉(zhuǎn)換過(guò)程一個(gè)方法搞定:
using Microsoft.Office.Interop.Word; public static string WordToHtml(string path) { string root = AppDomain.CurrentDomain.BaseDirectory; var htmlName = $"{Guid.NewGuid().ToString("N")}.html"; var htmlPath = root + $"Resource/Temporary/"; if (!Directory.Exists(htmlPath)) { Directory.CreateDirectory(htmlPath); } ApplicationClass word = new ApplicationClass(); Type wordType = word.GetType(); Documents docs = word.Documents; Type docsType = docs.GetType(); Document doc = (Document)docsType.InvokeMember("Open", BindingFlags.InvokeMethod, null, docs, new Object[] { (object)path, true, true }); Type docType = doc.GetType(); docType.InvokeMember("SaveAs", BindingFlags.InvokeMethod, null, doc, new object[] { (htmlPath + htmlName), WdSaveFormat.wdFormatFilteredHTML }); docType.InvokeMember("Close", BindingFlags.InvokeMethod, null, doc, null); wordType.InvokeMember("Quit", BindingFlags.InvokeMethod, null, word, null); return htmlName; }
2、預(yù)覽
上一步Word
轉(zhuǎn)Html
的方法已經(jīng)準(zhǔn)備就緒,我們?cè)贉?zhǔn)備這樣一個(gè)Word
文檔。
簡(jiǎn)單寫(xiě)一下邏輯:
是不是特別簡(jiǎn)單,我們?cè)倏纯闯善沸Ч?/p>
這種方案局限性比較大,部署平臺(tái)必須安裝Office
,剛好客戶能滿足。
到此這篇關(guān)于Asp.Net在線預(yù)覽Word文檔的解決方案與思路的文章就介紹到這了,更多相關(guān)Asp.Net在線預(yù)覽Word文檔內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Asp.net FileUpload+Image制作頭像效果示例代碼
個(gè)人信息中通常需要自己的頭像或者照片,今天主要介紹一下使用FileUpload+img控件上傳照片,感興趣的朋友可以參考下2013-08-08ASP.NET?Core?MVC中Form?Tag?Helpers用法介紹
這篇文章介紹了ASP.NET?Core?MVC中Form?Tag?Helpers的用法,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-02-02asp.NET開(kāi)發(fā)中正則表達(dá)式中BUG分析
又發(fā)現(xiàn)了一個(gè) .net的bug!最近在使用正則表達(dá)式的時(shí)候發(fā)現(xiàn):在忽略大小寫(xiě)的時(shí)候,匹配值從 0xff 到 0xffff 之間的所有字符,正則表達(dá)式竟然也能匹配兩個(gè) ASCII 字符:i(code: 0x69) 和 I(code: 0x49);但是仍然不能匹配其他的 ASCII 字母和數(shù)字。2008-10-10Queryable.Union 方法實(shí)現(xiàn)json格式的字符串合并的具體實(shí)例
這篇文章介紹了Queryable.Union 方法實(shí)現(xiàn)json格式的字符串合并的具體實(shí)例,有需要的朋友可以參考一下2013-10-10.net數(shù)據(jù)庫(kù)連接池配置技巧(默認(rèn)值)
ado.net 本就有連接功能,所有.net開(kāi)法基本不用去考慮連接問(wèn)題,怪不得.net的連接池資料網(wǎng)上找不到。.net連接池只要在連接字符串里配制就可以了2008-12-12