Excel转PDF编程中ExportAsFixedFormat问题

attidust 2012-06-28 06:11:16
在MSDN上看Excel2007可以将xlsx文件转换为pdf文件,还有参考编码:

http://msdn.microsoft.com/en-us/library/bb407651(v=office.12).aspx

于是就照着这个编了一通,结果调试时候报错,ex.message:出现异常值不在预期的范围内
代码如下,很简单,就是把网站根目录下的一个.xlsx文件转为pdf,源文件在,打开正常,但是保存时候出错。

期待高手看看,哪里写的不对,先谢谢拉!


using System;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using Microsoft.Office.Interop.Excel;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;

public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{

}
protected void Button1_Click(object sender, EventArgs e)
{
//Creating an Instance of the ApplicationClass Object
Microsoft.Office.Interop.Excel.ApplicationClass excelApplication = new Microsoft.Office.Interop.Excel.ApplicationClass();
Microsoft.Office.Interop.Excel.Workbook excelWorkBook = null;

//Declaring the Appropriate Variables for open
string paramSourceBookPath = Server.MapPath("MBAP.xlsx");
object paramMissing = Type.Missing;

//Declaring the Appropriate Variables for ExportAsFixedFormat
string paramExportFilePath = Server.MapPath("test.pdf") ;
Microsoft.Office.Interop.Excel.XlFixedFormatType paramExportFormat = Microsoft.Office.Interop.Excel.XlFixedFormatType.xlTypePDF;
Microsoft.Office.Interop.Excel.XlFixedFormatQuality paramExportQuality = Microsoft.Office.Interop.Excel.XlFixedFormatQuality.xlQualityStandard;
bool paramOpenAfterPublish = false;
bool paramIncludeDocProps = true;
bool paramIgnorePrintAreas = true;
object paramFromPage = Type.Missing;
object paramToPage = Type.Missing;

try
{
// Open the source workbook.
excelWorkBook = excelApplication.Workbooks.Open(paramSourceBookPath,
paramMissing, paramMissing, paramMissing, paramMissing,
paramMissing, paramMissing, paramMissing, paramMissing,
paramMissing, paramMissing, paramMissing, paramMissing,
paramMissing, paramMissing);

//set alert to monitor program
Response.Write("<script>alert('完成打开xlsx')</script>");

// Save it in the target format.
if (excelWorkBook != null)
excelWorkBook.ExportAsFixedFormat(paramExportFormat,
paramExportFilePath, paramExportQuality,
paramIncludeDocProps, paramIgnorePrintAreas, paramFromPage,
paramToPage, paramOpenAfterPublish,
paramMissing);

//set alert to monitor program
Response.Write("<script>alert('已经保存Pdf')</script>");

}
catch (Exception ex)
{
// Respond to the error.
Response.Write("<script>alert('运行出错"+ex.Message+"')</script>");

}
finally
{
// Close the workbook object.
if (excelWorkBook != null)
{
excelWorkBook.Close(false, paramMissing, paramMissing);
excelWorkBook = null;
}

// Quit Excel and release the ApplicationClass object.
if (excelApplication != null)
{
excelApplication.Quit();
excelApplication = null;
}

GC.Collect();
GC.WaitForPendingFinalizers();
GC.Collect();
GC.WaitForPendingFinalizers();
}


}
}

...全文
4312 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
会飞的于 2014-12-24
  • 打赏
  • 举报
回复
引用 2 楼 wodecuoshi230 的回复:
需要安装office 2007 还有一个office2007的插件OfficeSaveAsPDFandXPS,安装完成之后,运行你的代码,下一秒就是见证奇迹的时刻。 下载地址 http://www.microsoft.com/downloads/details.aspx?FamilyId=4D951911-3E7E-4AE6-B059-A2E79ED87041&displaylang=en
我安装的是office2010,有且仅能找到2007版的组件。安装后无法解决楼主的问题。
yanhongxing1990 2013-09-23
  • 打赏
  • 举报
回复
引用 2 楼 wodecuoshi230 的回复:
需要安装office 2007 还有一个office2007的插件OfficeSaveAsPDFandXPS,安装完成之后,运行你的代码,下一秒就是见证奇迹的时刻。 下载地址 http://www.microsoft.com/downloads/details.aspx?FamilyId=4D951911-3E7E-4AE6-B059-A2E79ED87041&displaylang=en
做程序肯定要给别人用的 , 那是不是客户机都要装这个才行啊?
DraculaDzh 2012-07-12
  • 打赏
  • 举报
回复
我是用office2010做的,运行成功没有问题, 昨天把office2012卸载了, 然后装了个新的,结果就悲剧了 Word和ppt转换没有问题 xls就一直报错 组建注册失败...
ray924922279 2012-06-28
  • 打赏
  • 举报
回复
Microsoft.Office.Interop.Excel.XlFixedFormatType paramExportFormat = Microsoft.Office.Interop.Excel.XlFixedFormatType.xlTypePDF;
Microsoft.Office.Interop.Excel.XlFixedFormatQuality paramExportQuality = Microsoft.Office.Interop.Excel.XlFixedFormatQuality.xlQualityStandard;

应该是enum类型

enum Microsoft.Office.Interop.Excel.XlFixedFormatType paramExportFormat = enum Microsoft.Office.Interop.Excel.XlFixedFormatType.xlTypePDF;
enum Microsoft.Office.Interop.Excel.XlFixedFormatQuality paramExportQuality = enum Microsoft.Office.Interop.Excel.XlFixedFormatQuality.xlQualityStandard;
attidust 2012-06-28
  • 打赏
  • 举报
回复
按照三楼做法实验一下,解决,谢谢楼上各位!
wodecuoshi230 2012-06-28
  • 打赏
  • 举报
回复

需要安装office 2007 还有一个office2007的插件OfficeSaveAsPDFandXPS,安装完成之后,运行你的代码,下一秒就是见证奇迹的时刻。

下载地址

http://www.microsoft.com/downloads/details.aspx?FamilyId=4D951911-3E7E-4AE6-B059-A2E79ED87041&displaylang=en

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧