1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > C#预览文档(word excel pdf txt png)

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

时间:2021-05-26 13:02:50

相关推荐

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

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 fileNamexls = excel.Workbooks.Open(inFilePath, missing, trueObject, missing,missing, missing, missing, missing, missing, missing, missing, missing,missing, missing, missing);//Save Excel to Htmlobject 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 HtmlProcess 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 backgroundApplicationClass 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 filedocument.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 documentdocument.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();#endregionProcess 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格式 29private 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.wdExportAllDocument; 45 int paramStartPage = 0; 46 int paramEndPage = 0; 47 Word.WdExportItem paramExportItem = Word.WdExportItem.wdExportDocumentContent; 48 bool paramIncludeDocProps = true; 49 bool paramKeepIRM = true; 50 Word.WdExportCreateBookmarks paramCreateBookmarks = 51 Word.WdExportCreateBookmarks.wdExportCreateWordBookmarks; 52 bool paramDocStructureTags = true; 53 bool paramBitmapMissingFonts = true; 54 bool paramUseISO19005_1 = false; 55 56 wordDocument = wordApplication.Documents.Open( 57 ref paramSourceDocPath, ref paramMissing, ref paramMissing, 58 ref paramMissing, ref paramMissing, ref paramMissing, 59 ref paramMissing, ref paramMissing, ref paramMissing, 60 ref paramMissing, ref paramMissing, ref paramMissing, 61 ref paramMissing, ref paramMissing, ref paramMissing, 62 ref paramMissing); 63 64 if (wordDocument != null) 65 wordDocument.ExportAsFixedFormat(paramExportFilePath, 66paramExportFormat, paramOpenAfterExport, 67paramExportOptimizeFor, paramExportRange, paramStartPage, 68paramEndPage, paramExportItem, paramIncludeDocProps, 69paramKeepIRM, paramCreateBookmarks, paramDocStructureTags, 70paramBitmapMissingFonts, paramUseISO19005_1, 71ref paramMissing); 72 result = true; 73 } 74 finally 75 { 76 if (wordDocument != null) 77 { 78 wordDocument.Close(ref paramMissing, ref paramMissing, ref paramMissing); 79 wordDocument = null; 80 } 81 if (wordApplication != null) 82 { 83 wordApplication.Quit(ref paramMissing, ref paramMissing, ref paramMissing); 84 wordApplication = null; 85 } 86 GC.Collect(); 87 GC.WaitForPendingFinalizers(); 88 GC.Collect(); 89 GC.WaitForPendingFinalizers(); 90 } 91 return result; 92} 93 94//将excel文档转换成PDF格式 95private bool Convert(string sourcePath, string targetPath, XlFixedFormatType targetType) 96{ 97 bool result; 98 object missing = Type.Missing; 99 Excel.ApplicationClass application = null;100 Workbook workBook = null;101 try102 {103 application = new Excel.ApplicationClass();104 object target = targetPath;105 object type = targetType;106 workBook = application.Workbooks.Open(sourcePath, missing, missing, missing, missing, missing,107 missing, missing, missing, missing, missing, missing, missing, missing, missing);108 109 workBook.ExportAsFixedFormat(targetType, target, XlFixedFormatQuality.xlQualityStandard, true, false, missing, missing, missing, missing);110 result = true;111 }112 catch113 {114 result = false;115 }116 finally117 {118 if (workBook != null)119 {120 workBook.Close(true, missing, missing);121 workBook = null;122 }123 if (application != null)124 {125 application.Quit();126 application = null;127 }128 GC.Collect();129 GC.WaitForPendingFinalizers();130 GC.Collect();131 GC.WaitForPendingFinalizers();132 }133 return result;134}135 136//将ppt文档转换成PDF格式137private bool Convert(string sourcePath, string targetPath, PpSaveAsFileType targetFileType)138{139 bool result;140 object missing = Type.Missing;141 PowerPoint.ApplicationClass application = null;142 Presentation persentation = null;143 try144 {145 application = new PowerPoint.ApplicationClass();146 persentation = application.Presentations.Open(sourcePath, MsoTriState.msoTrue, MsoTriState.msoFalse, MsoTriState.msoFalse);147 persentation.SaveAs(targetPath, targetFileType, Microsoft.Office.Core.MsoTriState.msoTrue);148 149 result = true;150 }151 catch152 {153 result = false;154 }155 finally156 {157 if (persentation != null)158 {159 persentation.Close();160 persentation = null;161 }162 if (application != null)163 {164 application.Quit();165 application = null;166 }167 GC.Collect();168 GC.WaitForPendingFinalizers();169 GC.Collect();170 GC.WaitForPendingFinalizers();171 }172 return result;173}

cshtml代码:

$.get("/Home/Index",{url:a,rnd:new Date()},function(data){if(data.status=1){Window.Open(data.url);//在新窗口中打开预览文档 }});

Controller的方法

1 Public JsonResult PreView()2 {3string url=Request["url"];//url 格式"/doc/123456.pdf"4string html=Url.Content(url);5return Json(new {status=1,url=html},JsonRequestBehavior.AllowGet);6 7 }

转载请注明出处。此方法预览PDf需要机器上安装pdf阅读器。有好方法可以交流学习。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。