找回密码
 立即注册

QQ登录

只需一步,快速开始

jbs3

中级会员

5

主题

16

帖子

941

积分

中级会员

积分
941

活字格认证

jbs3
中级会员   /  发表于:2012-10-27 19:57  /   查看:7081  /  回复:9
[winform]cell不为空时,设置指定颜色,如何实现

9 个回复

倒序浏览
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2012-10-29 18:15:00
沙发
你好

我可能没能完全明白你的需求,我的理解是:先判断该单元格是不是可以为空,然后通过fpSpread1.ActiveSheet.Cells[0,0].BackColor设置颜色。能否描述一下详细需求。
回复 使用道具 举报
jbs3
中级会员   /  发表于:2012-10-29 21:12:00
板凳
你好,
1)我的意思是在设计器里面,怎么设置这样的条件格式:当单元格值不为空时,标记相应的颜色,就是这个空,我不会表示。
2)另外,cell上设置完条件格式后,如何查看当前单元格已经设置了哪些条件格式
3)如何把公式应用到整行,而且能做到相对引用。(第一行就是C1+D1,第二行自动变成C2+D2)
如果我说的还不够清楚,能不能麻烦您帮我优化一下以下代码,初学,水平有限,望多多指点,谢谢了。
  1. public static void SetUiFumlar(FarPoint.Win.Spread.FpSpread fpSpread2)
  2.         {
  3.             //需要优化效率

  4.              //fpSpread2.Sheets[0].Cells[2.2].Value
  5.             fpSpread2.Sheets[0].Rows.Remove(2,fpSpread2.Sheets[0].Rows.Count-3);
  6.             //获取要显示的期数,从数据库读
  7.             string getViewQiShu = "SELECT viewQiShu FROM setting";
  8.             int viewQiShu = Convert.ToInt32(SqlHelper.getInstance.ExcuteScalar(getViewQiShu));
  9.             //viewQiShu = 100;
  10.             //从第二行开始,插入N行
  11.             //加载表格行
  12.            
  13.             fpSpread2.Sheets[0].Rows.Add(2, viewQiShu);
  14.             //获取相应的号码list
  15.             List<HaoMaObj> listHaoMa = getHaoMaObjList(viewQiShu);
  16.             //横向设置过程
  17.             for (int i = 0; i < viewQiShu; i++)
  18.             {
  19.                 //期号,开奖号
  20.                 fpSpread2.Sheets[0].Cells[i+2, 0].Value = listHaoMa[i].QiHao;//期号
  21.                 fpSpread2.Sheets[0].Cells[i + 2, 1].Value = listHaoMa[i].KaiJiangHao;//开奖号,五位,前三,后三
  22.                 //二次合,二次差,三次合,三次差

  23.                 string BI = "B" + (i + 3).ToString();
  24.                 string CI = "C" + (i + 3).ToString();
  25.                 string DI = "D" + (i + 3).ToString();
  26.                 string EI = "E" + (i + 3).ToString();
  27.                 string FI = "F" + (i + 3).ToString();
  28.                
  29.                 fpSpread2.Sheets[0].Cells[i + 2, 2].Formula = string.Format("MOD(MOD(MID({0},3,1)+MID({0},4,1)+MID({0},5,1),10)*2,10)", BI);
  30.                 fpSpread2.Sheets[0].Cells[i + 2, 3].Formula = string.Format("MOD((MAX(MID({0},3,1),MID({0},4,1),MID({0},5,1))-MIN(MID({0},3,1),MID({0},4,1),MID({0},5,1)))*2,10)", BI);
  31.                 fpSpread2.Sheets[0].Cells[i + 2, 4].Formula = string.Format("MOD({0}+{1},10)",CI,DI);
  32.                 fpSpread2.Sheets[0].Cells[i + 2, 5].Formula = string.Format("ABS({0}-{1})", CI, DI);
  33.                 //二类走势
  34.                 fpSpread2.Sheets[0].Cells[i + 2, 7].Formula = string.Format("IF(OR({0}=0,{1}=0),0,"")",CI,DI);
  35.                 fpSpread2.Sheets[0].Cells[i + 2, 8].Formula = string.Format("IF(OR({0}=2,{1}=2),2,"")", CI, DI);
  36.                 fpSpread2.Sheets[0].Cells[i + 2, 9].Formula = string.Format("IF(OR({0}=4,{1}=4),4,"")", CI, DI);
  37.                 fpSpread2.Sheets[0].Cells[i + 2, 10].Formula = string.Format("IF(OR({0}=6,{1}=6),6,"")", CI, DI);
  38.                 fpSpread2.Sheets[0].Cells[i + 2, 11].Formula = string.Format("IF(OR({0}=8,{1}=8),8,"")", CI, DI);
  39.                 //二类分析
  40.                 fpSpread2.Sheets[0].Cells[i + 2, 13].Formula = string.Format("IF(OR({0}=0,{0}=2,{0}=4,{1}=0,{1}=2,{1}=4),"024","")", CI, DI);
  41.                 fpSpread2.Sheets[0].Cells[i + 2, 14].Formula = string.Format("IF(OR({0}=0,{0}=2,{0}=6,{1}=0,{1}=2,{1}=6),"026","")", CI, DI);
  42.                 fpSpread2.Sheets[0].Cells[i + 2, 15].Formula = string.Format("IF(OR({0}=0,{0}=2,{0}=8,{1}=0,{1}=2,{1}=8),"028","")", CI, DI);
  43.                 fpSpread2.Sheets[0].Cells[i + 2, 16].Formula = string.Format("IF(OR({0}=0,{0}=4,{0}=6,{1}=0,{1}=4,{1}=6),"046","")", CI, DI);
  44.                 fpSpread2.Sheets[0].Cells[i + 2, 17].Formula = string.Format("IF(OR({0}=0,{0}=4,{0}=8,{1}=0,{1}=4,{1}=8),"048","")", CI, DI);
  45.                 fpSpread2.Sheets[0].Cells[i + 2, 18].Formula = string.Format("IF(OR({0}=0,{0}=6,{0}=8,{1}=0,{1}=6,{1}=8),"068","")", CI, DI);
  46.                 fpSpread2.Sheets[0].Cells[i + 2, 19].Formula = string.Format("IF(OR({0}=2,{0}=4,{0}=6,{1}=2,{1}=4,{1}=6),"246","")", CI, DI);
  47.                 fpSpread2.Sheets[0].Cells[i + 2, 20].Formula = string.Format("IF(OR({0}=2,{0}=4,{0}=8,{1}=2,{1}=4,{1}=8),"248","")", CI, DI);
  48.                 fpSpread2.Sheets[0].Cells[i + 2, 21].Formula = string.Format("IF(OR({0}=2,{0}=6,{0}=8,{1}=2,{1}=6,{1}=8),"268","")", CI, DI);
  49.                 fpSpread2.Sheets[0].Cells[i + 2, 22].Formula = string.Format("IF(OR({0}=4,{0}=6,{0}=8,{1}=4,{1}=6,{1}=8),"468","")", CI, DI);
  50.                 //三类走势
  51.                 fpSpread2.Sheets[0].Cells[i + 2, 24].Formula = string.Format("IF(OR({0}=0,{1}=0),0,"")", EI, FI);
  52.                 fpSpread2.Sheets[0].Cells[i + 2, 25].Formula = string.Format("IF(OR({0}=2,{1}=2),2,"")", EI, FI);
  53.                 fpSpread2.Sheets[0].Cells[i + 2, 26].Formula = string.Format("IF(OR({0}=4,{1}=4),4,"")", EI, FI);
  54.                 fpSpread2.Sheets[0].Cells[i + 2, 27].Formula = string.Format("IF(OR({0}=6,{1}=6),6,"")", EI, FI);
  55.                 fpSpread2.Sheets[0].Cells[i + 2, 28].Formula = string.Format("IF(OR({0}=8,{1}=8),8,"")", EI, FI);
  56.                 //三类分析
  57.                 fpSpread2.Sheets[0].Cells[i + 2, 30].Formula = string.Format("IF(OR({0}=0,{0}=2,{0}=4,{1}=0,{1}=2,{1}=4),"024","")", EI, FI);
  58.                 fpSpread2.Sheets[0].Cells[i + 2, 31].Formula = string.Format("IF(OR({0}=0,{0}=2,{0}=6,{1}=0,{1}=2,{1}=6),"026","")", EI, FI);
  59.                 fpSpread2.Sheets[0].Cells[i + 2, 32].Formula = string.Format("IF(OR({0}=0,{0}=2,{0}=8,{1}=0,{1}=2,{1}=8),"028","")", EI, FI);
  60.                 fpSpread2.Sheets[0].Cells[i + 2, 33].Formula = string.Format("IF(OR({0}=0,{0}=4,{0}=6,{1}=0,{1}=4,{1}=6),"046","")", EI, FI);
  61.                 fpSpread2.Sheets[0].Cells[i + 2, 34].Formula = string.Format("IF(OR({0}=0,{0}=4,{0}=8,{1}=0,{1}=4,{1}=8),"048","")", EI, FI);
  62.                 fpSpread2.Sheets[0].Cells[i + 2, 35].Formula = string.Format("IF(OR({0}=0,{0}=6,{0}=8,{1}=0,{1}=6,{1}=8),"068","")", EI, FI);
  63.                 fpSpread2.Sheets[0].Cells[i + 2, 36].Formula = string.Format("IF(OR({0}=2,{0}=4,{0}=6,{1}=2,{1}=4,{1}=6),"246","")", EI, FI);
  64.                 fpSpread2.Sheets[0].Cells[i + 2, 37].Formula = string.Format("IF(OR({0}=2,{0}=4,{0}=8,{1}=2,{1}=4,{1}=8),"248","")", EI, FI);
  65.                 fpSpread2.Sheets[0].Cells[i + 2, 38].Formula = string.Format("IF(OR({0}=2,{0}=6,{0}=8,{1}=2,{1}=6,{1}=8),"268","")", EI, FI);
  66.                 fpSpread2.Sheets[0].Cells[i + 2, 39].Formula = string.Format("IF(OR({0}=4,{0}=6,{0}=8,{1}=4,{1}=6,{1}=8),"468","")", EI, FI);

  67.                 //混合类走势
  68.                 fpSpread2.Sheets[0].Cells[i + 2, 41].Formula = string.Format("IF(OR({0}=0,{1}=0,{2}=0,{3}=0),0,"")",CI,DI ,EI, FI);
  69.                 fpSpread2.Sheets[0].Cells[i + 2, 42].Formula = string.Format("IF(OR({0}=2,{1}=2,{2}=2,{3}=2),2,"")", CI, DI, EI, FI);
  70.                 fpSpread2.Sheets[0].Cells[i + 2, 43].Formula = string.Format("IF(OR({0}=4,{1}=4,{2}=4,{3}=4),4,"")", CI, DI, EI, FI);
  71.                 fpSpread2.Sheets[0].Cells[i + 2, 44].Formula = string.Format("IF(OR({0}=6,{1}=6,{2}=6,{3}=6),6,"")", CI, DI, EI, FI);
  72.                 fpSpread2.Sheets[0].Cells[i + 2, 45].Formula = string.Format("IF(OR({0}=8,{1}=8,{2}=8,{3}=8),8,"")", CI, DI, EI, FI);
  73.                 //混合类分析
  74.                 fpSpread2.Sheets[0].Cells[i + 2, 47].Formula = string.Format("IF(OR({0}=0,{0}=6,{1}=0,{1}=6,{2}=0,{2}=6,{3}=0,{3}=6),"06","")", CI, DI, EI, FI);
  75.                 fpSpread2.Sheets[0].Cells[i + 2, 48].Formula = string.Format("IF(OR({0}=0,{0}=8,{1}=0,{1}=8,{2}=0,{2}=8,{3}=0,{3}=8),"08","")", CI, DI, EI, FI);
  76.                 fpSpread2.Sheets[0].Cells[i + 2, 49].Formula = string.Format("IF(OR({0}=2,{0}=4,{1}=2,{1}=4,{2}=2,{2}=4,{3}=2,{3}=4),"24","")", CI, DI, EI, FI);
  77.                 fpSpread2.Sheets[0].Cells[i + 2, 50].Formula = string.Format("IF(OR({0}=2,{0}=6,{1}=2,{1}=6,{2}=2,{2}=6,{3}=2,{3}=6),"26","")", CI, DI, EI, FI);
  78.                 fpSpread2.Sheets[0].Cells[i + 2, 51].Formula = string.Format("IF(OR({0}=2,{0}=8,{1}=2,{1}=8,{2}=2,{2}=8,{3}=2,{3}=8),"28","")", CI, DI, EI, FI);
  79.                 fpSpread2.Sheets[0].Cells[i + 2, 52].Formula = string.Format("IF(OR({0}=4,{0}=6,{1}=4,{1}=6,{2}=4,{2}=6,{3}=4,{3}=6),"46","")", CI, DI, EI, FI);
  80.                 fpSpread2.Sheets[0].Cells[i + 2, 53].Formula = string.Format("IF(OR({0}=4,{0}=8,{1}=4,{1}=8,{2}=4,{2}=8,{3}=4,{3}=8),"48","")", CI, DI, EI, FI);
  81.                 fpSpread2.Sheets[0].Cells[i + 2, 54].Formula = string.Format("IF(OR({0}=6,{0}=8,{1}=6,{1}=8,{2}=6,{2}=8,{3}=6,{3}=8),"68","")", CI, DI, EI, FI);
  82.                
  83.                 /***************************条件格式处理过程************************************************/
  84.                 //色彩匹配处理过程
  85.                
  86.                 FarPoint.Win.Spread.NamedStyle styleCold = new FarPoint.Win.Spread.NamedStyle();
  87.                 // styleCold.BackColor = Color.BlueViolet;//紫
  88.                 //styleCold.BackColor = Color.Blue;
  89.                 styleCold.BackColor = Color.YellowGreen;
  90.                 styleCold.ForeColor =Color.White;

  91.                 styleCold.Font = new Font("宋体",14,FontStyle.Bold) ;
  92.                 FarPoint.CalcEngine.Expression one = new FarPoint.CalcEngine.StringExpression("");
  93.                 //设置走势条件格式
  94.                 fpSpread2.Sheets[0].SetConditionalFormat(i + 2, 7, 1, 48, styleCold, FarPoint.Win.Spread.ComparisonOperator.NotEqualTo, one);
  95.             
  96.          

  97.             }
  98.             

  99.         }
复制代码


[img=780746,455]http://www.lhceo.com/data/attachment/forum/201210/29/215036n2r8qzgkmzi8abck.png[/img]
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2012-10-30 19:36:00
地板
通过以下代码可以取到设置的条件格式:
  1.             int row = 0;
  2.             int col = 3;
  3.             FarPoint.Win.Spread.ConditionalFormat[] cf;
  4.             cf = fpSpread1.ActiveSheet.GetConditionalFormats(ref row, ref col, true);
复制代码


公式应用到整行,你是想给某一列设置一样的公式吗?可以使用下面的代码:
  1. fpSpread1.ActiveSheet.Columns[0].Formula = &quot;B1+C1&quot;;
复制代码
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2012-10-30 19:38:00
5#
你给出的代码会涉及到循环操作Spread的UI和公式,所以建议在SetUiFumlar方法的开始结束位置分别增加以下代码:
  1.         public void SetUiFumlar(FarPoint.Win.Spread.FpSpread fpSpread2)
  2.         {
  3.             fpSpread1.SuspendLayout();
  4.             fpSpread1.Sheets[0].AutoCalculation = false;
  5.             ...
  6.             ...
  7.             fpSpread1.Sheets[0].AutoCalculation = true;
  8.             fpSpread1.ResumeLayout();
  9.             }
复制代码
回复 使用道具 举报
jbs3
中级会员   /  发表于:2012-10-30 20:22:00
6#
感谢版主耐心解答,服务真好。
另外,还有一个小问题,您帮我解答一下
如何应用不同的公式到一整列?
第一列:A1+B1
第二列:A2+B2
第三列:A3+B3
只能用循环来实现吗?
有没有方便一点的办法呢?感谢dof版主耐心解答。
回复 使用道具 举报
jbs3
中级会员   /  发表于:2012-10-30 20:27:00
7#
回复 4楼dof的帖子

公式应用到整行,你是想给某一列设置一样的公式吗?可以使用下面的代码:
fpSpread1.ActiveSheet.Columns[0].Formula = &quot;B1+C1&quot;;

我是想让那个B1+C1随着行的变化而变化。有没有好办法?
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2012-11-1 11:28:00
8#
使用以下代码,就可以实现你的功能:
Cells[0,0].Formula = &quot;B1+C1&quot;
Cells[1,0].Formula = &quot;B2+C2&quot;
Cells[2,0].Formula = &quot;B3+C3&quot;


  1.         private void Form1_Load(object sender, EventArgs e)
  2.         {
  3.             fpSpread1.AllowUserFormulas = true;
  4.             fpSpread1.ActiveSheet.Cells[0, 0, 5, 0].Formula = &quot;B1+C1&quot;;

  5.             fpSpread1.ActiveSheet.Columns[3].Formula = &quot;E1*F1&quot;;
  6.         }
复制代码


Demo VS2010 + Spread .NET 6.0
6671_Color.zip (10.08 KB, 下载次数: 501)
回复 使用道具 举报
jbs3
中级会员   /  发表于:2012-11-1 11:33:00
9#
谢谢问题解决了。
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2012-11-1 11:56:00
10#
好的,谢谢反馈。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部