找回密码
 立即注册

QQ登录

只需一步,快速开始

wp_pandy

高级会员

34

主题

166

帖子

1788

积分

高级会员

积分
1788

活字格认证

wp_pandy
高级会员   /  发表于:2011-10-17 21:25  /   查看:13567  /  回复:13
FpSpread如何做合计行,已某些条件分组,计算同一组的某个列的合计值,并在这组下面显示这个合计行,目前是用子表,就是展开的那种解决的,有没有更好的办法?(随便问下,图片我怎么总是传不上呢?)

13 个回复

倒序浏览
gw0506
超级版主   /  发表于:2011-10-18 10:48:00
沙发
除了子表,还可以使用分组+ColumnFooter的方式来实现你的需求。

简单来说,就是先按照某一列的值进行分组。然后在需要合计的地方,设置ColumnFooter。详情请参照帮助文档中“Displaying a Footer for Columns or Groups”章节。

另外,上传图片请参考:http://gcdn.grapecity.com/showtopic-385.html
回复 使用道具 举报
wp_pandy
高级会员   /  发表于:2011-10-27 22:07:00
板凳
看那上面做合计行的方法看不懂啊,以前就看过了,能给个示例啊?
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2011-10-28 12:00:00
地板
你好,我做了一个简单的 Demo 演示 通过 ColumnFooter 计算第一列的合计:

  1.     public partial class WebForm1 : System.Web.UI.Page
  2.     {
  3.         protected void Page_Load(object sender, EventArgs e)
  4.         {
  5.             //设置第一列数据,用于计算
  6.             this.FpSpread1.Sheets[0].RowCount = 10;
  7.             this.FpSpread1.Sheets[0].Cells[0, 0].Text = "1";
  8.             this.FpSpread1.Sheets[0].Cells[1, 0].Text = "1";
  9.             this.FpSpread1.Sheets[0].Cells[2, 0].Text = "1";
  10.             this.FpSpread1.Sheets[0].Cells[3, 0].Text = "1";
  11.             this.FpSpread1.Sheets[0].Cells[4, 0].Text = "1";

  12.             //定制 ColumnFooter
  13.             this.FpSpread1.ActiveSheetView.GroupFooterVisible = true;
  14.             this.FpSpread1.ActiveSheetView.ColumnFooter.Visible = true;
  15.             this.FpSpread1.ActiveSheetView.ColumnFooter.RowCount = 1;

  16.             //设置 ColumnFooter 第一列公式为 Sum ,用于计算第一列所有单元格加和.
  17.             this.FpSpread1.ActiveSheetView.Columns[0].AggregationType = FarPoint.Web.Spread.Model.AggregationType.Sum;
  18.         }
复制代码
效果图:

png

png
回复 使用道具 举报
thesadfrog
银牌会员   /  发表于:2011-10-28 12:09:00
5#
3.0 没这个功能吧
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2011-10-28 12:16:00
6#

回复 5# thesadfrog 的帖子

你好,Spread for ASP.NET 3 版本的没有 ColumnFooter 功能,从 Spread for ASP.NET 4 开始支持 ColumnFooter 功能.
回复 使用道具 举报
wp_pandy
高级会员   /  发表于:2011-10-28 12:25:00
7#
哦,使用分组只能合计只能是在最下面啊,我的数据是分组的,想实现如下效果的功能:
表头1|头2|头3|
aa    |dd | 1  |
bb    |cc  | 2  |
         合计| 3 |
bbd  | sf  | 5  |
bbd  | ssf | 5  |
          合计| 10 |
图片总是弄不上去,郁闷!
这编辑器上的图片图标是干什么的?
回复 使用道具 举报
wp_pandy
高级会员   /  发表于:2011-10-28 12:28:00
8#

jpg

jpg
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2011-10-28 15:01:00
9#
你好,感谢很详细的阐述问题,我针对你的需求做了一个 Demo:
1.GroupFooter 用于计算每个分组的和
2.ColumnFooter 用于计算该列的总和
代码如下:
  1. this.FpSpread1.Sheets[0].RowCount = 40;
  2.             this.FpSpread1.Sheets[0].PageSize = 40;
  3.             FpSpread1.Sheets[0].SheetName = "ColumnGroupFooter";
  4.             FpSpread1.Sheets[0].AllowGroup = true;
  5.             FpSpread1.Sheets[0].GroupBarVisible = true;

  6.             //设置 group 信息
  7.             FarPoint.Web.Spread.SheetView sv = this.FpSpread1.ActiveSheetView;
  8.             sv.AllowGroup = true;
  9.             GroupDataModel gdm = new GroupDataModel(sv.DataModel);
  10.             sv.DataModel = gdm;
  11.             FarPoint.Web.Spread.SortInfo[] sort = new FarPoint.Web.Spread.SortInfo[1];
  12.             sort[0] = new FarPoint.Web.Spread.SortInfo(3, true);
  13.             gdm.Group(sort);
  14.             FarPoint.Web.Spread.Model.Group group = new Group(gdm, (FarPoint.Web.Spread.Model.Group)gdm.Groups[0], 3, false);
  15.             GroupFooter groupfooter = new GroupFooter(group);
  16.             FpSpread1.Sheets[0].GroupFooterVisible = true;
  17.             

  18.             //定制 ColumnFooter
  19.             this.FpSpread1.ActiveSheetView.ColumnFooter.Visible = true;
  20.             this.FpSpread1.ActiveSheetView.ColumnFooter.RowCount = 1;

  21.             //设置 ColumnFooter,GroupFooter 第5列公式为 Sum ,用于计算第5列所有单元格加和.
  22.             this.FpSpread1.ActiveSheetView.Columns[4].AggregationType = FarPoint.Web.Spread.Model.AggregationType.Sum;
复制代码
效果图:

png

png
回复 使用道具 举报
wp_pandy
高级会员   /  发表于:2011-10-28 15:31:00
10#
我现在用的就是这种做饭,但是有个问题,就是当数据比较多时,FpSpread的样式就乱了,就没样式了,是怎么回事啊?
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部