找回密码
 立即注册

QQ登录

只需一步,快速开始

lmm1508561

高级会员

7

主题

36

帖子

1377

积分

高级会员

积分
1377

活字格认证

lmm1508561
高级会员   /  发表于:2012-3-15 14:27  /   查看:5819  /  回复:9
1、能用js获取或设置 公式、格式、样式吗?具体代码?
2、拆分单元格 js 和 后台代码分别怎么写?
3、如何获取选中的单个单元格或批量单元格?
4、清除:(具体代码)
   a、清除整个sheet0 的样式 或单个单元格的样式?
   b、清除整个sheet0 的格式 或单个单元格的格式?
   c、清除整个sheet0 的公式 或单个单元格的公式?

9 个回复

倒序浏览
iceman
社区贡献组   /  发表于:2012-3-15 15:35:00
沙发

回复 1# lmm1508561 的帖子

1. js 获取公式 GetFormula()
    js 获取格式 GetCellByRowCol(row,column).Style
    js 获取样式 GetCellByRowCol(row,column).CellType2
    或
     js 获取样式 GetCellByRowCol(row,column).FpCellType
2.可以现获取 FpSpread1_view,在前端其为 Html Table,接下来即可按照 Html table 操作方式拆分:
  1. var spreadTable = this.document.getElementById("FpSpread1_view");
复制代码
3.获取选择单元格
   FpSpread1.GetCellByRowCol(row,column);
  获取选择 CellRange

  1. <SCRIPT language=javascript>
  2.     function showSelection() {
  3.        var rg = FpSpread1.GetSelectedRange();
  4.        alert("selected "+rg.type+", "+rg.row+", "+rg.col+", "+rg.rowCount+", "+rg.colCount);
  5.     }
  6. </SCRIPT>
复制代码
4.清除 Sheet 样式或单元格样式:
  1. this.FpSpread1.Sheets[0].NamedStyles[0].Reset();         
  2. this.FpSpread1.Sheets[0].Cells[0, 0].StyleName.Remove(0);
复制代码
清除 Sheet 格式或单元格格式:

  1. //无清除整个 Sheet 单元格类型方法,可以尝试使用 Reset() 方法
  2. this.FpSpread1.Sheets[0].Reset();
  3. this.FpSpread1.Sheets[0].Cells[0, 0].ResetCellType();
复制代码
清除整个 Sheet 公式或单元格公式:

  1. //无清除整个 Sheet 方法,可以清除 CellRange 公式
  2. this.FpSpread1.Sheets[0].ClearRange();
  3. this.FpSpread1.Sheets[0].Cells[0, 0].ResetFormula();
复制代码
回复 使用道具 举报
lmm1508561
高级会员   /  发表于:2012-3-15 16:05:00
板凳
1、后台拆分单元格怎么写?
2、获取单元格  FpSpread1.GetCellByRowCol(row,column);找不到这个方法么?
还有这个能获取批量选中的单元格吗?

js 取单元格这个也不对如下图
QQ截图20120315161416.png (39.54 KB, 下载次数: 331)
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2012-3-15 17:31:00
地板

回复 3# lmm1508561 的帖子

lmm1508561 你好,
1.后台合并单元格方法、取消合并单元格方法,不能拆分单元格:
  1. this.fpSpread1.Sheets[0].AddSpanCell(0, 0, 2, 2);
  2.             this.fpSpread1.Sheets[0].RemoveSpanCell(0, 0);
复制代码
2.GetCellByRowCol 属于 Spread 前台方法,可以参考帮助文档。
  1. <SCRIPT language=javascript>
  2.    function showCell() {
  3.        var scell = FpSpread1.GetCellByRowCol(0, 0).outerHTML
  4.        alert("Cell is" + scell);    }
  5. </SCRIPT>
复制代码
3.如果设置选择方式为:
  1. this.FpSpread1.Sheets[0].SelectionPolicy = FarPoint.Web.Spread.Model.SelectionPolicy.MultiRange;
复制代码
则使用如下选择方式:
  1. <script type="text/javascript">
  2.     function Button1_onclick()
  3.     {
  4.         var s = document.getElementById("FpSpread1");
  5.         var rgs = s.GetSelectedRanges();
  6.         for (var i=0; i<rgs.length; i++)
  7.         {
  8.             var rg = rgs[i];
  9.             alert(rg.row+", "+rg.col+", "+rg.rowCount+", "+rg.colCount);
  10.         }
  11.     }
  12. </script>
复制代码
回复 使用道具 举报
lmm1508561
高级会员   /  发表于:2012-3-16 08:56:00
5#
前台设置样式、公式、格式的方法上面没回答么?

获取选择的单元格有没后台方法?具体代码如何写? (包括设置了选择方式 this.FpSpread1.Sheets[0].SelectionPolicy = FarPoint.Web.Spread.Model.SelectionPolicy.MultiRange;)
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2012-3-16 09:34:00
6#

回复 5# lmm1508561 的帖子

lmm1508561 你好,
Spread for ASP.NET 没有提供后台获取 Selections 方法。
不过我们可以通过前台获取后传到后台,我的实现方法如下:
前台,给 HiddenFiled 赋值
  1. <script type="text/javascript">
  2.     function Button1_onclick()
  3.     {
  4.         var s = document.getElementById("FpSpread1");
  5.         var rgs = s.GetSelectedRanges();
  6.         var select;
  7.         var selections = this.document.getElementById("HiddenField1");
  8.         for (var i=0; i<rgs.length; i++)
  9.         {
  10.             var rg = rgs[i];
  11.             var
  12.             select ="["+ rg.row + ", " + rg.col + ", " + rg.rowCount + ", " + rg.colCount+"]";
  13.             selections.value = select + selections.value;
  14.         }
  15.     }
  16. </script>
复制代码
后台,取得 HiddenField Value 值:
  1.         protected void Button2_Click(object sender, EventArgs e)
  2.         {
  3.             string selections = this.HiddenField1.Value;
  4.         }
复制代码
回复 使用道具 举报
lmm1508561
高级会员   /  发表于:2012-3-16 09:44:00
7#
  1. protected void btn_Click(object sender, EventArgs e)
  2.         {
  3.             if (!string.IsNullOrEmpty(this.txtSelectCells.Value))
  4.             {
  5.                 this.txtSelectCells.Value = this.txtSelectCells.Value.Substring(0, this.txtSelectCells.Value.Length - 1);
  6.                 string[] selectcell = this.txtSelectCells.Value.Split(';');
  7.                 for (int i = 0; i &lt; selectcell.Length; i++)
  8.                 {
  9.                     string[] s = selectcell[i].Split(',');
  10.                     for(int j=int.Parse(s[0]);j&lt;int.Parse(s[0])+int.Parse(s[2]);j++)
  11.                     {
  12.                         for (int k = int.Parse(s[1]); k &lt; int.Parse(s[1]) + int.Parse(s[3]); k++)
  13.                         {
  14.                             this.FpSpread1.ActiveSheetView.Cells[j,k].Font.Size = System.Web.UI.WebControls.FontUnit.Point(int.Parse(ddlFontSize.SelectedValue));
  15.                         }

  16.                     }
  17.                   
  18.                 }
  19.             }            
  20.         }
复制代码
我这个方法本想来设置字体的,但是 this.FpSpread1.ActiveSheetView.Cells[参数1,参数2,参数3,参数4]
参数3和4不是那个选中连续的行数和列数,而我获取来的是实际的参数是连续选中的行数和列数,这个我需要自己去拆分么,还是有另外的方法设置? 或者有什么代码可以参考?
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2012-3-16 11:11:00
8#

回复 7# lmm1508561 的帖子

楼主是想通过 CellRange 而不是 Cell 设置字体吧?
  1.                 for (int i = 0; i &lt; selectcell.Length; i++)
  2.                 {
  3.                     string[] s = selectcell[i].Split(',');
  4.                     this.FpSpread1.Sheets[0].Cells[int.Parse(s[0]), int.Parse(s[1]), int.Parse(s[0]) + int.Parse(s[2]) - 1, int.Parse(s[1]) + int.Parse(s[2]) - 1].Size = System.Web.UI.WebControls.FontUnit.Point(int.Parse(ddlFontSize.SelectedValue));
  5.                 }
复制代码
回复 使用道具 举报
lmm1508561
高级会员   /  发表于:2012-3-16 12:24:00
9#
谢谢,以解决。
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2012-3-16 14:05:00
10#

回复 9# lmm1508561 的帖子

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