• C#(99):水晶报表编程


    一、概述

    水晶报表(Crystal Reports)是一款应用非常广泛的商业智能软件,除了强大的报表功能外,最大的优势是实现了绝大多数流行开发工具的集成和接口。

    官网:https://www.crystalreports.com/crystal-reports-visual-studio/ 

    下载:http://www.crystalreports.com/crvs/confirm/

    链接:https://pan.baidu.com/s/1o_mxVGmiyDRxDRYwSkCf5Q
    提取码:xx1a

    最新版本: 13.0.25.3158,支持Visual Studio 2019

    版本历史:https://chocolatey.org/packages/crystalreports-for-visualstudio

    二、推拉模式

    1、拉模式

       由水晶模板(引擎)直接连接数据库(源),从数据库(源)里拉取数据。

       报表文件中直接嵌入数据源(包含了具体的ConnectionString),报表文件可以直接预览真实数据。

    image

    2、推模式

    由应用程序从数据库(源)获取数据,然后把数据推送给水晶报表引擎。水晶报表本身不与数据库进行交互。

       报表文件中只有DataSet等数据结构(无具体的ConnectionString),需要应用程序去填充Dataset。

    image

    三、报表实例

    //定义ReportDocument对象,装载Crystalreport1.rpt
    ReportDocument myReport = new ReportDocument();
    string reportPath = Server.MapPath("Reports/CrystalReport1.rpt");
    myReport.Load(reportPath);
    //或者直接强类型实例:
    ReportDocument myReport = new WebApplication1.Reports.CrystalReport1();
    //把模板对象赋给报表前端呈现控件CrystalReportViewerl
    CrystalReportViewer1.ReportSource = myReport;

    四、设置报表数据源

    DataSet ds = new DataSet();
    string connStr = @"server=Data Source=**;Initial Catalog=**;User ID=**";
    using (SqlConnection conn = new SqlConnection(connStr))
    {
        conn.Open();
        string SQL = "SELECT * FROM dbo.T_Company";
        SqlDataAdapter sda = new SqlDataAdapter(SQL, conn);
        sda.Fill(ds, "UserInfo");
    }
    ReportDocument rd = new ReportDocument();
    //获取报表路径
    string reportPath = Server.MapPath("Reports/CrystalReport2.rpt");
    rd.Load(reportPath);
    //绑定数据集,注意一个表用一个数据集。
    rd.SetDataSource(ds);
    rd.Refresh();
    CrystalReportViewer1.ReportSource = rd;
    CrystalReportViewer1.RefreshReport();
     

    五、报表布局

    ((BlobFieldObject)rd.ReportDefinition.ReportObjects["Barcode1"]).Left = 20;
    ((TextObject)rd.ReportDefinition.ReportObjects["txtStatus"]).Left = 30;

    六、报表参数

    var crParameterFieldDefinitions = myReport.DataDefinition.ParameterFields;//获取在报表上定义的所有的参数字段集合
    ParameterFieldDefinition companyPara = crParameterFieldDefinitions["company"];//获得其中company这个参数字段 ParameterValues companyParaValues = companyPara.CurrentValues;//获得company参数字段中,所有值集合 var crParameterDiscreteValue = new ParameterDiscreteValue();//定义一个新的参数离散值 crParameterDiscreteValue.Value = "aa";//为此离散值赋值 companyParaValues.Add(crParameterDiscreteValue); //将一个离散值加到此值集合中
    companyPara.ApplyCurrentValues(companyParaValues);//在company这个参数字段中,运用此参数值集合

    七、导出到PDF

    CrystalDecisions.Shared.DiskFileDestinationOptions diskOptions = new CrystalDecisions.Shared.DiskFileDestinationOptions();
    diskOptions.DiskFileName = "1.pdf";
    CrystalDecisions.Shared.ExportOptions exportOptions = rd.ExportOptions;
    exportOptions.DestinationOptions = diskOptions;
    exportOptions.ExportDestinationType = CrystalDecisions.Shared.ExportDestinationType.DiskFile;
    exportOptions.ExportFormatType = CrystalDecisions.Shared.ExportFormatType.PortableDocFormat;
    rd.Export();
    rd.Dispose();

    八、打印

  • 相关阅读:
    PCA理论与实践
    深度挖掘客户价值—分析角度篇
    多元线性回归理论与实践
    数据分析框架
    Growing转化的每一步(笔记整理)
    kmeans算法原理以及实践操作(多种k值确定以及如何选取初始点方法)
    mysql查询优化(持续更新中)
    mysql 各种运算对于null值的处理
    left join与on,where 结合一起用的异同
    Spark(十一) -- Mllib API编程 线性回归、KMeans、协同过滤演示
  • 原文地址:https://www.cnblogs.com/springsnow/p/9433970.html
Copyright © 2020-2023  润新知