.NET實現(xiàn)在網(wǎng)頁中預覽Office文件的3個方法_.Net教程
推薦:asp.net中控制反轉(zhuǎn)怎么理解?對IOC的解釋為:Inversion of control is a common characteristic of frameworks, so saying that these lightweight containers are special because they use inversion of control is like saying my car is special because it has wheels. 我想對這一概念執(zhí)行
近日公司要搞一個日常的文檔管理的東東,可以上傳、下載各種文件,如果是office文件呢還必須得支持預覽功能,其他的都好說但是唯獨office預覽功能比較麻煩,但是不能不做,廢話不多說了一步步來吧。分析了下網(wǎng)易郵箱的文件預覽功能,他用的是微軟的組件,最早叫Office online,現(xiàn)在分開了叫Word online、Excel online ....等等,效果十分炫酷功能十分強大,但是查看了下對api的說明發(fā)現(xiàn)對服務器的要求比較苛刻而且配置比較復雜不太適合。然后 又看了下騰訊用的是永中第三方組件,效果嘛自然比不上微軟的但是能用,綜合網(wǎng)上的一些資料大概也就那么幾種方式實現(xiàn)
1.使用Microsoft的Office組件將文件直接轉(zhuǎn)換為html文件(優(yōu)點:代碼實現(xiàn)最簡單,工作強度最小。缺點:效果極差)
2.使用Microsoft的Office組件將文件轉(zhuǎn)換為PDF格式文件,然后再使用pdf2swf轉(zhuǎn)換為swf文件,也就是flash文件在使用FlexPaper展示出來(優(yōu)點:預覽效果能接受,缺點:代碼量大)
效果如圖:
3. 使用Office online(優(yōu)點:表現(xiàn)完美,缺點:不適合中小企業(yè)應用)
綜合考慮決定使用第二種方法,經(jīng)過次次波折終于可以使用,但是有個問題至今沒有得到解決,調(diào)用Office組件的時候有時候會出現(xiàn)如下異常:
檢索 COM 類工廠中 CLSID 為 {000209FF-0000-0000-C000-000000000046} 的組件失敗,原因是出現(xiàn)以下錯誤: 8000401a 因為配置標識不正確,系統(tǒng)無法開始服務器進程。請檢查用戶名和密碼。 (異常來自 HRESULT:0x8000401A),查閱無數(shù)資料還是不能解決,最讓人不可接受的的是office文件必須標標準準毫無容錯能力,當轉(zhuǎn)換ppt文件時竟然會彈出轉(zhuǎn)換進度框��!
好吧!那么我們改進它。
使用ASPOSE+pdf2swf+FlexPaper
關于ASPOSE大家可以到官網(wǎng)了解,這是款商業(yè)收費產(chǎn)品但是免費也可以使用
1、引用dll
2、編寫轉(zhuǎn)換幫助類
代碼如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Aspose.Cells;
using Aspose.Words;
using Aspose.Slides;
using System.Text.RegularExpressions;
using System.IO;
namespace Souxuexiao.Common
{
/// <summary>
/// 第三方組件ASPOSE Office/WPS文件轉(zhuǎn)換
/// Writer:Helen Joe
/// Date:2014-09-24
/// </summary>
public class AsposeUtils
{
/// <summary>
/// PFD轉(zhuǎn)換器位置
/// </summary>
private static string _EXEFILENAME = System.Web.HttpContext.Current != null
? System.Web.HttpContext.Current.Server.MapPath("/pdf2swf/pdf2swf.exe")
: System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory + "\\pdf2swf\\pdf2swf.exe");
#region 1.01 Wrod文檔轉(zhuǎn)換為PDF文件 +ConvertDocToPdF(string sourceFileName, string targetFileName)
/// <summary>
/// Wrod文檔轉(zhuǎn)換為PDF文件
/// </summary>
/// <param name="sourceFileName">需要轉(zhuǎn)換的Word全路徑</param>
/// <param name="targetFileName">目標文件全路徑</param>
/// <returns>轉(zhuǎn)換是否成功</returns>
public static bool ConvertDocToPdF(string sourceFileName, string targetFileName)
{
Souxuexiao.API.Logger.error(string.Format("Wrod文檔轉(zhuǎn)換為PDF文件:sourceFileName={0},targetFileName={1}", sourceFileName, targetFileName));
try
{
using (System.IO.Stream stream = new System.IO.FileStream(sourceFileName, System.IO.FileMode.Open, System.IO.FileAccess.Read, System.IO.FileShare.ReadWrite))
{
Document doc = new Document(sourceFileName);
doc.Save(targetFileName, Aspose.Words.SaveFormat.Pdf);
}
}
catch (Exception ex)
{
Souxuexiao.API.Logger.error(string.Format("Wrod文檔轉(zhuǎn)換為PDF文件執(zhí)行ConvertDocToPdF發(fā)生異常原因是:{0}",ex.Message));
}
return System.IO.File.Exists(targetFileName);
}
#endregion
分享:delphi選擇文件夾例子所需單元 示例代碼
- asp.net中控制反轉(zhuǎn)怎么理解?
- delphi選擇文件夾例子
- asp.net中C++單例實現(xiàn)問題分析
- 簡單理解Web Service三種實現(xiàn)方式
- Asp.net中Ajax與JQuery的ready函數(shù)沖突怎么辦
- asp.net中Repeater控件用法筆記
- asp.net中導出excel數(shù)據(jù)的方法匯總
- Asp.Net 上傳圖片并生成高清晰縮略圖
- 服務器安全狗導致ASP.NET網(wǎng)站運行出錯的一個案例
- Asp.Net其他頁面如何調(diào)用Web用戶控件寫的分頁
- ASP.NET中上傳并讀取Excel文件數(shù)據(jù)示例
- asp.net SqlParameter如何根據(jù)條件有選擇的添加參數(shù)
- 相關鏈接:
- 教程說明:
.Net教程-.NET實現(xiàn)在網(wǎng)頁中預覽Office文件的3個方法
。

