软件编程
位置:首页>> 软件编程>> C#编程>> 直接在线预览Word、Excel、TXT文件之ASP.NET

直接在线预览Word、Excel、TXT文件之ASP.NET

作者:秋荷雨翔  发布时间:2021-10-07 15:37:54 

标签:asp.net,在线预览

具体实现过程不多说了,直接贴代码了。



using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using Microsoft.Office.Interop.Excel;
using System.Diagnostics;
using System.IO;
using Microsoft.Office.Interop.Word;
namespace Suya.Web.Apps.Areas.PMP.Controllers
{
 /// <summary>
 /// 在线预览Office文件
 /// </summary>
 public class OfficeViewController : Controller
 {
   #region Index页面
   /// <summary>
   /// Index页面
   /// </summary>
   /// <param name="url">例:/uploads/......XXX.xls</param>
   public ActionResult Index(string url)
   {
     string physicalPath = Server.MapPath(Server.UrlDecode(url));
     string extension = Path.GetExtension(physicalPath);
     string htmlUrl = "";
     switch (extension.ToLower())
     {
       case ".xls":
       case ".xlsx":
         htmlUrl = PreviewExcel(physicalPath, url);
         break;
       case ".doc":
       case ".docx":
         htmlUrl = PreviewWord(physicalPath, url);
         break;
       case ".txt":
         htmlUrl = PreviewTxt(physicalPath, url);
         break;
       case ".pdf":
         htmlUrl = PreviewPdf(physicalPath, url);
         break;
     }
     return Redirect(Url.Content(htmlUrl));
   }
   #endregion
   #region 预览Excel
   /// <summary>
   /// 预览Excel
   /// </summary>
   public string PreviewExcel(string physicalPath, string url)
   {
     Microsoft.Office.Interop.Excel.Application application = null;
     Microsoft.Office.Interop.Excel.Workbook workbook = null;
     application = new Microsoft.Office.Interop.Excel.Application();
     object missing = Type.Missing;
     object trueObject = true;
     application.Visible = false;
     application.DisplayAlerts = false;
     workbook = application.Workbooks.Open(physicalPath, missing, trueObject, missing, missing, missing,
       missing, missing, missing, missing, missing, missing, missing, missing, missing);
     //Save Excel to Html
     object format = Microsoft.Office.Interop.Excel.XlFileFormat.xlHtml;
     string htmlName = Path.GetFileNameWithoutExtension(physicalPath) + ".html";
     String outputFile = Path.GetDirectoryName(physicalPath) + "\\" + htmlName;
     workbook.SaveAs(outputFile, format, missing, missing, missing,
              missing, XlSaveAsAccessMode.xlNoChange, missing,
              missing, missing, missing, missing);
     workbook.Close();
     application.Quit();
     return Path.GetDirectoryName(Server.UrlDecode(url)) + "\\" + htmlName;
   }
   #endregion
   #region 预览Word
   /// <summary>
   /// 预览Word
   /// </summary>
   public string PreviewWord(string physicalPath, string url)
   {
     Microsoft.Office.Interop.Word._Application application = null;
     Microsoft.Office.Interop.Word._Document doc = null;
     application = new Microsoft.Office.Interop.Word.Application();
     object missing = Type.Missing;
     object trueObject = true;
     application.Visible = false;
     application.DisplayAlerts = WdAlertLevel.wdAlertsNone;
     doc = application.Documents.Open(physicalPath, missing, trueObject, missing, missing, missing,
       missing, missing, missing, missing, missing, missing, missing, missing, missing, missing);
     //Save Excel to Html
     object format = Microsoft.Office.Interop.Word.WdSaveFormat.wdFormatHTML;
     string htmlName = Path.GetFileNameWithoutExtension(physicalPath) + ".html";
     String outputFile = Path.GetDirectoryName(physicalPath) + "\\" + htmlName;
     doc.SaveAs(outputFile, format, missing, missing, missing,
              missing, XlSaveAsAccessMode.xlNoChange, missing,
              missing, missing, missing, missing);
     doc.Close();
     application.Quit();
     return Path.GetDirectoryName(Server.UrlDecode(url)) + "\\" + htmlName;
   }
   #endregion
   #region 预览Txt
   /// <summary>
   /// 预览Txt
   /// </summary>
   public string PreviewTxt(string physicalPath, string url)
   {
     return Server.UrlDecode(url);
   }
   #endregion
   #region 预览Pdf
   /// <summary>
   /// 预览Pdf
   /// </summary>
   public string PreviewPdf(string physicalPath, string url)
   {
     return Server.UrlDecode(url);
   }
   #endregion
 }
}
0
投稿

猜你喜欢

手机版 软件编程 asp之家 www.aspxhome.com