找回密码
 立即注册

QQ登录

只需一步,快速开始

wp_pandy

高级会员

34

主题

166

帖子

1788

积分

高级会员

积分
1788

活字格认证

wp_pandy
高级会员   /  发表于:2011-12-13 14:57  /   查看:7352  /  回复:7
如图:
dde.png (8.02 KB, 下载次数: 619)

7 个回复

倒序浏览
iceman
社区贡献组   /  发表于:2011-12-13 15:28:00
沙发

回复 1# wp_pandy 的帖子

wp_pandy 你好,请尝试下面代码:

  1.             //初始化数据源
  2.             DataTable test = new DataTable();
  3.             test.Columns.Add(new DataColumn("金额"));
  4.             test.Columns.Add(new DataColumn("数量"));
  5.             test.Columns.Add(new DataColumn("总计"));
  6.             test.Rows.Add("3");
  7.             this.FpSpread1.ActiveSheetView.DataSource = test;

  8.             //设置客户端自动计算公式结果
  9.             this.FpSpread1.ClientAutoCalculation = true;

  10.             //设置单元格类型为文本型
  11.             FarPoint.Web.Spread.TextCellType text = new FarPoint.Web.Spread.TextCellType();
  12.             text.ShowEditor = true;
  13.             this.FpSpread1.ActiveSheetView.Columns[1].CellType = text;
  14.             this.FpSpread1.ActiveSheetView.Columns[2].CellType = text;

  15.             //设置统计公式
  16.             this.FpSpread1.ActiveSheetView.Cells[0, 2].Formula = "PRODUCT(A1*B1)";
复制代码
回复 使用道具 举报
wp_pandy
高级会员   /  发表于:2011-12-13 16:37:00
板凳
我的只有一个是文本框,其他两个都是默认类型,我去试试吧.
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2011-12-13 16:39:00
地板

回复 3# wp_pandy 的帖子

好的~
回复 使用道具 举报
wp_pandy
高级会员   /  发表于:2011-12-13 18:56:00
5#
版主,我试了你的方法,直接设置FpSpread的行数和列数,并赋值,然后使用的你方法来做是可以的,但是,当我改变LayoutMode的值时,使用自定义的模板来做,就不行了,代码如下:
private void SetFpSpread()
        {
            FpSpread1.Height = 500;

            FpSpread1.ActiveSheetView.LayoutMode = FarPoint.Web.Spread.SheetView.LayoutModeType.RowTemplateLayoutMode;
            FpSpread1.ActiveSheetView.RowTemplate.RowCount = 2;
            FpSpread1.ActiveSheetView.RowTemplate.ColumnCount = 3;
            FpSpread1.ActiveSheetView.RowTemplate.LayoutCells[0, 0].DataIndex = 0;
            FpSpread1.ActiveSheetView.RowTemplate.LayoutCells[1, 0].DataIndex = 1;
            FpSpread1.ActiveSheetView.RowTemplate.LayoutCells[0, 1].DataIndex = 2;
            FpSpread1.ActiveSheetView.RowTemplate.LayoutCells[1, 1].DataIndex = 3;
            FpSpread1.ActiveSheetView.RowTemplate.LayoutCells[0, 2].DataIndex = 4;
            FpSpread1.ActiveSheetView.RowTemplate.LayoutCells[1, 2].DataIndex = 5;
            FpSpread1.ActiveSheetView.Rows.Count = 3;
            FpSpread1.ActiveSheetView.ColumnCount = 6;
            FarPoint.Web.Spread.TextCellType txtCellType=new FarPoint.Web.Spread.TextCellType();
            txtCellType.ShowEditor=true;
            FpSpread1.ActiveSheetView.Columns[2].CellType = txtCellType;
            for (int i = 0; i < 3;i++ )
            {
                FpSpread1.ActiveSheetView.Cells[i, 0].Value = 2;
                FpSpread1.ActiveSheetView.Cells[i, 1].Value = 2;
                FpSpread1.ActiveSheetView.Cells[i, 3].Value = 3;
                FpSpread1.ActiveSheetView.Cells[i, 4].Value = 5;
            }
            FpSpread1.ActiveSheetView.Columns[5].Formula = &quotRODUCT(B,F)";
        }
我有几个问题,你代码中使用A1和B1来代码列,
你们使用字母来代表列的依据是什么?比如我有很多列,超过了字母的个数,我该怎样指定字母来对应的列?
如果是多表头,表头不止一行,又怎么表示,我做的代码,没对表头命名,结果它就自动以A、B、C这样来命名的,但是我使用B,F来代表列给公式,显示的结果又不对,这应该怎么写啊?
还有就是,使用这个公式只能是在绑定时,对列绑定了数据,然后它才会自动计算,我现在是需要在文本框中输入值,希望输过后,比如失去光标时,进行计算,这该怎么做呢?
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2011-12-14 13:43:00
6#
1.  A1 代表 Cell[0,0] 单元格,其中 A 为默认列标签,1为默认行标签,如果行列标签为非默认值,设置公式仍然以默认行列标签为准。如果列数大于 26 也就是,那么第 27、28、29 列的列索引分别为 AA 、AB、AC...,可以在设计器中查看。关于设置公式,例如我们想在 AC1 中给 AA1 和 AB1 单元格求和:
代码为:
  1.   this.FpSpread1.ActiveSheetView.Cells[0, 29].Formula = "SUM(AA1:AB1)";
复制代码
设计器操作效果图:

png

png

2.在你的代码最前面中添加

  1.      FpSpread1.ClientAutoCalculation = true;
复制代码
该属性值控制在客户端的自动运算。
回复 使用道具 举报
wp_pandy
高级会员   /  发表于:2011-12-14 16:12:00
7#
版主,就我上面写的那个示例,我试了,abcd是根据我定的索引顺序排的,虽然B是在第二行,但是他的标签还是B1,和你说的不太一样啊?
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2011-12-14 16:36:00
8#
你好,B1 是这样取得,方法如图:

png

png
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部