C#实现打印

C#实现导出pdf文件,打印




using
System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Data; using BusinessFacade; using System.IO; using Common.Table; using CrystalDecisions.Shared; using CrystalDecisions.CrystalReports.Engine; public partial class Pages_ReportFile_BhXjspf_XjspfCheckList : PageBase { ReportDocument myReportDoc = new ReportDocument(); private void SetParameterValue(string strColumn, string strValue) { myReportDoc.SetParameterValue(strColumn, strValue); } protected void Page_Load(object sender, EventArgs e) { if (!Page.IsPostBack) { string strResult0 = ""; string strResult1 = ""; string strResult2 = ""; string strBuildArea = string.Empty; string strHouseCount = string.Empty; string strPerBuild = string.Empty; string strPage = string.Empty; string strCount = string.Empty; this.CheckPageParameter(); string strError = string.Empty; PrintSystem mySystem = new PrintSystem(base.UserSessionID); DataSet myData = new DataSet(); myData = mySystem.mothed(this.GetSessionParameterValue("FILE_ID"), out strError); if (!string.IsNullOrEmpty(strError)) { webTools.InsertAlert(this.Page, webTools.FilterInvalidString(strError)); webTools.closewin(this.Page); return; } myData.Tables[LY_ZG_XJSPF_TABLE.LY_ZG_XJSPF_TABLENAME].Columns.Add("QRCODE", typeof(System.Byte[])); myData.Tables[LY_ZG_XJSPF_TABLE.LY_ZG_XJSPF_TABLENAME].Rows[0]["QRCODE"] = ProductQR(myData); myData.AcceptChanges(); if (!string.IsNullOrEmpty(myData.Tables[0].Rows[0]["GZ_RESULT"].ToString())) { switch (myData.Tables[0].Rows[0]["GZ_RESULT"].ToString()) { case "0": strResult0 = ""; strResult1 = "×"; strResult2 = "×"; break; case "1": strResult1 = ""; strResult0 = "×"; strResult2 = "×"; break; case "2": strResult2 = ""; strResult0 = "×"; strResult1 = "×"; break; } } for (int i = 0; i < myData.Tables[LY_FAMILYHOUSEINFORMATION_TABLE.LY_FAMILYHOUSEINFORMATION_TABLENAME].Rows.Count; i++) { strHouseCount = myData.Tables[2].Rows[i]["HouseCount"].ToString(); if (!string.IsNullOrEmpty(myData.Tables[2].Rows[i]["SumIDENTIFIEDAREA"].ToString())) { strPerBuild = Convert.ToString(Math.Round((Convert.ToDouble(myData.Tables[2].Rows[i]["SumIDENTIFIEDAREA"].ToString()) / Convert.ToDouble(myData.Tables[0].Rows[0]["PersonCount"].ToString())), 2)); strBuildArea = myData.Tables[2].Rows[i]["SumIDENTIFIEDAREA"].ToString(); } } for (int i = 0; i < myData.Tables[LY_H_RECEIVE_TABLE.LY_H_RECEIVE_TABLENAME].Rows.Count; i++) { strCount = myData.Tables[3].Rows[i]["counts"].ToString(); strPage = myData.Tables[3].Rows[i]["pages"].ToString(); } myReportDoc.Load(Server.MapPath(@"rptxjspfChecklist.rpt")); myReportDoc.SetDataSource(myData);//这里必须先设置数据源,然后再设置参数,否则报‘找不到参数’的错误 myReportDoc.SetParameterValue("Result0", strResult0); myReportDoc.SetParameterValue("Result1", strResult1); myReportDoc.SetParameterValue("Result2", strResult2); myReportDoc.SetParameterValue("BuildArea", strBuildArea); myReportDoc.SetParameterValue("HouseCount", strHouseCount); myReportDoc.SetParameterValue("PerBuild", strPerBuild); myReportDoc.SetParameterValue("page", strPage); myReportDoc.SetParameterValue("count", strCount); try { DiskFileDestinationOptions myDestinationFile = new DiskFileDestinationOptions(); string filename = ""; filename = System.DateTime.Now.ToString("yyyyMMddhhmmssfff") + ".pdf"; Stream stream = myReportDoc.ExportToStream(ExportFormatType.PortableDocFormat); byte[] bytes = new byte[stream.Length]; stream.Read(bytes, 0, bytes.Length); stream.Close(); String contentType = "application/octet-stream"; Response.Clear(); Response.ClearContent(); Response.ClearHeaders(); Response.Buffer = false; Response.AddHeader("Content-Disposition", "attachment; filename=" + filename); Response.AddHeader("Content-Length", bytes.Length.ToString()); Response.Charset = "GB2312"; Response.ContentType = contentType; Response.BinaryWrite(bytes); Response.Flush(); Response.End(); } catch (System.Exception exp) { throw exp; } } } private byte[] ProductQR(DataSet myData) { DataTable mytable = myData.Tables[0]; string strFILE_ID = mytable.Rows[0][LY_ZG_XJSPF_TABLE.FILE_ID_FIELD].ToString().Trim(); string strRegister_num = mytable.Rows[0][LY_ZG_XJSPF_TABLE.REGISTER_NUM_FIELD].ToString().Trim(); #region 设置QR码 string strCode = strRegister_num + "\r\n";//"审核表编号:" + strCode += strFILE_ID + "\r\n";//"收件号:" + QRCode.Service1 QrCode = new QRCode.Service1(); return QrCode.GetQrCode(strCode); #endregion } private void Page_UnLoad(object sender, System.EventArgs e) { if (myReportDoc != null) { myReportDoc.Close(); myReportDoc.Dispose(); } } }
1.注意rpt中的数据库专家中的xsd文件的类名必须和访问数据库返回的表名必须相同,否则会报登录数据库失败的错误
见了他,她变得很低很低,低到尘埃里。但她心里是欢喜的,从尘埃里开出花来。魂牵梦绕,辗转反侧,可越是这样执着的爱,越是让我束手无策,无法表达,成就一段烽火佳话,迎接她
包含深情炙热的眼光吧

 

posted @ 2019-01-07 21:59  王小鹏  阅读(11543)  评论(0编辑  收藏  举报