您的位置:首页 > 其它

水晶报表导出PDF or Excel,并返回文件到用户的IE浏览器中

2007-08-22 13:54 656 查看
水晶报表导出PDF or Excel,并返回文件到用户的IE浏览器中
导读:
usingSystem;
usingSystem.Collections;
usingSystem.ComponentModel;
usingSystem.Data;
usingSystem.Drawing;
usingSystem.Web;
usingSystem.Web.SessionState;
usingSystem.Web.UI;
usingSystem.Web.UI.WebControls;
usingSystem.Web.UI.HtmlControls;
usingCrystalDecisions.Shared;
usingCrystalDecisions.CrystalReports.Engine;
namespaceMinKe.Library
{
//=========================================================
// File: WebForm1.aspx // Version:0.0
// Date: 2003-1-15
// Script Written by satan
//=========================================================
// Copyright (C) 2001,2002 www.LionSky.Net. All rights reserved.
// Web: http://www.Lionsky.net,http://www.Lionsky.net/MyWebSite/Index.Aspx
// Email: lion-a@sohu.com
//=========================================================
///<summary>
///WebForm1 的摘要说明。
///</summary>
publicclassWebForm1 : System.Web.UI.Page
{
protectedCrystalDecisions.Web.CrystalReportViewer CrystalReportViewer1;
privateCrystalDecisions.CrystalReports.Engine.ReportDocument ReportDoc;
privateTableLogOnInfo logOnInfo;
privateDiskFileDestinationOptions FileOPS;
protectedSystem.Web.UI.WebControls.Button Button1;
privateExportOptions ExOPS;
publicWebForm1()
{
//
// TODO: 在此处添加构造函数逻辑
//
ReportDoc=newReportDocument();
logOnInfo=newTableLogOnInfo();
FileOPS=newDiskFileDestinationOptions();
}
///<summary>
///导出报表文件为PDF格式
///</summary>
///<param name="ReportFile">报表文件名称,调用时请使用Server.MapPath("报表文件.rpt")这样来给这个参数</param>
///<param name="ReportDataSource">报表文件所使用的数据源,是一个Dataset</param>
///<param name="PDFFileName">你要导成的目标文件名称,注意不要放在wwwroot等目录中,iis会不让你导出的</param>
///<returns>bool成功返回true,失败返回false</returns>
publicboolExportToPDF(stringReportFile,objectReportDataSource,stringPDFFileName)
{
try
{
ReportDoc.Load(ReportFile);
ReportDoc.SetDataSource(ReportDataSource);
FileOPS.DiskFileName=PDFFileName;
ExOPS=ReportDoc.ExportOptions;
ExOPS.DestinationOptions=FileOPS;
ExOPS.ExportDestinationType=CrystalDecisions.Shared.ExportDestinationType.DiskFile;
ExOPS.ExportFormatType=CrystalDecisions.Shared.ExportFormatType.PortableDocFormat;
ReportDoc.Export();
returntrue
}
catch
{
returnfalse
}
}
///<summary>
///导出报表文件到Excel格式
///</summary>
///<param name="ReportFile">报表文件名称,调用时请使用Server.MapPath("报表文件.rpt")这样来给这个参数</param>
///<param name="ReportDataSource">报表文件所使用的数据源,是一个Dataset</param>
///<param name="ExcelFileName">你要导成的目标文件名称,注意不要放在wwwroot等目录中,iis会不让你导出的</param>
///<returns>成功返回true失败返回false</returns>
publicboolExportToExcel(stringReportFile,objectReportDataSource,stringExcelFileName)
{
try
{
ReportDoc.Load(ReportFile);
ReportDoc.SetDataSource(ReportDataSource);
FileOPS.DiskFileName=ExcelFileName;
ExOPS=ReportDoc.ExportOptions;
ExOPS.DestinationOptions=FileOPS;
ExOPS.ExportDestinationType=CrystalDecisions.Shared.ExportDestinationType.DiskFile;
ExOPS.ExportFormatType=CrystalDecisions.Shared.ExportFormatType.Excel;
ReportDoc.Export();
returntrue
}
catch
{
returnfalse
}
}
///<summary>
///返回PDF文件到用户的IE浏览器中
///</summary>
///<param name="ReportFile">报表文件名称,调用时请使用Server.MapPath("报表文件.rpt")这样来给这个参数</param>
///<param name="ReportDataSource">报表文件所使用的数据源,是一个Dataset</param>
///<param name="page">用于显示PDF WebForm</param>
///<returns></returns>
publicboolReturnPDF(stringReportFile,objectReportDataSource,System.Web.UI.Page page)
{
inttemp;
temp=System.Convert.ToInt32(System.DateTime.Now.Millisecond.ToString());
System.Random ra=newSystem.Random(temp);
intTmpNumber=ra.Next();
stringTmpPDFFileName="c://"+System.Convert.ToString(TmpNumber)+".pdf";
if(ExportToPDF(ReportFile,ReportDataSource,TmpPDFFileName)==true)
{
page.Response.ClearContent();
page.Response.ClearHeaders();
page.Response.ContentType="application/pdf";
page.Response.WriteFile(TmpPDFFileName);
page.Response.Flush();
page.Response.Close();
System.IO.File.Delete(TmpPDFFileName);
returntrue
}
else
{
returnfalse
}
}
///<summary>
///返回Excel文件到用户的IE浏览器中
///</summary>
///<param name="ReportFile"></param>
///<param name="ReportDataSource"></param>
///<param name="page"></param>
///<returns></returns>
publicboolReturnExcel(stringReportFile,objectReportDataSource,System.Web.UI.Page page)
{
inttemp;
temp=System.Convert.ToInt32(System.DateTime.Now.Millisecond.ToString());
System.Random ra=newSystem.Random(temp);
intTmpNumber=ra.Next();
stringTmpExcelFileName="c://"+System.Convert.ToString(TmpNumber)+".xls";
if(ExportToExcel(ReportFile,ReportDataSource,TmpExcelFileName)==true)
{
page.Response.ClearContent();
page.Response.ClearHeaders();
page.Response.ContentType="application/xls";
page.Response.WriteFile(TmpExcelFileName);
page.Response.Flush();
page.Response.Close();
System.IO.File.Delete(TmpExcelFileName);
returntrue
}
else
{
returnfalse
}
}
privatevoidPage_Load(objectsender, System.EventArgs e)
{
}
#regionWeb Form Designer generated code
overrideprotectedvoidOnInit(EventArgs e)
{
//
// CODEGEN:该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}
///<summary>
///设计器支持所需的方法 - 不要使用代码编辑器修改
///此方法的内容。
///</summary>
privatevoidInitializeComponent()
{
this.Button1.Click += newSystem.EventHandler(this.Button1_Click);
this.Load += newSystem.EventHandler(this.Page_Load);
}
#endregion
privatevoidButton1_Click(objectsender, System.EventArgs e)
{
MinKe.Data.Db list = newMinKe.Data.Db();
//此处生成PDF文件,list.GetView方法返回一个查询后的DataView数据集
ExportToPDF(Server.MapPath("Report1.rpt"),list.GetView("Select G_B_ID,G_B_Class,G_B_Name,G_B_Sex,G_B_Address,G_B_A_Date,G_B_D_Date From G_Bury Where G_B_ID<200","aa").Table,"c://test.pdf");
//此处返回PDF文件,到客户端的IE中,客户端必须要安装Acrobat才可浏览
ReturnPDF(Server.MapPath("Report1.rpt"),list.GetView("Select G_B_ID,G_B_Class,G_B_Name,G_B_Sex,G_B_Address,G_B_A_Date,G_B_D_Date From G_Bury Where G_B_ID<200","aa").Table,this);
//------生成Excel并返回到IE中的方法和上面相同,分别调用ExportToExcel和ReturnExcel方法--------
}
}
}
本文转自
http://blog.5d.cn/vip/yiyo3/200706/414046.html
标签词:
param PDF文件 name summary IE浏览器 调用 ReportDataSource ReportFile returns 文件名称
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐