C#合并Excel单元格

 

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

合并前EXCEL表格:

合并后EXCEL表格:

整理的函数如下:

 

ExpandedBlockStart.gif 代码
 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列合并

 

转载于:https://www.cnblogs.com/tangself/archive/2010/12/02/1894755.html

要在C#中使用Microsoft.Office.Interop.Excel库来合并Excel单元格,可以按照以下步骤进行操作: 首先,需要创建一个Excel应用程序对象和一个工作簿对象。可以使用以下代码创建它们: ``` Microsoft.Office.Interop.Excel.Application xlApp = new Microsoft.Office.Interop.Excel.Application(); Microsoft.Office.Interop.Excel.Workbook myWorkbook = xlApp.Workbooks.Open(savePath); ``` 然后,获取活动工作表并确定要操作的单元格范围。可以使用以下代码获取工作表和记录的行数: ``` Microsoft.Office.Interop.Excel.Worksheet mySheet = myWorkbook.ActiveSheet; int excelCount = mySheet.UsedRange.CurrentRegion.Rows.Count; ``` 接下来,可以调用合并单元格的函数来实现单元格合并。可以使用以下代码来合并A列和B列的单元格: ``` MergeCell(ref mySheet, 1, excelCount, "A"); MergeCell(ref mySheet, 1, excelCount, "B"); ``` 最后,为了避免弹出保存和覆盖的提示框,可以将DisplayAlerts和AlertBeforeOverwriting属性设置为false: ``` xlApp.DisplayAlerts = false; xlApp.AlertBeforeOverwriting = false; ``` 请注意,上述代码中的MergeCell函数是自定义的函数,用于实际执行单元格合并的操作。您需要根据自己的需求来实现这个函数。 以上是在C#中使用Microsoft.Office.Interop.Excel合并Excel单元格的步骤。希望对您有所帮助! <span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [C#Excel单元格合并](https://blog.csdn.net/jiangzhaobao/article/details/7963130)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [C#合并Excel单元格](https://blog.csdn.net/Andrewniu/article/details/89416680)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值