博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

C#合并Excel单元格

Posted on 2010-07-23 09:56  gczhao  阅读(3482)  评论(3编辑  收藏  举报

本文根据《C#编程典型实例解析》中例题一整理。

合并前EXCEL表格:

合并后EXCEL表格:

整理的函数如下:

 

代码
 1        /// <summary>
 2         /// 合并指定EXCEL的单元格
 3         /// </summary>
 4         /// <param name="mySheet">指定的EXCEL工作表</param>
 5         /// <param name="startLine">起始行</param>
 6         /// <param name="recCount">总行数</param>
 7         /// <param name="col">要合并的列</param>
 8         private void MergeCell_Second(ref Worksheet mySheet, int startLine, int recCount, string col)
 9         {
10             string qy1 = mySheet.get_Range(col + startLine.ToString(), col + startLine.ToString()).Text.ToString();//获得起始行合并列单元格的填充内容
11 
12             Range rg1;
13             string strtemp = "";
14             bool endCycle = false;
15 
16             //从起始行到终止行做循环
17             for (int i = startLine; i <= recCount + startLine - 1&&!endCycle; )
18             {
19                 for (int j = i + 1; j <= recCount + startLine - 1; j++)
20                 {
21                     rg1 = mySheet.get_Range(col + j.ToString(), col + j.ToString());//获得下一行的填充内容
22                     strtemp = rg1.Text.ToString().Trim();
23 
24                     if (strtemp.Trim()==qy1.Trim() )//内容等于初始内容
25                     {
26                         rg1 = mySheet.get_Range(col + i.ToString(), col + j.ToString());//选取上条合并位置和当前行的合并区域
27                         rg1.ClearContents();//清空要合并的区域
28                         rg1.MergeCells = true;
29                         if (col == "A")
30                             mySheet.Cells[i, 1= qy1;
31                         else if (col == "B")
32                             mySheet.Cells[i, 2= qy1;
33 
34                         if (j== recCount + startLine - 1)
35                         {
36                             endCycle = true;
37                         }
38                     }
39                     else//内容不等于初始内容
40                     {
41                         i = j;//i获取新值
42                         qy1 = mySheet.get_Range(col + j.ToString(), col + j.ToString()).Text.ToString();
43                         break;
44                     }
45                 }
46             }
47         }

 

 

调用方法如下:

 

1  MergeCell_Second(ref mySheet,3,recordCount,"A");//调用函数实现A列合并
2  MergeCell_Second(ref mySheet, 3, recordCount, "B");//调用函数实现B列合并