zoukankan      html  css  js  c++  java
  • 巧用报表工具API的一个示例

      每个报表工具都号称自己拥有完善的API,但是大叔测试过如此多的报表开发工具,大多都将报表设计和报表分开的,报表查看器封装得太完整了,经常需要的动态报表功能都不能实现了。

      在ActiveReports的官博上看到说他们能创建动态区段报表,步骤大概以下几步:

    1. 创建一个报表实例
    2. 动态的添加区段和控件
    3. 修改报表区段和控件的相关细节
    4. 给报表指派设置数据源
    5. 将报表绑定到数据源

      下面将一个简单的示例代码分享

    private void Form1_Load(object sender, EventArgs e)
    {
       rpt = new SectionReport();
      
       //Adding Page Header/Footer sections
       rpt.Sections.InsertPageHF();
       rpt.Sections[0].BackColor = Color.LightGray;
      
       //Adding Detail section
       rpt.Sections.Insert(1, new Detail());
       rpt.Sections[1].BackColor = Color.PeachPuff;
       rpt.Sections[1].Height = 1.5f;
      
       //Adding label to display first column's name
       GrapeCity.ActiveReports.SectionReportModel.Label lblCategoryID = new GrapeCity.ActiveReports.SectionReportModel.Label();
       lblCategoryID.Location = new PointF(0, 0.05F);
       lblCategoryID.Text = "Category ID";
       lblCategoryID.Alignment = GrapeCity.ActiveReports.Document.Section.TextAlignment.Center;
       lblCategoryID.Font = new System.Drawing.Font("Arial", 10, FontStyle.Bold);
       rpt.Sections[0].Controls.Add(lblCategoryID);
      
       //Adding label to display second column's name
       GrapeCity.ActiveReports.SectionReportModel.Label lblCategoryName = new GrapeCity.ActiveReports.SectionReportModel.Label();
       lblCategoryName.Location = new PointF(1.459f, 0.05f);
       lblCategoryName.Size = new SizeF(1.094f,0.2f);
       lblCategoryName.Text = "Category Name";
       lblCategoryName.Font = new System.Drawing.Font("Arial", 10, FontStyle.Bold);
       rpt.Sections[0].Controls.Add(lblCategoryName);
      
       //Adding label to display third column's name
       GrapeCity.ActiveReports.SectionReportModel.Label lblDescription = new GrapeCity.ActiveReports.SectionReportModel.Label();
       lblDescription.Location = new PointF(3.114f, 0.05f);
       lblDescription.Text = "Description";
       lblDescription.Font = new System.Drawing.Font("Arial", 10, FontStyle.Bold);
       rpt.Sections[0].Controls.Add(lblDescription);
      
       //Adding label to display fourth column's name
       GrapeCity.ActiveReports.SectionReportModel.Label lblPicture = new GrapeCity.ActiveReports.SectionReportModel.Label();
       lblPicture.Location = new PointF(5.219f, 0.05f);
       lblPicture.Alignment = GrapeCity.ActiveReports.Document.Section.TextAlignment.Center;
       lblPicture.Text = "Picture";
       lblPicture.Font = new System.Drawing.Font("Arial", 10, FontStyle.Bold);
       rpt.Sections[0].Controls.Add(lblPicture);
      
       //Adding Textbox to display first column's records
       GrapeCity.ActiveReports.SectionReportModel.TextBox txtCategoryID = new GrapeCity.ActiveReports.SectionReportModel.TextBox();
       txtCategoryID.Location = new PointF(0,0);
       txtCategoryID.Alignment = GrapeCity.ActiveReports.Document.Section.TextAlignment.Center;
       rpt.Sections[1].Controls.Add(txtCategoryID);
      
       //Adding Textbox to display second column's records
       GrapeCity.ActiveReports.SectionReportModel.TextBox txtCategoryName = new GrapeCity.ActiveReports.SectionReportModel.TextBox();
       txtCategoryName.Location = new PointF(1.459f,0);
       rpt.Sections[1].Controls.Add(txtCategoryName);
      
       //Adding Textbox to display third column's records
       GrapeCity.ActiveReports.SectionReportModel.TextBox txtDescription = new GrapeCity.ActiveReports.SectionReportModel.TextBox();
       txtDescription.Location = new PointF(3.114f,0);
       rpt.Sections[1].Controls.Add(txtDescription);
      
       //Adding Picture control to display image
       GrapeCity.ActiveReports.SectionReportModel.Picture picture = new Picture();
       picture.Location = new PointF(5.219f,0);
       rpt.Sections[1].Controls.Add(picture);
      
       // Setting report's data source
       conn = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:UsersstduserDocumentsComponentOne SamplesActiveReports Developer 7DataNWIND.mdb;Persist Security Info=False");
       System.Data.OleDb.OleDbCommand cmd = new System.Data.OleDb.OleDbCommand("SELECT * FROM Categories", conn);
       conn.Open();
       reader = cmd.ExecuteReader();
       rpt.DataSource = reader;
      
       // Assigning DataField properties of controls in the detail section
       txtCategoryID.DataField = "CategoryID";
       txtCategoryName.DataField = "CategoryName";
       txtDescription.DataField = "Description";
       picture.DataField = "Picture";
       reader.Close();
       conn.Close();
    }

      在安装ActiveReports后,修改动态区段的时候用到以上代码,顺便给一个ActiveReports的下载>> ,想要测试的下载了看看效果。

  • 相关阅读:
    sqlserver数据导入问题:报错“对COM组件的调用返回了错误HRESULT E_FAIL”
    删除文件夹提示”该项目不在请确认该项目位置“
    delphi三层DCOM架构
    sqlserver 将店铺表转换成可以用in查询的字符串
    Delphi如何获取一个字符串再另一个字符串中最后一次出现的位置
    c# 通过地址下载流然后保存文件到本地
    使用SQL语句清空数据库所有表的数据
    SqlServer 查询的时候过滤条件有参数导致速度很慢的问题-参数嗅探
    delphi和C# 保存exe文件到数据库
    DELPHI 多线程(TThread类的实现)
  • 原文地址:https://www.cnblogs.com/uncleshu/p/3245636.html
Copyright © 2011-2022 走看看