找回密码
 立即注册

QQ登录

只需一步,快速开始

gw0506
超级版主   /  发表于:2011-3-7 17:11:00
11#

回复 8# xiwu 的帖子

现在问题是在这一句:
//首先将所要检查的范围颜色设为白色
sv.Cells[2, 11, activeRows - 1, 37].BackColor = Color.White;

这里如果不设置白色,默认也是白色的对吧,所以从效果上看,是一样的。如果可以,就不要加这句了。
回复 使用道具 举报
xiwu
中级会员   /  发表于:2011-3-7 18:27:00
12#
这个不一定,,有可能之前已经执行过此操作,颜色已经改为其它颜色了,再执行的时候,需要将原有的颜色去除
回复 使用道具 举报
xiwu
中级会员   /  发表于:2011-3-8 09:10:00
13#
认真分析了一下,原因有两个
第一:代码太垃圾,优化后速度明显提升
//sv.Cells[2, 11, activeRows - 1, 37].BackColor = Color.White;
                          
                for (int i = 2; i < activeRows; i++)
                {
                    for (int j = 11; j < 39; j++)
                    {
                        if (sv.Cells[i, j].BackColor == Color.Red && sv.Cells[i, j].Formula != string.Empty)
                        {
                            sv.Cells[i, j].ResetBackColor();
                        }
                        if (sv.Cells[i, j].BackColor != Color.Red&&sv.Cells[i, j].Formula == string.Empty)
                        {
                            sv.Cells[i, j].BackColor = Color.Red;
                        }
                    }
                }
第二:sv.Cells[2, 11, activeRows - 1, 37].BackColor执行一次就很慢,原因有待0506研究
回复 使用道具 举报
gw0506
超级版主   /  发表于:2011-3-8 14:00:00
14#
因为你的表格数据本身较大,且很多公式,再加上activeRows也不小,所以这句代码造成的时间损耗,很难优化。
回复 使用道具 举报
12
您需要登录后才可以回帖 登录 | 立即注册
返回顶部