XtraReports润乾报表分组求和中列如何求和

public Form1()
InitializeComponent();
this.button1.Click += (o, e) =&
XtraReport rpt = new XtraReport();// 建立报表实例
rpt.DataSource = FillDataset();//设置报表数据源
rpt.DataMember = ((DataSet)rpt.DataSource).Tables[0].TableN
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 myDataS
  添加带区
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.LightB
oddStyle.StyleUsing.UseBackColor = true;
oddStyle.StyleUsing.UseBorders = false;
oddStyle.Name = "OddStyle";
evenStyle.BackColor = Color.LightP
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.C
int colWidth = (rpt.PageWidth - (rpt.Margins.Left + rpt.Margins.Right)) / colC
// 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.W
tableHeader.Rows.Add(headerRow);
headerRow.BackColor = Color.G
headerRow.ForeColor = Color.W
// 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.W
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 & colC i++)
XRTableCell headerCell = new XRTableCell();
headerCell.Width = colW
headerCell.Text = ds.Tables[0].Columns[i].C
XRTableCell detailCell = new XRTableCell();
detailCell.Width = colW
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.B
detailCell.Borders = DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Top | DevExpress.XtraPrinting.BorderSide.B
headerCell.Borders = DevExpress.XtraPrinting.BorderSide.A
detailCell.Borders = DevExpress.XtraPrinting.BorderSide.A
// 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);
  之后还会添加报表头和报表尾,页统计分组统计等。
  通过我给的代码相信大家 添加报表头和报表尾,页统计分组统计 也会模仿着动态加载出来。
本文已收录于以下专栏:
博主最新文章
博主热门文章
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)如何使用DevExpress XtraReports创建一个表格报表_百度知道
如何使用DevExpress XtraReports创建一个表格报表
我有更好的答案
方法步骤如下:1、工具需求(1)wps office 20122、第一步,我们开启MS Visual Studio (),创建一个支持任何平台的新应用程序,或打开一个现有的,添加一个新的空白报表(DevExpress XtraReports如何为应用程序添加新报表)(1)然后我们绑定该报表到示例数据库Northwind的“产品”表上(nwind.mdb文件,和XtraReports一起安装的)(2)下一步,在报表的PageHeader和Detail新增两个XRTable控件,打开DX.11.2: 报表控件工具栏,点击XRTable选项。然后,在PageHeader内容区域里,点击鼠标左键并向下拖动,使鼠标指针越过Detail区域3、第二步,我们可以绑定表的单元格数据字段,只需从“Field List”窗口将“ProductName”,“QuantityPerUnit”和“UnitPrice”拖放到相应的单元格中(1)然后在第一个表单元格中输入相应的列名,为了改善报表的外观,你可以自定义某些表中的参数(2)最后我们为两个表中的XRControl.Borders定义属性值(设置xrTable1的所有属性值和xrTable2的左、右、底部属性值)。此外,使用XtraReports格式工具栏定义其背景颜色和自定义文本的外观上述即:如何使用DevExpress XtraReports创建一个表格报表的方法,供出现此问题的朋友们参考和使用4、如果上述功能都无法使用,可能是程序出现了问题。建议重新下载安装试试,建议使用wps office 2016:
主营:电脑培训,淘宝培训,会计培训,英语培训,手机维修培训,美术
为您推荐:
其他类似问题
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。2380人阅读
SAP(217)
在写abap 的过程中,可能需要统计,求和等
那么如何实现呢?
其实在loop ... endloop 中间,有个AT ,&…&,ENDAT循环. 其中的包括: FRIST, LAST, NEW , END OF.这些可以用来进行内表中按某个字段进行分组统计.
FIRST 内 表的第一行
LAST 内 表的最后一 行NEW 行组 的开头,与 字段 和 剩余字段中 的内容相同
END Of 行组 的结尾,与 字段 和 剩余字段中 的内容相同
AT - ENDAT 块中的语句 块使用这些 行条件代表 预定义的控 制结构。用 户可以使用 它们处理内 表中的控制 断点,而不 必使用 编程分支和循环 中所述的控 制语句自己 编程。在 AT - ENDAT 语句块中, 工作区域没 有用当前表 格行进行填 充。初始化 所有不是标 准关键字部 件的字段( 参见 标识表格行 )。对于行 条件 FIRST 和 LAST, 系统用星号 (*) 改写所有标 准关键字段 。对于行条 件 NEW 和 END OF ,系 统用星号 (*) 改写所有出 现在工作区 域中指定字
段 右边的标准 关键字段。 用户可根据 自己的需求 在 AT - ENDAT 语句块中填 充工作区域 。
DATA: BEGIN OF LINE,
COL1 TYPE C,
COL2 TYPE I,
COL3 TYPE I,
END OF LINE.
DATA ITAB LIKE LINE OCCURS 10.
LINE-COL1 = 'A'.
DO 3 TIMES.
LINE-COL2 = SY-INDEX.
LINE-COL3 = SY-INDEX ** 2.
APPEND LINE TO ITAB.
LINE-COL1 = 'B'.
DO 3 TIMES.
LINE-COL2 = 2 * SY-INDEX.
LINE-COL3 = ( 2 * SY-INDEX ) ** 2.
APPEND LINE TO ITAB.
LOOP AT ITAB INTO LINE.
WRITE: / LINE-COL1, LINE-COL2, LINE-COL3.
AT END OF COL1.
SUM."按Col1 求和.
WRITE: / LINE-COL1, LINE-COL2, LINE-COL3.
SUM."总求和.
WRITE: / LINE-COL1, LINE-COL2, LINE-COL3.
其输出为:
________________________________
________________________________
________________________________帮助企业打造成功软件!
热门搜索:
XtraReports报表使用心得之最终用户篇(一)
XtraReports报表使用心得之最终用户篇(一)
| 作者:慧都控件网 |
15:16:07| 阅读 0次
概述:使用xtraReport进行报表部分的开发,由于网上的资料比较少,而且大部分示例是xtraReport集成到程序中,目前需求要使用独立设计的报表文件.repx,数据使用IList,这样涉及到在设计报表时,如何给报表文件中字段赋值,尤其是分组时指定字段,这里根据官方文档和自己的测试,得到了一个方法,这里做具体说明。
使用背景:控件,版本v10.2,开发环境vs2010;报表单独进行设计,即单独的repx文件(使用report desinger设计,dev的demo里有),使用时动态载入并显示,数据源使用List&&;使用进行报表部分的开发,由于网上的资料比较少,而且大部分示例是xtraReport集成到程序中,目前需求要使用独立设计的报表文件.repx,数据使用IList,这样涉及到在设计报表时,如何给报表文件中字段赋值,尤其是分组时指定字段(原来在版本v8时,可以在没有数据源的情况下输入分组的字段,在v10.2版本中已经行不通,必须指定数据源的字段才行,晕死)只好自己结合官方文档和帮助加自己的测试,得到以下的方法,如果哪些同学有更好的方法,我们可以共同探讨:
下面我只写个简单的示例,基本思想都一样。
一、创建winform程序,放置一个按钮控件,一个dev组件中的printcontrol控件,记得项目引用
DevExpress.XtraE
DevExpress.XtraR
主要代码:
public partial class Form1 : Form
public Form1()
InitializeComponent();
//定义报表
XtraReport xr = new XtraReport();
//定义测试数据model
public class testdata
public int Id { }
public string Name { }
public string Address { }
public int Age {}
//显示报表
private void button1_Click(object sender, EventArgs e)
//得到list数据 下面是测试用,实际中需要通过函数得到
List&testdata& Items = new List&testdata&();
for (int i = 1; i &= 5; i++)
item = new testdata();
item.Name = &Name&+i.ToString();
item.Address = &第& + i.ToString() + &区&;
item.Age = 10+i;
Items.Add(item);
for (int i = 1; i &= 5; i++)
item = new testdata();
item.Name = &Name-& + i.ToString();
item.Address = &第-& + i.ToString() + &区&;
item.Age = 20+i;
Items.Add(item);
//动态载入报表文件
xr.LoadLayout(Application.StartupPath + &\\newtest.repx&);
xr.DataSource = I
XRC //报表上的组件
xc = xr.FindControl(&lbl_Unit&, true);
if (xc != null)
{ (xc as XRLabel).Text = &使用部门名称&; } //动态指定报表某个显示的名称,当然你
也可以在报表中写好
xc = xr.FindControl(&GroupHeader1&, true);
if (xc != null) //动态指定分组的列,因为在v10.2报表设计器中,已经不能输入,必须
指定数据源的字段
(xc as DevExpress.XtraReports.UI.GroupHeaderBand).GroupFields.Add(new
GroupField(&Id&));
//分组绑定合计并指定格式,不加不行
xc = xr.FindControl(&tableCellSumAge&, true);
if (xc != null)
(xc as XRTableCell).DataBindings.Add(&Text&, xr.DataSource, &Age&,
&{0:N2}&);
this.printControl1.PrintingSystem = xr.PrintingS //将报表的打印系统赋给
窗体上的打印控件
xr.CreateDocument();
二、使用dev的报表设计器 report Designer 创建一个报表,增加reportHeader、details、
groupHeader、groupFooter等需要的band及table和label,并在相应位置放置 XRTable或xrLabel以显示数据,具体怎么个布局就不说了,看需求了;其中XRTableCell主要来显示List的数据,放在detail区域中,只要直接指定其Text属性即可 如 [Name],对于金额字段 还要指定其summary的formatString属性{0:N2},对应上面的年龄合计字段 tableCellSumAge,设置其summary的running为group(组合计,report:整个报表的合计,none当然就不合计)。
先写这里,东西不多,但研究却花了不少时间,希望对用到的同学有所帮助。
慧都控件|提供软件技术整体解决方案
云集全球三千余款优秀控件、软件产品,提供行业领先的咨询、培训与开发服务
企业QQ:|电话:023-
服务与支持
重庆 / 023-
北京 / 010-
400-700-1020
慧都旗下网站
慧都科技有限公司 版权所有 Copyright
100%正版软件
400-700-1020
<input type="hidden" id="url" value=""/>}

我要回帖

更多关于 水晶报表分组求和 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信