1. C#实现导出pdf文件,打印
  2.  
  3. using System;
  4. using System.Collections.Generic;
  5. using System.Linq;
  6. using System.Web;
  7. using System.Web.UI;
  8. using System.Web.UI.WebControls;
  9. using System.Data;
  10. using BusinessFacade;
  11. using System.IO;
  12. using Common.Table;
  13. using CrystalDecisions.Shared;
  14. using CrystalDecisions.CrystalReports.Engine;
  15.  
  16. public partial class Pages_ReportFile_BhXjspf_XjspfCheckList : PageBase
  17. {
  18. ReportDocument myReportDoc = new ReportDocument();
  19. private void SetParameterValue(string strColumn, string strValue)
  20. {
  21. myReportDoc.SetParameterValue(strColumn, strValue);
  22. }
  23. protected void Page_Load(object sender, EventArgs e)
  24. {
  25.  
  26. if (!Page.IsPostBack)
  27. {
  28. string strResult0 = "";
  29. string strResult1 = "";
  30. string strResult2 = "";
  31.  
  32. string strBuildArea = string.Empty;
  33.  
  34. string strHouseCount = string.Empty;
  35. string strPerBuild = string.Empty;
  36. string strPage = string.Empty;
  37. string strCount = string.Empty;
  38.  
  39. this.CheckPageParameter();
  40. string strError = string.Empty;
  41. PrintSystem mySystem = new PrintSystem(base.UserSessionID);
  42. DataSet myData = new DataSet();
  43. myData = mySystem.mothed(this.GetSessionParameterValue("FILE_ID"), out strError);
  44. if (!string.IsNullOrEmpty(strError))
  45. {
  46. webTools.InsertAlert(this.Page, webTools.FilterInvalidString(strError));
  47. webTools.closewin(this.Page);
  48. return;
  49. }
  50. myData.Tables[LY_ZG_XJSPF_TABLE.LY_ZG_XJSPF_TABLENAME].Columns.Add("QRCODE", typeof(System.Byte[]));
  51. myData.Tables[LY_ZG_XJSPF_TABLE.LY_ZG_XJSPF_TABLENAME].Rows[]["QRCODE"] = ProductQR(myData);
  52.  
  53. myData.AcceptChanges();
  54. if (!string.IsNullOrEmpty(myData.Tables[].Rows[]["GZ_RESULT"].ToString()))
  55. {
  56. switch (myData.Tables[].Rows[]["GZ_RESULT"].ToString())
  57. {
  58. case "":
  59. strResult0 = "√";
  60. strResult1 = "×";
  61. strResult2 = "×";
  62. break;
  63. case "":
  64. strResult1 = "√";
  65. strResult0 = "×";
  66. strResult2 = "×";
  67. break;
  68. case "":
  69. strResult2 = "√";
  70. strResult0 = "×";
  71. strResult1 = "×";
  72. break;
  73. }
  74. }
  75. for (int i = ; i < myData.Tables[LY_FAMILYHOUSEINFORMATION_TABLE.LY_FAMILYHOUSEINFORMATION_TABLENAME].Rows.Count; i++)
  76. {
  77. strHouseCount = myData.Tables[].Rows[i]["HouseCount"].ToString();
  78. if (!string.IsNullOrEmpty(myData.Tables[].Rows[i]["SumIDENTIFIEDAREA"].ToString()))
  79. {
  80. strPerBuild = Convert.ToString(Math.Round((Convert.ToDouble(myData.Tables[].Rows[i]["SumIDENTIFIEDAREA"].ToString()) / Convert.ToDouble(myData.Tables[].Rows[]["PersonCount"].ToString())), ));
  81. strBuildArea = myData.Tables[].Rows[i]["SumIDENTIFIEDAREA"].ToString();
  82. }
  83.  
  84. }
  85. for (int i = ; i < myData.Tables[LY_H_RECEIVE_TABLE.LY_H_RECEIVE_TABLENAME].Rows.Count; i++)
  86. {
  87. strCount = myData.Tables[].Rows[i]["counts"].ToString();
  88. strPage = myData.Tables[].Rows[i]["pages"].ToString();
  89. }
  90. myReportDoc.Load(Server.MapPath(@"rptxjspfChecklist.rpt"));
  91. myReportDoc.SetDataSource(myData);//这里必须先设置数据源,然后再设置参数,否则报‘找不到参数’的错误
  92. myReportDoc.SetParameterValue("Result0", strResult0);
  93. myReportDoc.SetParameterValue("Result1", strResult1);
  94. myReportDoc.SetParameterValue("Result2", strResult2);
  95.  
  96. myReportDoc.SetParameterValue("BuildArea", strBuildArea);
  97.  
  98. myReportDoc.SetParameterValue("HouseCount", strHouseCount);
  99. myReportDoc.SetParameterValue("PerBuild", strPerBuild);
  100. myReportDoc.SetParameterValue("page", strPage);
  101. myReportDoc.SetParameterValue("count", strCount);
  102.  
  103. try
  104. {
  105. DiskFileDestinationOptions myDestinationFile = new DiskFileDestinationOptions();
  106. string filename = "";
  107. filename = System.DateTime.Now.ToString("yyyyMMddhhmmssfff") + ".pdf";
  108. Stream stream = myReportDoc.ExportToStream(ExportFormatType.PortableDocFormat);
  109. byte[] bytes = new byte[stream.Length];
  110. stream.Read(bytes, , bytes.Length);
  111.  
  112. stream.Close();
  113.  
  114. String contentType = "application/octet-stream";
  115.  
  116. Response.Clear();
  117. Response.ClearContent();
  118. Response.ClearHeaders();
  119. Response.Buffer = false;
  120. Response.AddHeader("Content-Disposition", "attachment; filename=" + filename);
  121. Response.AddHeader("Content-Length", bytes.Length.ToString());
  122. Response.Charset = "GB2312";
  123. Response.ContentType = contentType;
  124. Response.BinaryWrite(bytes);
  125. Response.Flush();
  126. Response.End();
  127. }
  128. catch (System.Exception exp)
  129. {
  130. throw exp;
  131. }
  132. }
  133. }
  134. private byte[] ProductQR(DataSet myData)
  135. {
  136. DataTable mytable = myData.Tables[];
  137. string strFILE_ID = mytable.Rows[][LY_ZG_XJSPF_TABLE.FILE_ID_FIELD].ToString().Trim();
  138. string strRegister_num = mytable.Rows[][LY_ZG_XJSPF_TABLE.REGISTER_NUM_FIELD].ToString().Trim();
  139.  
  140. #region 设置QR码
  141. string strCode = strRegister_num + "\r\n";//"审核表编号:" +
  142. strCode += strFILE_ID + "\r\n";//"收件号:" +
  143. QRCode.Service1 QrCode = new QRCode.Service1();
  144. return QrCode.GetQrCode(strCode);
  145. #endregion
  146. }
  147. private void Page_UnLoad(object sender, System.EventArgs e)
  148. {
  149. if (myReportDoc != null)
  150. {
  151. myReportDoc.Close();
  152. myReportDoc.Dispose();
  153. }
  154. }
  155. }
    1.注意rpt中的数据库专家中的xsd文件的类名必须和访问数据库返回的表名必须相同,否则会报登录数据库失败的错误
    见了他,她变得很低很低,低到尘埃里。但她心里是欢喜的,从尘埃里开出花来。魂牵梦绕,辗转反侧,可越是这样执着的爱,越是让我束手无策,无法表达,成就一段烽火佳话,迎接她包含深情炙热的眼光吧

C#实现打印的更多相关文章

  1. ASP.NET MVC5+EF6+EasyUI 后台管理系统(55)-Web打印

    系列目录 前言 1.本次主要弥补工作流,用户表单数据的打印 2.使用JQprint做为web打印插件 3.兼容:FireFox,Chrome,IE. 4.没有依赖也没有配置,使用简单 代码下载:htt ...

  2. C#中5步完成word文档打印的方法

    在日常工作中,我们可能常常需要打印各种文件资料,比如word文档.对于编程员,应用程序中文档的打印是一项非常重要的功能,也一直是一个非常复杂的工作.特别是提到Web打印,这的确会很棘手.一般如果要想选 ...

  3. 开源免费且稳定实用的.NET PDF打印组件itextSharp(.NET组件介绍之八)

    在这个.NET组件的介绍系列中,受到了很多园友的支持,一些园友(如:数据之巅. [秦时明月]等等这些大神 )也给我提出了对应的建议,我正在努力去改正,有不足之处还望大家多多包涵.在传播一些简单的知识的 ...

  4. Ajax使用WCF实现小票pos机打印源码

    通过ajax跨域方式调用WCF服务,实现小票pos机的打印,源码提供web方式,客户端方式测试,服务驻留右侧底部任务栏,可控制服务开启暂停,用户可自定义小票打印模板,配合零售录入. qq  22945 ...

  5. Jqprint实现页面打印

    好些项目需要实现页面打印,特别是一些后台管理类系统,下面介绍一款轻量级的打印插件: 1.实现页面打印要引入jQuery和Jqprint.点击下载Jqprint插件 <script languag ...

  6. Android连接网络打印机进行打印

    首先这是网络打印工具类,通过Socket实现,多说一句,网络打印机端口号一般默认的是9100 package com.Ieasy.Tool; import android.annotation.Sup ...

  7. 打印Lua的Table对象

    小伙伴们再也不用为打印lua的Table对象而苦恼了, 本人曾也苦恼过,哈哈 不过今天刚完成了这个东西, 以前在网上搜过打印table的脚本,但是都感觉很不理想,于是,自己造轮子了~ 打印的效果,自己 ...

  8. 解析大型.NET ERP系统 单据标准(新增,修改,删除,复制,打印)功能程序设计

    ERP系统的单据具备标准的功能,这里的单据可翻译为Bill,Document,Entry,具备相似的工具条操作界面.通过设计可复用的基类,子类只需要继承基类窗体即可完成单据功能的程序设计.先看标准的销 ...

  9. jQuery:实现网页的打印功能

    实现的打印功能大致跟浏览器的 Ctrl+P 效果一样 一.直接上代码 <!DOCTYPE html> <head> <meta charset="utf-8&q ...

  10. C# 设置Excel打印选项及打印excel文档

    C# 设置Excel打印选项及打印excel文档 打印Excel文档是一个很常见的操作,但有时候我们会碰到各种不同的打印需求,例如只打印一个Excel工作表的其中一部分,或打印时每页都有表头,或把工作 ...

随机推荐

  1. Java复习之Eclipse快捷键大全

    Ctrl+1 快速修复(最经典的快捷键,就不用多说了)Ctrl+D: 删除当前行 Ctrl+Alt+↓ 复制当前行到下一行(复制增加)Ctrl+Alt+↑ 复制当前行到上一行(复制增加)Alt+↓ 当 ...

  2. C#-01.语法基础

    a. 语法基础 i. 命名空间(namespace):是 C# 中组织代码的方式,用来声明命名空间 . 语法:namespace 命名空间名称{ //命名空间的声明 } . 作用:可以把紧密相关的一些 ...

  3. java程序: 倒计时的小程序 (GridPane, Timer, Calendar, SimpleDateFormat ...)

    倒计时程序 涉及到的东西: javafx简单的界面,布局,按钮,文本框,事件响应 java.util.Timer,用于定时 SimpleDateFormat用于在String和Date之间转换. ja ...

  4. springBoot 中redis 注解缓存的使用

    1,首先在启动类上加上 @EnableCaching 这个注解 在查询类的controller,或service ,dao 中方法上加 @Cacheable 更新或修改方法上加 @CachePut 注 ...

  5. mpvue自定义化后台富文本样式

    最近公司写小程序开始换框架了,之前用wepy,现在用mpvue. mpvue是基于vue的写法来开发微信小程序.虽然不完全和vue一样,但是大致和vue一样,所以基本开发上是上手很快的. 现在项目进程 ...

  6. scss-@extend

    @extend指令用于共享规则和选择器之间的关系.它可以扩展所有其他类的样式在一个类中,也可应用于自己特定的样式. 查看如下scss@extend示例: .style{ font-size: 30px ...

  7. html和css命名-望文生义

    HTML+CSS命名规则 在一个内容较多的HTML页面中,需要设计许多不同的框架,再为这些不同的框架及内容进行分类,给予相应的名称,从而使得网页结构更加清晰,也为工作提供了方便.许多新手朋友在设计一个 ...

  8. jQuery登录倒计时

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <script sr ...

  9. Windows下COCOS2D-X开发环境配置

    1. 下载Android SDK: http://developer.android.com/sdk/index.html ,解压到E:\ADT 目录下 2. 下载NDK: http://develo ...

  10. Jmeter性能测试 入门--转载

    转载: Jmeter性能测试 入门 Jmeter是一款优秀的开源测试工具, 是每个资深测试工程师,必须掌握的测试工具,熟练使用Jmeter能大大提高工作效率. 熟练使用Jmeter后, 能用Jmete ...