2025年c vs2013 制作水晶报表并导出为 pdf

c vs2013 制作水晶报表并导出为 pdf一两年前接触的 当时没有记录 现在把他写下来 vs2013 制作水晶报表 应该要用到插件安装 可以自行搜索安装插件 在 Views RPT 文件夹下创建 rpt 后缀的水晶报表文件 这里的文件夹位置根据自身随意更改 在 Data 文件夹下 文件夹位置根据自身随意更改

大家好,我是讯享网,很高兴认识大家。

一两年前接触的,当时没有记录,现在把他写下来。
vs2013制作水晶报表,应该要用到插件安装,可以自行搜索安装插件。
在Views/RPT文件夹下创建.rpt后缀的水晶报表文件(这里的文件夹位置根据自身随意更改)。
在Data文件夹下(文件夹位置根据自身随意更改),创建DataSet数据集
在这里插入图片描述
讯享网
创建好后,在页面右击Add-DataTable添加表,更改datatable的名称,同样在表内右击Add-Column添加列,输入列明(自定义)
在这里插入图片描述

在.rpt报表文件页面,先将刚刚创建的DataSet的表导进来。在左边的导航,右击 Database Fields,选择Database Expert
在这里插入图片描述
我的连接-DataSet1-Packing,点击>按钮,将该datatable表导进来,确定。待会就可以拖拉这个表里的列。
在这里插入图片描述

在里面画表格。改字体、字号大小、画线、不用到的报表头之类的就隐藏掉等。我这里是一个已经画好的表格,在页眉部分用到了分组功能,(为了让表格头不循环,表格体 列要循环显示,就将表的id作为分组名 来达到这样的目的)。
在这里插入图片描述
填充数据至表格,并导出为pdf。(我用的是一般处理程序,有什么不同根据自身修改)
后端代码,前端调用PrintPacking方法

using CrystalDecisions.CrystalReports.Engine; using CrystalDecisions.Shared; using Newtonsoft.Json; public void PrintPacking(HttpContext context) { 
    try { 
    string rptName = "PKGTAB";//.rpt报表文件名称 List<数据库表名> list = new List<数据库表名>();//源数据表 DataSet1 ds1 = new DataSet1();//实例化数据集 //分箱数 List<int> _countr = list1.Select(t => t.COUNTR).Distinct().ToList(); if (list1.Count > 0 && head.Count > 0) { 
    foreach (var item in list) { 
    //循环将数据添加进去 ds1.Packing.AddPackingRow(item.CTN_NO, item.ITEM_NO, item.ITEM_DESC, item.QUANTITY, item.UOM_CODE, item.ITEM_REV, item.ATTR21, item.ATTR29, item.NOTE1, item.SO_NUMBER,item.qrcode, item.ATTR23); } m_responseData = new PrintHandler().ExportPDF(ds1, rptName); } } catch (Exception ex) { 
    } string jsonString = JsonConvert.SerializeObject(m_responseData);//Json序列化,JSON对象转成JSON字符串 context.Response.Write(jsonString); } //导出PDF格式 private ReportDocument docReport = new ReportDocument();//全局变量 私有 //DataSet1 ds1 //rptName:.rpt水晶报表文件的名称 public bool ExportPDF(DataSet1 ds1, string rptName) { 
    bool ***=false; if (ds1 != null && !string.IsNullOrEmpty(rptName)) { 
    try { 
    string _rptName = HttpContext.Current.Server.MapPath("/Views/RPT/" + rptName + ".rpt"); docReport.Load(_rptName); docReport.Database.Tables[0].ApplyLogOnInfo(CryReport.GetLogonInfo()); docReport.SetDataSource(ds1); DiskFileDestinationOptions diskOpts = new DiskFileDestinationOptions(); docReport.ExportOptions.ExportDestinationType = ExportDestinationType.DiskFile; docReport.ExportOptions.ExportFormatType = ExportFormatType.PortableDocFormat; string filePath = HttpContext.Current.Server.MapPath(@"/" + rptName + ".pdf"); diskOpts.DiskFileName = filePath; docReport.ExportOptions.DestinationOptions = diskOpts; docReport.Export(); docReport.Dispose(); ***=true; //m_responseData = new ResponseData(true, rptName, string.Format("成功输出文件{0}.pdf.", rptName)); } catch (Exception ex) { 
    } } else { 
    m_responseData = new ResponseData(false, "报表数据源或报表名为空"); } return ***; } 

讯享网

前端:

讯享网$.ajax({ 
    type: 'post', async: false, url: '', success: function (data) { 
    var obj = eval('(' + data + ')'); if (obj.Success) { 
    var filename = "PKGTAB"; var target = "/Views/POP/File?filename=" + filename + ".pdf";//新建一个页面File.aspx 我这边放在/Views/POP/目录下 window.open(target);//打开一个新页面将pfd显示出来 error.hide(); } else { 
    error.show().html(obj.Message); } } }); 

新建的File.aspx页面,打开File.aspx.cs页面,protected void Page_Load(object sender, EventArgs e)函数改成如下:

protected void Page_Load(object sender, EventArgs e) { 
    string _fileName = Request.QueryString["filename"]; string filePath = Server.MapPath(@"/" + _fileName); if (!IsPostBack) { 
    //PDFPreview.Priview(this, filePath); //判断文件的存在 System.Web.UI.Page p = this; if (System.IO.File.Exists(filePath)) { 
    p.Response.ContentType = "Application/pdf"; string fileName = filePath.Substring(filePath.LastIndexOf('\\') + 1); p.Response.AddHeader("content-disposition", "filename=" + fileName); p.Response.WriteFile(filePath); p.Response.End(); } } } 

打开File.aspx.designer.cs,public partial class File方法改成如下:

讯享网public partial class File { 
    /// <summary> /// form1 control. /// </summary> /// <remarks> /// Auto-generated field. /// To modify move field declaration from designer file to code-behind file. /// </remarks> protected global::System.Web.UI.HtmlControls.HtmlForm form1; } 

效果
在这里插入图片描述

小讯
上一篇 2025-03-07 12:21
下一篇 2025-02-28 16:59

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/47692.html