找回密码
 立即注册

QQ登录

只需一步,快速开始

ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2012-8-15 17:56:00
11#
如果fpSpread1.ActiveSheet.SetRowMerge()不能达到你的需求,只能使用fpSpread1.ActiveSheet.Models.Span.Add()来进行合并

我使用你的代码测试了,如果一个一个合并,总共耗时在2秒左右的时间,我的电脑是 i5 + 4g内存

  1.     private void Form1_Load(object sender, EventArgs e)
  2.     {
  3.         dtData.Columns.Add(new DataColumn());
  4.         dtData.Columns.Add(new DataColumn());
  5.         dtData.Columns.Add(new DataColumn());
  6.         dtData.Columns.Add(new DataColumn());
  7.         dtData.Columns.Add(new DataColumn());
  8.         dtData.Columns.Add(new DataColumn());
  9.         dtData.Columns.Add(new DataColumn());
  10.         dtData.Columns.Add(new DataColumn());
  11.         for (int i = 0; i < 20000; i++)
  12.         {
  13.             DataRow drData = dtData.NewRow();
  14.             drData[0] = "00" + i;
  15.             drData[1] = "01";
  16.             drData[2] = "02";
  17.             drData[3] = "03";
  18.             drData[4] = "04";
  19.             drData[5] = "05";
  20.             drData[6] = "06";
  21.             drData[7] = "07";
  22.             dtData.Rows.Add(drData);
  23.             drData = dtData.NewRow();
  24.             drData[0] = "00" + i;
  25.             drData[1] = "11";
  26.             drData[2] = "12";
  27.             drData[3] = "13";
  28.             drData[4] = "13";
  29.             drData[5] = "13";
  30.             drData[6] = "16";
  31.             drData[7] = "07";
  32.             dtData.Rows.Add(drData);
  33.         }
  34.         fpSpread1_Sheet1.RowCount = 0;
  35.         fpSpread1_Sheet1.RowCount = 10;

  36.         System.Diagnostics.Stopwatch sw = new System.Diagnostics.Stopwatch();
  37.         sw.Start();

  38.         fpSpread1.SuspendLayout();

  39.         fpSpread1.DataSource = dtData;
  40.         for (int i = 0; i < dtData.Rows.Count / 2; i++)
  41.         {
  42.             fpSpread1.ActiveSheet.Models.Span.Add(i * 2, 0, 2, 1);
  43.             fpSpread1.ActiveSheet.Models.Span.Add(i * 2 + 1, 3, 1, 3);
  44.         }
  45.         fpSpread1.ActiveSheet.Models.Span.Add(0, 7, fpSpread1.ActiveSheet.RowCount, 1);
  46.         fpSpread1.ResumeLayout();

  47.         sw.Stop();
  48.         MessageBox.Show("合并单元格耗时:" + sw.ElapsedMilliseconds.ToString() + "毫秒");
  49.     }
复制代码
回复 使用道具 举报
lzh3452
银牌会员   /  发表于:2012-8-15 19:04:00
12#
回复 11楼dof的帖子

好多了!:t(原来光合并就能等到死,换你的程序19秒了!又看到希望了!
i5果然强力啊!
O(∩_∩)O谢谢!
上帝给我大脑――于是我思考;上帝给我双脚――于是我奔跑;上帝给我十指――于是我上网。经过思考,我奔跑着来上网……
回复 使用道具 举报
12
您需要登录后才可以回帖 登录 | 立即注册
返回顶部