一: 先跑下程序看下效果。
二:下面我就来一步一讲解了。
1.新建一个项目,项目名i169_Web
2.新建一个WEB页面,名称为i169_web.aspx
3.新建一个dataset,名称为DataSet1.xsd
在工具箱中把element控件拖放到主窗口中。进行如下设定:
保存。(记得一定要保存)
4.新建一个水晶报表文件,名称为CR_i169.rpt,作为空白报表点确定。
添加/删除数据库,选择刚开始我们创建的DataSet1.xsd,保存。(其实这个时候你可以把DataSet1.xsd文件删除掉。当然不删除也没关系。但是这个时候它已经是没用的东西)
5.回到刚开始我们创建的i169_web.aspx这个页面,双击进入代码页面。
添加命名空间
using System.Data.SqlClient;
using CrystalDecisions.CrystalReports.Engine;
using CrystalDecisions.Shared;
using System.Drawing.Printing;
给报表文件创建一个实例
我们先添加一个返回表的方法
... {
DataTable dt = new DataTable();
DataRow dr;
dt.Columns.Add(new DataColumn("i169_01", typeof(string)));
dt.Columns.Add(new DataColumn("i169_02", typeof(string)));
dt.Columns.Add(new DataColumn("i169_03", typeof(string)));
dt.Columns.Add(new DataColumn("i169_04", typeof(string)));
dt.Columns.Add(new DataColumn("i169_05", typeof(string)));
dt.Columns.Add(new DataColumn("i169_06", typeof(string)));
dt.Columns.Add(new DataColumn("i169_07", typeof(string)));
dt.Columns.Add(new DataColumn("i169_08", typeof(string)));
dt.Columns.Add(new DataColumn("i169_09", typeof(string)));
dt.Columns.Add(new DataColumn("i169_10", typeof(string)));
dt.Columns.Add(new DataColumn("i169_11", typeof(string)));
dt.Columns.Add(new DataColumn("i169_12", typeof(string)));
dt.Columns.Add(new DataColumn("i169_13", typeof(string)));
dt.Columns.Add(new DataColumn("i169_14", typeof(string)));
dt.Columns.Add(new DataColumn("i169_15", typeof(string)));
dt.Columns.Add(new DataColumn("i169_16", typeof(string)));
dt.Columns.Add(new DataColumn("i169_17", typeof(string)));
dt.Columns.Add(new DataColumn("i169_18", typeof(string)));
dt.Columns.Add(new DataColumn("i169_19", typeof(string)));
dr = dt.NewRow();
// dr[0] = Session["i169_01"]+"";
// dr[1] = Session["i169_02"]+"";
// dr[2] = Session["i169_03"]+"";
// dr[3] = Session["i169_04"]+"";
// dr[4] = Session["i169_05"]+"";
// dr[5] = Session["i169_06"]+"";
// dr[6] = Session["i169_07"]+"";
// dr[7] = Session["i169_08"]+"";
// dr[8] = Session["i169_09"]+"";
// dr[9] = Session["i169_10"]+"";
// dr[10] = Session["i169_11"]+"";
// dr[11] = Session["i169_12"]+"";
// dr[12] = Session["i169_13"]+"";
// dr[13] = Session["i169_14"]+"";
// dr[14] = Session["i169_15"]+"";
// dr[15] = Session["i169_16"]+"";
// dr[16] = Session["i169_17"]+"";
// dr[17] = Session["i169_18"]+"";
// dr[18] = Session["i169_19"]+"";
dr[0] = "*"+"37343042"+"*";
dr[1] = "37343042";
dr[2] = "2007/08/24";
dr[3] = "深圳龍華[布吉]站";
dr[4] = "雷小姐";
dr[5] = "5112008";
dr[6] = "松井塑膠製品有限公司全域製造廠";
dr[7] = "深圳市龍崗坪地鎮";
dr[8] = "0755-4073767";
dr[9] = "雷小姐";
dr[10] = "5112008";
dr[11] = "松井塑膠製品有限公司全域製造廠";
dr[12] = "深圳市龍崗坪地鎮";
dr[13] = "0755-4073767";
dr[14] = "深圳龍華[布吉]站";
dr[15] = "√";
dr[16] = "";
dr[17] = "";
dr[18] = "√";
dt.Rows.Add(dr);
return dt;
}
再写一个报表绑定数据集的方法
... {
DataTable i169 = CreateDataSource();
DataSet ds=new DataSet();
ds.Tables.Add(i169);
ds.Tables[0].TableName = "i169";
ReportDoc = new CR_i169();
ReportDoc.SetDataSource(ds);
//this.CrystalReportViewer1.ReportSource=ReportDoc;
}
再写一个转PDF的方法
... {
string sDestFile = Path.GetTempFileName();
DiskFileDestinationOptions diskOpts = new DiskFileDestinationOptions();
diskOpts.DiskFileName = sDestFile;
ReportDoc.ExportOptions.ExportDestinationType = ExportDestinationType.DiskFile;
ReportDoc.ExportOptions.ExportFormatType = ExportFormatType.PortableDocFormat;
ReportDoc.ExportOptions.DestinationOptions = diskOpts;
ReportDoc.Export();
Response.ClearContent();
Response.ClearHeaders();
Response.ContentType = "application/pdf";
Response.WriteFile(sDestFile);
Response.Flush();
Response.Close();
File.Delete(sDestFile);
}
最后在Page_Load写代码
... {
// 在這裡放置使用者程式碼以初始化網頁
printers();
Pdf();
}
而有关水晶报表里面的设定你看图:
完整代码如下:
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.IO;
using System.Data.SqlClient;
using CrystalDecisions.CrystalReports.Engine;
using CrystalDecisions.Shared;
using System.Drawing.Printing;
namespace i169_Web
... {
/**//// <summary>
/// WebForm1 的摘要描述。
/// </summary>
public class WebForm1 : System.Web.UI.Page
...{
CR_i169 ReportDoc=new CR_i169();
private void Page_Load(object sender, System.EventArgs e)
...{
// 在這裡放置使用者程式碼以初始化網頁
printers();
Pdf();
}
private void Pdf()
...{
string sDestFile = Path.GetTempFileName();
DiskFileDestinationOptions diskOpts = new DiskFileDestinationOptions();
diskOpts.DiskFileName = sDestFile;
ReportDoc.ExportOptions.ExportDestinationType = ExportDestinationType.DiskFile;
ReportDoc.ExportOptions.ExportFormatType = ExportFormatType.PortableDocFormat;
ReportDoc.ExportOptions.DestinationOptions = diskOpts;
ReportDoc.Export();
Response.ClearContent();
Response.ClearHeaders();
Response.ContentType = "application/pdf";
Response.WriteFile(sDestFile);
Response.Flush();
Response.Close();
File.Delete(sDestFile);
}
private void printers()
...{
DataTable i169 = CreateDataSource();
DataSet ds=new DataSet();
ds.Tables.Add(i169);
ds.Tables[0].TableName = "i169";
ReportDoc = new CR_i169();
ReportDoc.SetDataSource(ds);
//this.CrystalReportViewer1.ReportSource=ReportDoc;
}
private DataTable CreateDataSource( )
...{
DataTable dt = new DataTable();
DataRow dr;
dt.Columns.Add(new DataColumn("i169_01", typeof(string)));
dt.Columns.Add(new DataColumn("i169_02", typeof(string)));
dt.Columns.Add(new DataColumn("i169_03", typeof(string)));
dt.Columns.Add(new DataColumn("i169_04", typeof(string)));
dt.Columns.Add(new DataColumn("i169_05", typeof(string)));
dt.Columns.Add(new DataColumn("i169_06", typeof(string)));
dt.Columns.Add(new DataColumn("i169_07", typeof(string)));
dt.Columns.Add(new DataColumn("i169_08", typeof(string)));
dt.Columns.Add(new DataColumn("i169_09", typeof(string)));
dt.Columns.Add(new DataColumn("i169_10", typeof(string)));
dt.Columns.Add(new DataColumn("i169_11", typeof(string)));
dt.Columns.Add(new DataColumn("i169_12", typeof(string)));
dt.Columns.Add(new DataColumn("i169_13", typeof(string)));
dt.Columns.Add(new DataColumn("i169_14", typeof(string)));
dt.Columns.Add(new DataColumn("i169_15", typeof(string)));
dt.Columns.Add(new DataColumn("i169_16", typeof(string)));
dt.Columns.Add(new DataColumn("i169_17", typeof(string)));
dt.Columns.Add(new DataColumn("i169_18", typeof(string)));
dt.Columns.Add(new DataColumn("i169_19", typeof(string)));
dr = dt.NewRow();
// dr[0] = Session["i169_01"]+"";
// dr[1] = Session["i169_02"]+"";
// dr[2] = Session["i169_03"]+"";
// dr[3] = Session["i169_04"]+"";
// dr[4] = Session["i169_05"]+"";
// dr[5] = Session["i169_06"]+"";
// dr[6] = Session["i169_07"]+"";
// dr[7] = Session["i169_08"]+"";
// dr[8] = Session["i169_09"]+"";
// dr[9] = Session["i169_10"]+"";
// dr[10] = Session["i169_11"]+"";
// dr[11] = Session["i169_12"]+"";
// dr[12] = Session["i169_13"]+"";
// dr[13] = Session["i169_14"]+"";
// dr[14] = Session["i169_15"]+"";
// dr[15] = Session["i169_16"]+"";
// dr[16] = Session["i169_17"]+"";
// dr[17] = Session["i169_18"]+"";
// dr[18] = Session["i169_19"]+"";
dr[0] = "*"+"37343042"+"*";
dr[1] = "37343042";
dr[2] = "2007/08/24";
dr[3] = "深圳龍華[布吉]站";
dr[4] = "雷小姐";
dr[5] = "5112008";
dr[6] = "松井塑膠製品有限公司全域製造廠";
dr[7] = "深圳市龍崗坪地鎮";
dr[8] = "0755-4073767";
dr[9] = "雷小姐";
dr[10] = "5112008";
dr[11] = "松井塑膠製品有限公司全域製造廠";
dr[12] = "深圳市龍崗坪地鎮";
dr[13] = "0755-4073767";
dr[14] = "深圳龍華[布吉]站";
dr[15] = "√";
dr[16] = "";
dr[17] = "";
dr[18] = "√";
dt.Rows.Add(dr);
return dt;
}
Web Form 設計工具產生的程式碼#region Web Form 設計工具產生的程式碼
override protected void OnInit(EventArgs e)
...{
//
// CODEGEN: 此為 ASP.NET Web Form 設計工具所需的呼叫。
//
InitializeComponent();
base.OnInit(e);
}
/**//// <summary>
/// 此為設計工具支援所必須的方法 - 請勿使用程式碼編輯器修改
/// 這個方法的內容。
/// </summary>
private void InitializeComponent()
...{
this.Load += new System.EventHandler(this.Page_Load);
}
#endregion
}
}
-----破晓之阳原创
2007/08/25