以前項目須要,查找了office文檔在線預覽的解決方案,順便記錄一下,方便之後查詢。html
直接在瀏覽器中打開Office文檔在頁面上的連接。會彈出以下窗口:web
優勢:主流瀏覽器都支持。設計模式
缺點:Office文檔連接在瀏覽器中打開,會有如上圖的提示,需用戶本身選擇打開或者保存功能,若是客戶電腦上安裝迅雷下載軟件,會啓動迅雷下載,用戶體驗很差。瀏覽器
office文檔轉html,首先引入com組件中office庫,而後在程序集擴展中引入word,excel,ppt的dll。工具
而後F6生成,會報以下錯誤:post
解決辦法:測試
office文檔轉換html輔助類:flex
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Web; 5 using System.Web.UI; 6 using System.Web.UI.WebControls; 7 8 namespace Wolfy.OfficePreview 9 { 10 public partial class Office2Html : System.Web.UI.Page 11 { 12 protected void Page_Load(object sender, EventArgs e) 13 { 14 15 } 16 protected void btnWord_Click(object sender, EventArgs e) 17 { 18 Button btn = sender as Button; 19 switch (btn.CommandArgument) 20 { 21 case "docx": 22 Office2HtmlHelper.Word2Html(MapPath("/Doc/分析某網站的SEO策略(外鏈篇).doc"), MapPath("/Html/"), "分析某網站的SEO策略(外鏈篇)"); 23 break; 24 case "xlsx": 25 Office2HtmlHelper.Excel2Html(MapPath("/Excel/1994-2013北京市歷年最低工資標準.xlsx"), MapPath("/Html/"), "1994-2013北京市歷年最低工資標準"); 26 break; 27 case "ppt": 28 Office2HtmlHelper.PPT2Html(MapPath("/PPT/23種設計模式詳解.ppt"), MapPath("/Html/"), "23種設計模式詳解"); 29 break; 30 default: 31 break; 32 } 33 } 34 } 35 }
測試結果:
網站
這裏爲了測試特找了含有圖片的office文檔,瀏覽正常:url
要求:機器需安裝office,而且office環境是純淨的,所謂純淨就是不能有多個版本,lz曾經在電腦上安裝過wps,被害苦了老是報以下錯誤:
報這個錯誤,只能哭了,網上的關於00046的解決辦法都嘗試了,不行。而後不得不從新安裝office,而後笑了。最好安裝office完整版,由於原來裝的不是完整版,不知道有沒有這方面的緣由,也沒有測試,建議完整版。
office文檔轉PDF,PDF轉swf,使用flexpaper+swftools實如今線瀏覽。
在操做office2007時,需安裝SaveAsPDFandXPS.exe ,安裝成功後,如圖所示:
只有安裝了SaveAsPDFandXPS.exe,程序操做office文檔,纔有office文檔另存爲pdf文件。office2010不須要安裝了,內置有這個功能。
核心代碼:
測試結果:
此方案office轉pdf文件的過程的要求與方案二要求相同。
pdf轉換完成後,就能夠將pdf轉換爲swf,使用flexpaper+swftools實如今線瀏覽了,可參考我以前的一篇文章:
office文檔直接轉換爲swf,使用flexpaper+swftool實如今先瀏覽。
office直接轉換爲swf,這裏使用flashpaper來實現:
FlashPaper是一個虛擬打印機,可將word文件直接轉化成swf格式文件(.doc.xls .txt .pdf等文件均可以正常生成SWF格式)。
這裏只貼出核心代碼:
1 using System; 2 using System.Collections.Generic; 3 using System.Diagnostics; 4 using System.Linq; 5 using System.Web; 6 using System.Web.UI; 7 using System.Web.UI.WebControls; 8 9 namespace Wolfy.OfficePreview 10 { 11 public partial class Office2Swf : System.Web.UI.Page 12 { 13 protected void Page_Load(object sender, EventArgs e) 14 { 15 16 } 17 protected void btnWord_Click(object sender, EventArgs e) 18 { 19 Button btn = sender as Button; 20 switch (btn.CommandArgument) 21 { 22 case "docx": 23 ConvertOffice2Swf(MapPath("/Doc/分析某網站的SEO策略(外鏈篇).doc"), MapPath("/SWF/分析某網站的SEO策略(外鏈篇).swf")); 24 break; 25 case "xlsx": 26 Office2PDFHelper.XLSConvertToPDF(MapPath("/Excel/1994-2013北京市歷年最低工資標準.xlsx"), MapPath("/SWF/1994-2013北京市歷年最低工資標準.swf")); 27 break; 28 case "ppt": 29 Office2PDFHelper.PPTConvertToPDF(MapPath("/PPT/23種設計模式詳解.ppt"), MapPath("/SWF/23種設計模式詳解.swf")); 30 break; 31 default: 32 break; 33 } 34 } 35 /// <summary> 36 /// office 轉swf 37 /// </summary> 38 /// <param name="officePath">要轉換的office文檔路徑</param> 39 /// <param name="swfPath">轉換後swf的路徑</param> 40 private void ConvertOffice2Swf(string officePath, string swfPath) 41 { 42 Process process = new Process(); //建立進程對象 43 ProcessStartInfo startInfo = new ProcessStartInfo(); 44 string paperroot = @"C:\Program Files\Macromedia\FlashPaper 2\FlashPrinter.exe";//這裏是FlashPrinter的路徑 45 string docFile = officePath; 46 string swfFile = swfPath; 47 startInfo.FileName = paperroot; 48 startInfo.Arguments = docFile + " -o " + swfFile; 49 startInfo.UseShellExecute = false; //不使用系統外殼程序啓動 50 startInfo.RedirectStandardInput = false; //不重定向輸入 51 startInfo.RedirectStandardOutput = false; //重定向輸出 52 startInfo.CreateNoWindow = true; //不建立窗口 53 process.StartInfo = startInfo; 54 process.Start(); 55 if (process != null) 56 process.Close(); 57 58 } 59 } 60 }
鑑於測試時,flashpaper在將office文檔轉換爲swf的時候,在使用flexpaper的瀏覽時,出現轉換的內容爲空,猜想:flexpaper能打開的swf文件與flashpaper轉的swf文件不兼容。最後使用flashpaper將office文檔轉換爲pdf,而後走方案三,pdf轉swf的步驟。另外本地測試時,沒問題。將項目部署在IIS上,不能瀏覽,出現卡死的狀況,調試發現,文件太大,在office還沒徹底轉換爲pdf的狀況下,swftool工具就去尋找pdf文件,出現錯誤。
IIS上,沒法瀏覽,查詢網上解決方案,和權限這塊有關,按照步驟設置了,未果,有點遺憾。
使用點聚公司的weboffice控件,測試後發現兼容性較差,放棄。有興趣的能夠研究一下。
office轉pdf後,直接瀏覽器打開,此方案鑑於目前主流瀏覽器都集成adobe reader功能,可實現直接打開PDF文件。將pdf文件連接可直接打開。
必要條件:本地需安裝adobe reader相似軟件。
鑑於項目狀況選擇一個適合的方案,其中有方案只是曲線救國,可是一樣能達到要求。若是您以爲對你有所幫助,不妨推薦一下,讓更多的人都能看到,謝謝你能看到文章最後。
參考文章:
http://www.cnblogs.com/expectszc/archive/2012/04/04/2432149.html
http://www.cnblogs.com/lexlin/articles/2478027.html
http://www.cnblogs.com/gossip/p/3473024.html
http://www.cnblogs.com/expectszc/archive/2012/04/04/2432149.html