找回密码
 立即注册

QQ登录

只需一步,快速开始

[已处理] 锁定单元格

iceman
社区贡献组   /  发表于:2014-9-22 16:56:00
11#
回复 10楼guxinghan的帖子

guxinghan 您好,
很感谢您的详细描述,我根据描述做了以下操作:
1.创建 excel,普通单元格中包含行头行和带有背景色和公式的行。
2.通过 Spread 加载,做了以下设置:
  1.         
  2.          protected void Button1_Click(object sender, EventArgs e)
  3.         {
  4.             this.FpSpread1.OpenExcel(this.Server.MapPath("Book1.xlsx"), FarPoint.Excel.ExcelOpenFlags.TruncateEmptyRowsAndColumns);
  5.            
  6.             // 样式拷贝
  7.             FarPoint.Web.Spread.Model.DefaultSheetStyleModel modelSty = (FarPoint.Web.Spread.Model.DefaultSheetStyleModel)FpSpread1.ActiveSheetView.StyleModel;
  8.             // 数据(公式)拷贝
  9.             FarPoint.Web.Spread.Model.DefaultSheetDataModel dmSty = (FarPoint.Web.Spread.Model.DefaultSheetDataModel)FpSpread1.ActiveSheetView.DataModel;

  10.             this.FpSpread1.Sheets[0].RowCount=70;
  11.             this.FpSpread1.Sheets[0].AllowPage=false;

  12.             for (int i = 0; i < 70; i++)
  13.             {
  14.                 for (int j = 0; j < 6; j++)
  15.                 {
  16.                     this.FpSpread1.Sheets[0].Cells[i, j].Locked = true;
  17.                 }
  18.             }

  19.             this.FpSpread1.Sheets[0].Protect = true;

  20.             for (int i = 2; i < 70; i++)
  21.                         {
  22.                 modelSty.Copy(1, 0, i, 0, 1, 6);
  23.                 dmSty.Copy(1, 0, i, 0, 1, 6);
  24.                         }
  25.         }
复制代码


然而没有重现问题,所以请您下载附件 Demo 测试看能否重现,我们会根据您的反馈信息进行进一步测试:
VS2013 + IE11 + Spread for ASP.NET 7.0V4
13791_ImportExcel.zip (14 KB, 下载次数: 209)
回复 使用道具 举报
guxinghan
论坛元老   /  发表于:2014-9-22 17:38:00
12#
按照你的方法,你的Demo能够锁定单元格,没问题。但是到我程序里,只要注释掉modelSty.Copy和dmSty.Copy 就能锁定,解除注释,就锁定不了,我在调试一下吧,比较奇怪。
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2014-9-23 10:22:00
13#
回复 12楼guxinghan的帖子

好的,有问题随时沟通。

为了给你提供更优质的服务,请对本次服务进行评分。我们会认真对待你提出的宝贵意见,谢谢

评分

参与人数 1满意度 +5 收起 理由
guxinghan + 5 一直努力帮助解决问题

查看全部评分

回复 使用道具 举报
guxinghan
论坛元老   /  发表于:2014-9-23 11:19:00
14#
经过进一步调试,发现单元格没有锁定
是由于modelSty.Copy(startRow - 1, 0, startRow + totalRows2, 0, currRows2, budgetTemplate.FindColumnIndex(endCol));
引起的,有好的建议吗?谢谢。
回复 使用道具 举报
guxinghan
论坛元老   /  发表于:2014-9-23 11:29:00
15#
protected void Page_Load(object sender, EventArgs e)
        {
            this.FpSpread1.OpenExcel(this.Server.MapPath("Book1.xlsx"), FarPoint.Excel.ExcelOpenFlags.TruncateEmptyRowsAndColumns);

            this.FpSpread1.ActiveSheetView.RowCount = 70;
            this.FpSpread1.ActiveSheetView.AllowPage = false;
            this.FpSpread1.ActiveSheetView.Protect = true;

            for (int i = 0; i < 70; i++)
            {
                this.FpSpread1.ActiveSheetView.Rows.Locked = false;
            }

            // 样式拷贝
            FarPoint.Web.Spread.Model.DefaultSheetStyleModel modelSty = (FarPoint.Web.Spread.Model.DefaultSheetStyleModel)FpSpread1.ActiveSheetView.StyleModel;
            // 数据(公式)拷贝
            FarPoint.Web.Spread.Model.DefaultSheetDataModel dmSty = (FarPoint.Web.Spread.Model.DefaultSheetDataModel)FpSpread1.ActiveSheetView.DataModel;           
           

            

            for (int i = 2; i < 70; i++)
            {
                modelSty.Copy(1, 0, i, 0, 1, 6);
                dmSty.Copy(1, 0, i, 0, 1, 6);
            }

            for (int i = 10; i < 20; i++){
                this.FpSpread1.ActiveSheetView.Rows.BackColor = Color.Red;
                this.FpSpread1.ActiveSheetView.Rows.ForeColor = Color.White;
            }
           
        }
代码有两个疑问
1 为什么我
this.FpSpread1.ActiveSheetView.Rows.Locked = false;
单元格还不能编辑

2
for (int i = 10; i < 20; i++){
                this.FpSpread1.ActiveSheetView.Rows.BackColor = Color.Red;
                this.FpSpread1.ActiveSheetView.Rows.ForeColor = Color.White;
            }
为什么不好用?设置成cells单元格能够变色,用rows单元格没有变色
回复 使用道具 举报
guxinghan
论坛元老   /  发表于:2014-9-23 11:42:00
16#
循环行列,锁定单元格好用
我现在想问的是,为什么直接锁定行或者改变行的背景色,字体色不好用,直接操作单元格就好用呢?
如果这样,数据量的的时候,服务器负载时很大的,得把所有单元格都跑一遍,这是属于控件bug,还是我用的方法有问题?
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2014-9-23 20:31:00
17#
回复 15楼guxinghan的帖子

并非是bug,15# 问题是产品设计。
单元格下的 Locked 属性优先级高于 Row 的Locked 属性。

建议您在前台实现单元格的解锁和锁定:http://blog.gcpowertools.com.cn/ ... 5%8B%E5%80%BC-.aspx
回复 使用道具 举报
12
您需要登录后才可以回帖 登录 | 立即注册
返回顶部