提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
原创|其它|编辑:郝浩|2011-08-25 15:05:36.000|阅读 3049 次
概述:很长时间也没接触报表了。之前很久用过金质打印通和水晶报表。最近在看 Dev的报表 XtraReports 现讲一下我是如何动态的创建报表。
# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>
很长时间也没接触报表了。之前很久用过金质打印通和水晶报表
最近在看 Dev的报表 XtraReports 现讲一下我是如何动态的创建报表。
XtraReports报表正常的做法:
制作过程简单说有两步:
第一步:画报表。报表中有一些带区:报表头,页头,明细,分组,页尾,报表尾等,在这些容器中可以放控件,控件在Dev的左边控件栏可以拖拽上去,在属性视图中修改属性,跟WinForm或者WebForm拖拽控件做出一个窗体是类似的;-注意:现在画出的只是报表模板
文件保存后是XtraReport.repx 文件,和Winform的 窗体的 Form1.cs 文件类似。
 第二步:绑定数据源。XtraReport的一个实例 myXtraReport.DataSource = 你的数据源。
这样做先得去设计报表,非常麻烦,而且加入你有几百上上千张表表一一去设计就非常麻烦。
我这篇文章就是想不用去先画报表,直接就生成报表,即运行时生成报表。
先看一下简单的直接就生成报表的效果
<
运行时显示一个数据表格中的数据 交替换表格的颜色。
下面是代码
public Form1()
{
InitializeComponent();
this.button1.Click += (o, e) =>
{
XtraReport rpt = new XtraReport();// 建立报表实例
rpt.DataSource = FillDataset();//设置报表数据源
rpt.DataMember = ((DataSet)rpt.DataSource).Tables[0].TableName;
InitBands(rpt);//添加带区(Bands)
InitStyles(rpt);//添加Styles
InitDetailsBasedonXRTable(rpt);//用XRTable显示报表
rpt.ShowPreviewDialog();
};
}< <
初始化数据源
FillDataset public DataSet FillDataset()
{
DataSet myDataSet = new DataSet();
myDataSet.DataSetName = "myDataSet";
DataTable table = new DataTable("Detail");
myDataSet.Tables.Add(table);
table.Columns.Add("Name", typeof(String));
table.Columns.Add("Address", typeof(String));
table.Columns.Add("Sex", typeof(String));
table.Columns.Add("Birthplace", typeof(String));
table.Columns.Add("Birthday", typeof(String));
table.Rows.Add(new object[] { "Zhang", "辽宁锦州", "女", "辽宁", "1983-XX-XX" });
table.Rows.Add(new object[] { "Wang", "广东深圳", "男", "辽宁", "1984-10-XX" });
table.Rows.Add(new object[] { "Li", "北京", "男", "北京", "1985-XX-XX" });
table.Rows.Add(new object[] { "Zhao", "上海", "女", "湖南", "1984-XX-XX" });
table.Rows.Add(new object[] { "Liu", "广东深圳", "女", "辽宁", "1985-2-XX" });
return myDataSet;
}< < <
InitBands public void InitBands(XtraReport rpt)
{
DetailBand detail = new DetailBand();
PageHeaderBand pageHeader = new PageHeaderBand();
ReportFooterBand reportFooter = new ReportFooterBand();
detail.Height = 20;
reportFooter.Height = 380;
pageHeader.Height = 20;
rpt.Bands.AddRange
(new DevExpress.XtraReports.UI.Band[] { detail, pageHeader, reportFooter });
}< < <
添加Styles
InitStyles public void InitStyles(XtraReport rep)
{
XRControlStyle oddStyle = new XRControlStyle();
XRControlStyle evenStyle = new XRControlStyle();
oddStyle.BackColor = Color.LightBlue;
oddStyle.StyleUsing.UseBackColor = true;
oddStyle.StyleUsing.UseBorders = false;
oddStyle.Name = "OddStyle";
evenStyle.BackColor = Color.LightPink;
evenStyle.StyleUsing.UseBackColor = true;
evenStyle.StyleUsing.UseBorders = false;
evenStyle.Name = "EvenStyle";
rep.StyleSheet.AddRange
(new DevExpress.XtraReports.UI.XRControlStyle[] { oddStyle, evenStyle });
}< < <
用XRTable显示报表
InitDetailsBasedonXRTable public void InitDetailsBasedonXRTable(XtraReport rpt)
{
DataSet ds = ((DataSet)rpt.DataSource);
int colCount = ds.Tables[0].Columns.Count;
int colWidth = (rpt.PageWidth - (rpt.Margins.Left + rpt.Margins.Right)) / colCount;
// Create a table to represent headers
XRTable tableHeader = new XRTable();
tableHeader.Height = 20;
tableHeader.Width = (rpt.PageWidth - (rpt.Margins.Left + rpt.Margins.Right));
XRTableRow headerRow = new XRTableRow();
headerRow.Width = tableHeader.Width;
tableHeader.Rows.Add(headerRow);
headerRow.BackColor = Color.Gray;
headerRow.ForeColor = Color.White;
// Create a table to display data
XRTable tableDetail = new XRTable();
tableDetail.Height = 20;
tableDetail.Width = (rpt.PageWidth - (rpt.Margins.Left + rpt.Margins.Right));
XRTableRow detailRow = new XRTableRow();
detailRow.Width = tableDetail.Width;
tableDetail.Rows.Add(detailRow);
tableDetail.EvenStyleName = "EvenStyle";
tableDetail.OddStyleName = "OddStyle";
// Create table cells, fill the header cells with text, bind the cells to data
for (int i = 0; i < colCount; i++)
{
XRTableCell headerCell = new XRTableCell();
headerCell.Width = colWidth;
headerCell.Text = ds.Tables[0].Columns[i].Caption;
XRTableCell detailCell = new XRTableCell();
detailCell.Width = colWidth;
detailCell.DataBindings.Add("Text", null, ds.Tables[0].Columns[i].Caption);
if (i == 0)
{
headerCell.Borders =
DevExpress.XtraPrinting.BorderSide.Left |
DevExpress.XtraPrinting.BorderSide.Top | DevExpress.XtraPrinting.BorderSide.Bottom;
detailCell.Borders =
DevExpress.XtraPrinting.BorderSide.Left |
DevExpress.XtraPrinting.BorderSide.Top | DevExpress.XtraPrinting.BorderSide.Bottom;
}
else
{
headerCell.Borders = DevExpress.XtraPrinting.BorderSide.All;
detailCell.Borders = DevExpress.XtraPrinting.BorderSide.All;
}
// Place the cells into the corresponding tables
headerRow.Cells.Add(headerCell);
detailRow.Cells.Add(detailCell);
}
// Place the table onto a report's Detail band
rpt.Bands[BandKind.PageHeader].Controls.Add(tableHeader);
rpt.Bands[BandKind.Detail].Controls.Add(tableDetail);
}< < <
之后还会添加报表头和报表尾,页统计分组统计等。
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@pclwef.cn
文章转载自:网络转载面对“数字中国”建设和中国制造2025战略实施的机遇期,中车信息公司紧跟时代的步伐,以“集约化、专业化、标准化、精益化、一体化、平台化”为工作目标,大力推进信息服务、工业软件等核心产品及业务的发展。在慧都3D解决方案的实施下,清软英泰建成了多模型来源的综合轻量化显示平台、实现文件不失真的百倍压缩比、针对模型中的大模型文件,在展示平台上进行流畅展示,提升工作效率,优化了使用体验。
本站的模型资源均免费下载,登录后即可下载。模型仅供学习交流,勿做商业用途。
本站的模型资源均免费下载,登录后即可下载。模型仅供学习交流,勿做商业用途。
本站的模型资源均免费下载,登录后即可下载。模型仅供学习交流,勿做商业用途。
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@pclwef.cn
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢