巧用报表工具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:\Users\stduser\Documents\ComponentOne Samples\ActiveReports Developer 7\Data\NWIND.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的下载>> ,想要测试的下载了看看效果。

转载于:https://www.cnblogs.com/uncleshu/p/3245636.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
软件名称: OrchidPrinter(兰花报表控件) 软件版本: 2.1(20次限次版) 大小 : 116k 作品简介: OrchidPrinter是一款专门针对中国国情并参照国外的类似软件编制的专门针对VB,VC的报表工具软件, 使用VC 6.0制作,这个报表工具软件可以让您快速,容易的进行预览及打印输出.它支持多列,文本自动 换行,页头和页尾,表格及段落,图形. OrchidPrinter 也支持右键弹出菜单. 现在的程序是20次限次版,只能使用20次打印输出,您可以下载它进行试用. 若您需要发行版,请与我联系. 您需要把MFC42.DLL拷贝到Windows的system目录下.然后运行regsvr32 MFC42.DLL. 您需要把OrchidPrinter.ocx拷贝到Windows的system目录下.然后运行regsvr32 orchidprinter.ocx. 您需要把OrchidPrinter.hlp拷贝到Windows的help目录下. opSamples目录下的VB程序是我的测试程序,如果显示的字体不对请把ListBox的字体改为";宋体";. VcTest目录下的VC程序是我的测试程序. 2.0版新增了对用户进行打印机设置的支持,使您的程序可以做到不用考虑用户的打印机和纸张大小, 完全由用户在预览时进行调整,使您脱离设计报表的苦海. 2.1版新增了PaperChanged事件,在用户对打印机进行设置后将激发此事件,您可以在此事件中进行 报表的重画. 注意 : 这不是共享软件,也不是自由软件,如果您愿意使用,您必须付费, 这是我个人的产品.请用 email 与我联系. 作者 : 史仲浩 email : shizhonghao@sohu.com
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值