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)的更多相关文章

  1. ASP.NET MVC在线预览Excel、Word、TXT、PDF文件

    代码: using System; using System.Collections.Generic; using System.Linq; using System.Web; using Syste ...

  2. java实现在线预览--poi实现word、excel、ppt转html

    java实现在线预览 - -之poi实现word.excel.ppt转html 简介 java实现在线预览功能是一个大家在工作中也许会遇到的需求,如果公司有钱,直接使用付费的第三方软件或者云在线预览服 ...

  3. 前端实现预览ppt,word,xls,pdf文件

    1.前端实现pdf文件在线预览功能 ps:刚好工作上有这个需求,所以到处找了一下处理方案,大家有需要可以试一下这几种方案,找到合适自己的 方式一. pdf文件理论上可以在浏览器直接打开预览但是需要打开 ...

  4. 文档控件NTKO OFFICE 详细使用说明之预览Excel文件(查看、编辑、保存回服务器)

    1.在线预览Excel文件 (1) 运行环境 ① 浏览器:支持IE7-IE11(平台版本还支持Chrome和Firefox) ② IE工具栏-Internet 选项:将www.ntko.com加入到浏 ...

  5. Winforn中使用FastReport实现点击导出按钮PDF预览并弹出另存为对话框

    场景 FastReport安装包下载.安装.去除使用限制以及工具箱中添加控件: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/10 ...

  6. 在网页中预览excel表格文件

    项目需求在前端页面中实现预览excel表格的功能,上网了解之后大致总结为一下几种方法. 1.office文档转换为pdf,再转swf,然后通过网页加载flash进行预览 2.通过 xlsx.js,js ...

  7. 浏览器实现PDF预览

    1.使用jquery.media.js预览PDF <!DOCTYPE html> <html> <head> <meta charset="utf- ...

  8. PDF预览之PDFObject.js总结

    get from:PDF预览之PDFObject.js总结   PDFObject.js - 将PDF嵌入到一个div内,而不是占据整个页面(要求浏览器支持显示PDF,不支持,可配置PDF.js来实现 ...

  9. Pdf预览功能实现(asp.net)

    asp.net中使用 1.pdf预览功能实现的插件是pdfjs-1.5.188-dist //引入插件中相关的文件以及jquery文件 @section css{ <link rel=" ...

随机推荐

  1. Codeforces 865C Gotta Go Fast 二分 + 期望dp (看题解)

    第一次看到这种骚东西, 期望还能二分的啊??? 因为存在重置的操作, 所以我们再dp的过程中有环存在. 为了消除环的影响, 我们二分dp[ 0 ][ 0 ]的值, 与通过dp得出的dp[ 0 ][ 0 ...

  2. Codeforces 1132E (看题解)

    感觉这个题挺有意思的, 我们可以将 L = lcm(1, 2, 3, ... , 8) 看作一组. 然后用dp[ i ][ j ]表示到第 i 种物品当前的值为 j 能用L的最大数量. #includ ...

  3. React 入门实例教程(转载)

    现在最热门的前端框架,毫无疑问是 React . 上周,基于 React 的 React Native 发布,结果一天之内,就获得了 5000 颗星,受瞩目程度可见一斑. React 起源于 Face ...

  4. BZOJ3796 Mushroom追妹纸 字符串 SA KMP

    原文链接https://www.cnblogs.com/zhouzhendong/p/9253173.html 题目传送门 - BZOJ3796 题意 找一个串 $w$ 满足: 1.$w$ 是 $s_ ...

  5. AtCoder Regular Contest 099 (ARC099) E - Independence 二分图

    原文链接https://www.cnblogs.com/zhouzhendong/p/9224878.html 题目传送门 - ARC099 E - Independence 题意 给定一个有 $n$ ...

  6. JavaEE 之 Spring Data JPA(二)

    1.JPQL a.定义:Java持久化查询语言(JPQL)是一种可移植的查询语言,旨在以面向对象表达式语言的表达式,将SQL语法和简单查询语义绑定在一起·使用这种语言编写的查询是可移植的,可以被编译成 ...

  7. 关于go get安装git golang项目时报错的处理办法

    关于go get安装git golang项目时报错的处理办法 使用go get安装github上的项目时一般来说,不可避免会出错.各种错误的处理办法: 必须条件: 1.安装git并配置环境变量.下载地 ...

  8. Springboot集成ES启动报错

    报错内容 None of the configured nodes are available elasticsearch.yml配置 cluster.name: fans node.name: no ...

  9. Hystrix快速入门

    祝大家国庆快乐! 对大部分电商和快递公司来说,每年年底(Q4季度)由于双11等大促活动的存在,将面对大量的用户流量,尤其是属于大促的那几天,无论是用户的商品订单还是物流订单,都将是平时的3倍以上.对于 ...

  10. TensorFlow下利用MNIST训练模型并识别自己手写的数字

    最近一直在学习李宏毅老师的机器学习视频教程,学到和神经网络那一块知识的时候,我觉得单纯的学习理论知识过于枯燥,就想着自己动手实现一些简单的Demo,毕竟实践是检验真理的唯一标准!!!但是网上很多的与t ...