找回密码
 立即注册

QQ登录

只需一步,快速开始

13818435845

注册会员

5

主题

18

帖子

53

积分

注册会员

积分
53
最新发帖
13818435845
注册会员   /  发表于:2017-1-22 21:21  /   查看:3840  /  回复:3
fpspread打开报表初始化时需要设置很多单元格elock属性和背景色,性能很慢,打开一张表五秒多,怎么改善性能

3 个回复

倒序浏览
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2017-1-23 10:22:34
沙发
您把您现在的代码发过来我们看下。
回复 使用道具 举报
13818435845
注册会员   /  发表于:2017-1-23 14:17:08
板凳
dexteryao 发表于 2017-1-23 10:22
您把您现在的代码发过来我们看下。

fpSpread1.ActiveSheet.Protect = true;
            for (int i = 0; i < 28; i++)
            {
                for (int j = 0; j <18; j++)
                {
                    if (array[i, j] == 1)
                    {
                        fpSpread1.ActiveSheet.Cells[i + 4, j + 3].Locked = false;
                    }
                }
            }
private int[,] array = new int[,] { {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 },
                                          {1,1,1,1,1,1,1,1,1,1,1,1,0,2,1,0,2,0 },
                                          {1,1,1,1,1,1,1,1,1,1,1,1,0,1,2,0,0,2 },
                                          {3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 },
                                          {3,3,1,1,1,1,1,1,1,1,1,1,0,2,1,0,2,0 },
        {3,3,1,1,1,1,1,1,1,1,1,1,0,1,2,0,0,2 },
        {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 },
        {3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 },
        {3,3,1,0,1,0,1,0,1,0,1,0,0,2,1,0,2,0 },
        {3,3,1,0,1,0,1,0,1,0,1,0,0,1,2,0,0,2 },
        {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 },
        {1,0,1,0,1,0,1,0,1,0,1,0,0,2,1,0,2,0 },
        {1,0,1,0,1,0,1,0,1,0,1,0,0,1,2,0,0,2 },
        {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 },
        {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 },
        {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 },
        {1,1,1,1,1,1,1,1,1,1,1,1,0,2,1,0,2,0 },
        {1,1,1,1,1,1,1,1,1,1,1,1,0,1,2,0,0,2 },
        {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 },
        {1,1,1,1,1,1,1,1,1,1,1,1,0,2,1,0,2,0 },
        {1,1,1,1,1,1,1,1,1,1,1,1,0,1,2,0,0,2 },
        {3,3,3,3,3,3,3,3,0,0,0,0,0,0,0,0,0,0 },
        {3,3,3,3,3,3,3,3,1,1,1,1,0,2,1,0,2,0 },
        {3,3,3,3,3,3,3,3,1,1,1,1,0,1,2,0,0,2 },
        {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 },
        {1,1,1,1,1,1,1,1,1,1,1,1,0,2,1,0,2,0 },
        {1,1,1,1,1,1,1,1,1,1,1,1,0,1,2,0,0,2 },
        {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }};
for (int i = 0; i < fpSpread1.ActiveSheet.RowCount; i++)
            {
                for (int j = 0; j < fpSpread1.ActiveSheet.ColumnCount; j++)
                {
                    if (fpSpread1.ActiveSheet.Cells[i, j].Locked.Equals(false))
                    {
                        fpSpread1.ActiveSheet.Cells[i, j].BackColor = System.Drawing.Color.FromArgb(((System.Byte)(198)), ((System.Byte)(226)), ((System.Byte)(255)));
                    }
                    else
                    {
                        fpSpread1.ActiveSheet.Cells[i, j].BackColor = this.BackColor;
                        fpSpread1.ActiveSheet.Cells[i, j].CanFocus = false;
                    }
                    if (this.fpSpread1.ActiveSheet.Cells[i, j].Locked.Equals(false) && flag)
                    {
                        this.fpSpread1.ActiveSheet.SetActiveCell(i, j);
                        flag = false;
                    }
                }
            }
回复 使用道具 举报
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2017-1-23 16:53:32
地板
您按照下面代码试下,把AllowCellOverflow 设置成false再设置背景色

  1. bool oldAllowCellOverflow = fpSpd.AllowCellOverflow;

  2.       fpSpd.AllowCellOverflow = false;

  3.       for (int r = 0; r < 27; r++)

  4.       {

  5.         for (int c = 0; c < 26; c++)

  6.         {

  7.           var rowIndex = r + 5;

  8.           var colIndex = c + 3;

  9.           Cell cell = fpSpd.ActiveSheet.Cells[rowIndex, colIndex];

  10.           if (cell != null)

  11.           {

  12.             cell.BackColor = Color.Gray;

  13.           }

  14.         }

  15.       }

  16.       fpSpd.AllowCellOverflow = oldAllowCellOverflow;      

  17.     }

  18.   }
复制代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部