关于Microsoft.Office.Interop.Word、Excel、PowerPoint实现转PDF在本地有效但部署到IIS后产生错误: 80070005 拒绝访问的问题的解决方案

在运行窗口输入comexp.msc -32打开32位组件服务。

在“组件服务”→“计算机”→“我的电脑”→“DCOM配置”下找到“Microsoft Excel Application”、“Microsoft PowerPoint 投影片”、“Microsoft Word 97 -2003 文件”(不需要Microsoft Word Application)并右键点开属性。

然后分别进行如下操作:

  1. “身份验证等级”设置为“无”。
  2. “安全”中“启动和激活权限”、“访问权限”、“配置权限”都使用自定义,并在自定义中加入Everyone,添加本地激活和远程激活的权限。
  3. 在“标识”中选择“使用下列使用者”并输入拥有权限的使用者账号与密码。
  4. 若以上设置还是不起作用,就在IIS的应用程序池找到当前项目右键“高级设置”将“应用程序池标识”改为“LocalSystem”。

PS:网上很多文章都说第3步要选择“交互式用户”,这个是没用的。此时只能在连接上服务器的时候转换文档成PDF,一旦断开连接,远程也就不能使用转换功能了,所以要选“使用下列使用者”。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
在C#中,如果不安装Office,可以使用开源的第三方库来实现Excel换为PDF,例如使用EPPlus和PdfSharp库。 EPPlus是一个免费的开源库,可以用于读写Excel文件。它可以在不安装Office的情况下读写Excel文件。要将Excel换为PDF,您需要使用EPPlus中的Worksheet对象,将其导出到PDF格式,并使用PdfSharp库将其保存为PDF文件。以下是一个示例代码: ```csharp using OfficeOpenXml; using PdfSharp.Drawing; using PdfSharp.Pdf; public void ConvertExcelToPdf(string excelFilePath, string pdfFilePath) { using (ExcelPackage package = new ExcelPackage(new FileInfo(excelFilePath))) { ExcelWorksheet worksheet = package.Workbook.Worksheets[1]; PdfDocument document = new PdfDocument(); PdfPage page = document.AddPage(); XGraphics gfx = XGraphics.FromPdfPage(page); XFont font = new XFont("Verdana", 8); XStringFormat format = new XStringFormat(); int y = 0; foreach (var row in worksheet.Cells.Rows) { int x = 0; foreach (var cell in row) { string value = cell.Value?.ToString() ?? string.Empty; gfx.DrawString(value, font, XBrushes.Black, new XRect(x, y, cell.Style.TextRotation == 0 ? cell.FullWidth : cell.FullHeight, cell.Style.TextRotation == 0 ? cell.FullHeight : cell.FullWidth), format); x += cell.Style.TextRotation == 0 ? cell.FullWidth : cell.FullHeight; } y += row.Height; } document.Save(pdfFilePath); } } ``` 另一个库是PdfSharp,它是一个免费的开源库,可以用于创建和处理PDF文件。您可以使用ExcelDataReader库读取Excel文件中的数据,并将其写入到PdfSharp的PdfDocument对象中。以下是一个示例代码: ```csharp using ExcelDataReader; using PdfSharp.Drawing; using PdfSharp.Pdf; public void ConvertExcelToPdf(string excelFilePath, string pdfFilePath) { using (var stream = File.Open(excelFilePath, FileMode.Open, FileAccess.Read)) { using (var reader = ExcelReaderFactory.CreateReader(stream)) { var document = new PdfDocument(); var page = document.AddPage(); var gfx = XGraphics.FromPdfPage(page); var font = new XFont("Verdana", 8); var format = new XStringFormat(); while (reader.Read()) { var y = reader.Depth * 15; for (int i = 0; i < reader.FieldCount; i++) { var x = i * 100; var value = reader.GetValue(i)?.ToString() ?? string.Empty; gfx.DrawString(value, font, XBrushes.Black, new XRect(x, y, 100, 15), format); } } document.Save(pdfFilePath); } } } ``` 请注意,这些库可能不支持所有的Excel功能,但它们可以满足大多数情况下的需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值