C#在线预览文档(word,excel,pdf,txt,png)

原创 2016年05月31日 17:14:57

                           C#在线预览文档(word,excel,pdf,txt,png)

1、预览方式:将word文件转换成html文件然后预览html文件
2、预览word文件:需要引入Interop.Microsoft.Office.Interop.Word.dll(Com组件)
3、预览Excel文件:需要引入Interop.Microsoft.Office.Interop.Excel.dll(Com组件,Microsoft Excel 12.0(or other version) Object Library)
4、PDF文件直接嵌入到浏览器中进行查看,无需转换(需安装pdf阅读器)
5、文本文件直接嵌入到浏览器进行查看,无需转换

6、图片文件直接嵌入到浏览器进行查看,无需转换

Excel预览方法
using Microsoft.Office.Interop.Excel;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Web;

/// <summary>
/// Summary description for ExcelPreview
/// </summary>
public class ExcelPreview
{
    public static void Priview(System.Web.UI.Page p, string inFilePath, string outDirPath = "")
    {
        Microsoft.Office.Interop.Excel.Application excel = null;
        Microsoft.Office.Interop.Excel.Workbook xls = null;
        excel = new Microsoft.Office.Interop.Excel.Application();
        object missing = Type.Missing;
        object trueObject = true;
        excel.Visible = false;
        excel.DisplayAlerts = false;

        string randomName = DateTime.Now.Ticks.ToString();  //output fileName

        xls = excel.Workbooks.Open(inFilePath, 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;
        Workbook wsCurrent = xls;//(Workbook)wsEnumerator.Current;
        String outputFile = outDirPath + randomName + ".html";
        wsCurrent.SaveAs(outputFile, format, missing, missing, missing,
                          missing, XlSaveAsAccessMode.xlNoChange, missing,
                          missing, missing, missing, missing);
        excel.Quit();

        //Open generated Html
        Process process = new Process();
        process.StartInfo.UseShellExecute = true;
        process.StartInfo.FileName = outputFile;
        process.Start();
    }

}
Pdf类

using Microsoft.Office.Interop.Word;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Web;

/// <summary>
/// Summary description for WordPreview
/// </summary>
public class PDFPreview
{
    public static void Priview(System.Web.UI.Page p, string inFilePath)
    {
        p.Response.ContentType = "Application/pdf";

        string fileName = inFilePath.Substring(inFilePath.LastIndexOf('\\') + 1);
        p.Response.AddHeader("content-disposition", "filename=" + fileName);
        p.Response.WriteFile(inFilePath);
        p.Response.End();
    }
}
Word预览方法

using Microsoft.Office.Interop.Word;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Web;

/// <summary>
/// Summary description for WordPreview
/// </summary>
public class WordPreview
{
    public static void Priview(System.Web.UI.Page p, string inFilePath, string outDirPath = "")
    {
        object missingType = Type.Missing;
        object readOnly = true;
        object isVisible = false;
        object documentFormat = 8;
        string randomName = DateTime.Now.Ticks.ToString();
        object htmlFilePath = outDirPath + randomName + ".htm";
        string directoryPath = outDirPath + randomName + ".files";

        object filePath = inFilePath;
        //Open the word document in background
        ApplicationClass applicationclass = new ApplicationClass();
        applicationclass.Documents.Open(ref filePath,
                                        ref readOnly,
                                        ref missingType, ref missingType, ref missingType,
                                        ref missingType, ref missingType, ref  missingType,
                                        ref missingType, ref missingType, ref isVisible,
                                        ref missingType, ref missingType, ref missingType,
                                        ref missingType, ref missingType);
        applicationclass.Visible = false;
        Document document = applicationclass.ActiveDocument;

        //Save the word document as HTML file
        document.SaveAs(ref htmlFilePath, ref documentFormat, ref missingType,
                        ref missingType, ref missingType, ref missingType,
                        ref missingType, ref missingType, ref missingType,
                        ref missingType, ref missingType, ref missingType,
                        ref missingType, ref missingType, ref missingType,
                        ref missingType);

        //Close the word document
        document.Close(ref missingType, ref missingType, ref missingType);

        #region Read the Html File as Byte Array and Display it on browser
        //byte[] bytes;
        //using (FileStream fs = new FileStream(htmlFilePath.ToString(), FileMode.Open, FileAccess.Read))
        //{
        //    BinaryReader reader = new BinaryReader(fs);
        //    bytes = reader.ReadBytes((int)fs.Length);
        //    fs.Close();
        //}
        //p.Response.BinaryWrite(bytes);
        //p.Response.Flush();
        //p.Response.End();
        #endregion

        Process process = new Process();
        process.StartInfo.UseShellExecute = true;
        process.StartInfo.FileName = htmlFilePath.ToString();
        process.Start();

        #region Delete the Html File and Diretory 删除生成的文件
        //File.Delete(htmlFilePath.ToString());
        //foreach (string file in Directory.GetFiles(directoryPath))
        //{
        //    File.Delete(file);
        //}
        //Directory.Delete(directoryPath);
        #endregion
    }
}
文本预览方法
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web;

/// <summary>
/// Summary description for TextFilePreview
/// </summary>
public class TextFilePreview
{
    public static void Preview(System.Web.UI.Page p, string inFilePath)
    {
        string fileName = inFilePath.Substring(inFilePath.LastIndexOf('\\') + 1);

        p.Response.ContentType = "text/plain";
        p.Response.ContentEncoding = System.Text.Encoding.UTF8;  //保持和文件的编码格式一致
        p.Response.AddHeader("content-disposition", "filename=" + fileName);
        p.Response.WriteFile(inFilePath);
        p.Response.End();
    }
}
 

图片预览方法

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web;

/// <summary>
/// Summary description for TextFilePreview
/// </summary>
public class TextFilePreview
{
    public static void Preview(System.Web.UI.Page p, string inFilePath)
    {
        string fileName = inFilePath.Substring(inFilePath.LastIndexOf('\\') + 1);

        p.Response.ContentType = "images/*";
        p.Response.ContentEncoding = System.Text.Encoding.UTF8;  
        p.Response.AddHeader("content-disposition", "filename=" + fileName);
        p.Response.WriteFile(inFilePath);
        p.Response.End();
    }
}
 以上的pdf,txt,图片这个三种方式在MVC下不可用,在aspx界面可用。研究后进行了更改

 

 以上是转成html进行预览,预览效果不是太好。以下是转成pdf预览代码

  1 新建windows应用程序项目
  2 
  3 添加以下com组件的引用
  4 
  5 Microsoft Word 12.0 Object Library
  6 
  7 Microsoft PowerPoint 12.0 Object Library
  8 
  9 Microsoft Excel 12.0 Object Library
 10 
 11  
 12 
 13 ------------------------------------------------------
 14 
 15 using Word = Microsoft.Office.Interop.Word; using Excel = Microsoft.Office.Interop.Excel; using PowerPoint = Microsoft.Office.Interop.PowerPoint;
 16 
 17 using Microsoft.Office.Core;
 18 
 19  
 20 
 21 我们可以使用一个枚举类型来决定生成文件的类型
 22 
 23 Word.WdExportFormat wd = Microsoft.Office.Interop.Word.WdExportFormat.wdExportFormatPDF;
 24 
 25 Excel.XlFixedFormatType excelType = Microsoft.Office.Interop.Excel.XlFixedFormatType.xlTypePDF; PowerPoint.PpSaveAsFileType ppType = Microsoft.Office.Interop.PowerPoint.PpSaveAsFileType.ppSaveAsPDF;
 26 
 27 
 28   //将word文档转换成PDF格式
 29     private bool Convert(string sourcePath, string targetPath, Word.WdExportFormat exportFormat)
 30     {
 31         bool result;
 32         object paramMissing = Type.Missing;
 33         Word.ApplicationClass wordApplication = new Word.ApplicationClass();
 34         Word.Document wordDocument = null;
 35         try
 36         {
 37             object paramSourceDocPath = sourcePath;
 38             string paramExportFilePath = targetPath;
 39 
 40             Word.WdExportFormat paramExportFormat = exportFormat;
 41             bool paramOpenAfterExport = false;
 42             Word.WdExportOptimizeFor paramExportOptimizeFor =
 43                     Word.WdExportOptimizeFor.wdExportOptimizeForPrint;
 44             Word.WdExportRange paramExportRange = Word.WdExportRange.wdExportA

后来又改了几次方式。可以采用点聚的weboffice对word和excel,ppt进行展示,这样展示效果比较好。而且可以进行编辑
版权声明:本文为博主原创文章,未经博主允许不得转载。

C# office在线预览

最近做office文档(word、ppt、excel)和pdf文件的在线预览效果,有点类似百度文库。后来找到两种可行的办法: 1:将office文档转为swf,然后通过web页面预览...
  • somethingwhat
  • somethingwhat
  • 2016年08月08日 17:03
  • 2982

C#中mvc模式在线预览Office(word 可编辑、txt)文件

/// /// 在线预览Office文件 /// public class OfficeViewController : Controller { ...
  • rt_1170406609
  • rt_1170406609
  • 2017年08月15日 15:34
  • 853

C#实现Windows资源管理器文件预览

上一篇文章大致介绍了一下C++实现Windows文件预览的方法,这里介绍一下通过.NET方式实现文件预览。其实原理还是一样,需要通过实现系统定义的COM接口,包括 IInitializeWithF...
  • hey_zng
  • hey_zng
  • 2016年03月18日 17:54
  • 5036

C#在线预览文件

//paf在线预览功能         public  void Priview(System.Web.UI.Page p, string inFilePath)         {         ...
  • u014424282
  • u014424282
  • 2017年06月15日 15:38
  • 811

C# 最简单实现文件附件在线预览的方法

http://officeweb365.com  上这个网站注册一个账号,免费用户有一定限制不过可以克服 下载链接按该网站给的提示办: string webLink = "http://officew...
  • PeterZhuGe
  • PeterZhuGe
  • 2015年10月29日 09:23
  • 3010

【C#功能实现】C# 输出pdf文件流在页面上显示

1 不调用itextsharp.dll的操作         ///         /// 生成pdf流         ///         ///         p...
  • xuqiang918
  • xuqiang918
  • 2014年02月17日 10:37
  • 4141

C#pdf在线预览源码案例及一些资料汇总

  • 2013年09月23日 14:47
  • 56.28MB
  • 下载

PDF文件在线预览+c#+flexpaper

  • 2016年03月10日 15:59
  • 4.05MB
  • 下载

C#实现word文档打印及预览

  • 2015年09月12日 17:32
  • 15KB
  • 下载

如何使用C#Windows窗体完成文件浏览功能:

如何使用C#Windows窗体完成文件浏览功能: 1、简单界面如下: 2、点击上传按钮浏览本地文件: 3、显示上传文件名: 步骤: 1、在主界面上加入openFileDialog...
  • sangjisuonan
  • sangjisuonan
  • 2016年08月05日 11:35
  • 3007
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C#在线预览文档(word,excel,pdf,txt,png)
举报原因:
原因补充:

(最多只允许输入30个字)