通过Pdf预览Excel或者word或者Powerpoint (C#将Office转换为PDF)
1.示意代码
下面代码是Excel转换为PDF
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using ms = Microsoft.Office.Interop.Excel; public class Excel2Pdf
{
public static void ToPdf(string excelName, string pdfName)
{
ms.Application app = new ms.Application();
ms.Workbook workBook;
app.ScreenUpdating = false;
var workBooks = app.Workbooks;
workBook = workBooks.Open(HttpContext.Current.Server.MapPath(excelName));
if (workBook == null)
{
app.Quit();
app = null;
workBook = null;
return ;
} workBook.ExportAsFixedFormat(Microsoft.Office.Interop.Excel.XlFixedFormatType.xlTypePDF, HttpContext.Current.Server.MapPath(pdfName));
workBook.Close();
System.Runtime.InteropServices.Marshal.ReleaseComObject(workBook);
System.Runtime.InteropServices.Marshal.ReleaseComObject(workBooks);
System.Runtime.InteropServices.Marshal.ReleaseComObject(app);
}
}
下面代码是将Word转换为PDF
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using ms=Microsoft.Office.Interop.Word; public class Word2Pdf
{ public static void ToPdf(string wordName, string pdfName)
{
ms.Application word=new ms.Application();
word.ScreenUpdating = false;
ms.Document doc=word.Documents.Open(HttpContext.Current.Server.MapPath(wordName));
doc.ExportAsFixedFormat(HttpContext.Current.Server.MapPath(pdfName),ms.WdExportFormat.wdExportFormatPDF); doc.Close();
word.Quit();
System.Runtime.InteropServices.Marshal.ReleaseComObject(doc);
System.Runtime.InteropServices.Marshal.ReleaseComObject(word);
}
}
用同样的方法,可以写出Powerpoint转换为PDF的方法
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using ms = Microsoft.Office.Interop.PowerPoint; public class Ppt2Pdf
{
public static void ToPdf(string pptName, string pdfName)
{ ms.Application app = new ms.Application();
ms.Presentation pre = null; pre=app.Presentations.Open(
HttpContext.Current.Server.MapPath(pptName),
Microsoft.Office.Core.MsoTriState.msoTrue,
Microsoft.Office.Core.MsoTriState.msoTrue,
Microsoft.Office.Core.MsoTriState.msoFalse
); pre.SaveAs(
HttpContext.Current.Server.MapPath(pdfName),
Microsoft.Office.Interop.PowerPoint.PpSaveAsFileType.ppSaveAsPDF,
Microsoft.Office.Core.MsoTriState.msoCTrue); GC.Collect();
GC.WaitForPendingFinalizers(); // https://docs.microsoft.com/en-us/previous-versions/office/developer/office-2003/aa679807(v=office.11)
// System.Runtime.InteropServices.Marshal.ReleaseComObject(cell); pre.Close();
System.Runtime.InteropServices.Marshal.ReleaseComObject(pre); app.Quit();
System.Runtime.InteropServices.Marshal.ReleaseComObject(app); //pre.ExportAsFixedFormat(
// HttpContext.Current.Server.MapPath(pdfName),
// Microsoft.Office.Interop.PowerPoint.PpFixedFormatType.ppFixedFormatTypePDF,
// Microsoft.Office.Interop.PowerPoint.PpFixedFormatIntent.ppFixedFormatIntentPrint, //MsoTriState.msoFalse, Microsoft.Office.Interop.PowerPoint.PpPrintHandoutOrder.ppPrintHandoutVerticalFirst, //Microsoft.Office.Interop.PowerPoint.PpPrintOutputType.ppPrintOutputSlides, MsoTriState.msoFalse, null, //Microsoft.Office.Interop.PowerPoint.PpPrintRangeType.ppPrintAll, string.Empty, true, true, true, //true, false, unknownType); }
}
上面代码,本机测试运行的很好,但是一旦部署到服务器上面,很可能出现如下错误:
Microsoft Office Excel 不能访问文件“D:\WWWRoot\\QUOTE5.xls”。 可能的原因有: 1 文件名称或路径不存在。 2 文件正被其他程序使用。 3 您正要保存的工作簿与当前打开的工作簿同名。 说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.Runtime.InteropServices.COMException: Microsoft Office Excel 不能访问文
2.权限设置
这是因为,默认IIS无法启动Office程序,所以,我们还要修改IIS。具体如下
1.以启明星电子文档看为例,系统默认使用edoc应用程序池。在edoc应用程序池上,修改应用程序池标识。使用内置的administrator账户。

2.2.1 在IIS应用程序池里找到 edoc,点击“高级设置”,在标识里选择 自定义用户,选择 “自定义账户”,选择 LocalSystem
2.2.2 在开始--〉运行--〉cmd
2.2.3 命令提示符下面,输入mmc -32,打开32的控制台
2.2.4 文件菜单中,添加删除管理单元--〉组件服务
2.2.5 在"DCOM配置"中找到"Microsoft Excel 应用程序", 在它上面点击右键,然后点击"属性",弹出"Microsoft Excel 应用程序属性"对话框
2.2.6 点击"标识"标签,选择"下列用户" ,然后选择“Administrator”
2.2.7 点击"安全"标签,在"启动和激活权限"上点击"自定义",然后点击对应的"编辑"按钮,在弹出的"安全性"对话框中填加一个"NETWORK SERVICE"用户(注意要选择本计算机名),并给它赋予"本地启动"和"本地激活"权限
2.2.8 依然是"安全"标签,在"访问权限"上点击"自定义",然后点击"编辑",在弹出的"安全性"对话框中也填加一个"NETWORK SERVICE"用户,然后赋予"本地访问"权限.
2.2.9 上面步骤主要是让启明星电子文档库能够操作Excel
2.2.10 重复上面2.2.5步骤,在"DCOM配置"中找到"Microsoft Word 97-2003 应用程序...点击属性。。。 以下步骤和上面设置Excel一样。
2.2.11 重复上面2.2.5步骤,在"DCOM配置"中找到"Microsoft PowerPoint 应用程序...点击属性。。。 以下步骤和上面设置Excel一样。
2.2.12 重启电脑
*在上面测试中,有时候能成功,有时候并未成功。
通过Pdf预览Excel或者word或者Powerpoint (C#将Office转换为PDF)的更多相关文章
- ASP.NET MVC在线预览Excel、Word、TXT、PDF文件
代码: using System; using System.Collections.Generic; using System.Linq; using System.Web; using Syste ...
- java实现在线预览--poi实现word、excel、ppt转html
java实现在线预览 - -之poi实现word.excel.ppt转html 简介 java实现在线预览功能是一个大家在工作中也许会遇到的需求,如果公司有钱,直接使用付费的第三方软件或者云在线预览服 ...
- 前端实现预览ppt,word,xls,pdf文件
1.前端实现pdf文件在线预览功能 ps:刚好工作上有这个需求,所以到处找了一下处理方案,大家有需要可以试一下这几种方案,找到合适自己的 方式一. pdf文件理论上可以在浏览器直接打开预览但是需要打开 ...
- 文档控件NTKO OFFICE 详细使用说明之预览Excel文件(查看、编辑、保存回服务器)
1.在线预览Excel文件 (1) 运行环境 ① 浏览器:支持IE7-IE11(平台版本还支持Chrome和Firefox) ② IE工具栏-Internet 选项:将www.ntko.com加入到浏 ...
- Winforn中使用FastReport实现点击导出按钮PDF预览并弹出另存为对话框
场景 FastReport安装包下载.安装.去除使用限制以及工具箱中添加控件: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/10 ...
- 在网页中预览excel表格文件
项目需求在前端页面中实现预览excel表格的功能,上网了解之后大致总结为一下几种方法. 1.office文档转换为pdf,再转swf,然后通过网页加载flash进行预览 2.通过 xlsx.js,js ...
- 浏览器实现PDF预览
1.使用jquery.media.js预览PDF <!DOCTYPE html> <html> <head> <meta charset="utf- ...
- PDF预览之PDFObject.js总结
get from:PDF预览之PDFObject.js总结 PDFObject.js - 将PDF嵌入到一个div内,而不是占据整个页面(要求浏览器支持显示PDF,不支持,可配置PDF.js来实现 ...
- Pdf预览功能实现(asp.net)
asp.net中使用 1.pdf预览功能实现的插件是pdfjs-1.5.188-dist //引入插件中相关的文件以及jquery文件 @section css{ <link rel=" ...
随机推荐
- 【转】git shell 命令大全
http://www.cnblogs.com/bugs/p/3384339.html 常用命令 git branch 查看本地所有分支 git status 查看当前状态 git commit 提交 ...
- JMeter中BeanShell的实际应用
使用Jmeter的BeanShell断言,把响应数据中的JSON跟数据库中的记录对比 很多时候我们需要把Response Data取到的 Json 字符串跟数据库里的对比,来验证接口的正确性,使用Be ...
- Python学习(十四) —— 并发编程
一.进程的概念 进程即正在执行的一个过程,进程是对正在运行的程序的一个抽象. 进程的概念起源于操作系统,是操作系统最核心的概念.操作系统的其它所有内容都是围绕进程的概念展开的. #必备的理论基础 #一 ...
- Codeforces 1140F Extending Set of Points 线段树 + 按秩合并并查集 (看题解)
Extending Set of Points 我们能发现, 如果把x轴y轴看成点, 那么答案就是在各个连通块里面的x轴的个数乘以y轴的个数之和. 然后就变成了一个并查集的问题, 但是这个题目里面有撤 ...
- HDU2732 Leapin' Lizards 网络流 最大流 SAP
原文链接http://www.cnblogs.com/zhouzhendong/p/8362002.html 题目传送门 - HDU2732 题意概括 给你一个网格,网格上的一些位置上有一只蜥蜴,所有 ...
- 用vs调式docker环境下web程序的一处坑
新建web项目,此时launchSettings.json文件为: "iisSettings": { "windowsAuthentication": fals ...
- 064 SparkStream与kafka的集成,主要是编程
这里面包含了如何在kafka+sparkStreaming集成后的开发,也包含了一部分的优化. 一:说明 1.官网 指导网址:http://spark.apache.org/docs/1.6.1/st ...
- day20 模块-sys,time,collection
所有常用模块的用法: http://www.cnblogs.com/Eva-J/articles/7228075.html 前情回顾: # 常用模块 # 常用模块 —— 东西多 # 异常处理 # 什 ...
- rock-paper-scissors
rock-paper-scissors维护三个前缀和,然后注意顺序,最后做差来确定可行的答案,因为答案比较小,可以考虑这种暴力做法,像这种方案数可以++的题真的不多,如果想不出来特别优秀的想法,不妨简 ...
- weblogic domain creation
管理服务器 URL: http://CICI-ThinkPad:7001 Domain Path: D:\Program Files\DEV\Oracle\Middleware\user_projec ...