C#中Excel单元格合并

下面的方法主要是对于一个已知的EXCEL进行合并里面的单元格。

string savePath="C:\\Users\\Administrator\\Desktop\\xxx.xls";//excel的路径

Microsoft.Office.Interop.Excel.Application xlApp = null;//Execl的操作类
Microsoft.Office.Interop.Excel.Workbook myWorkbook = null;//打开已有的工作簿
try
{
   xlApp = new Microsoft.Office.Interop.Excel.Application();
   myWorkbook = xlApp.Workbooks.Open(savePath);
   Microsoft.Office.Interop.Excel.Worksheet mySheet = myWorkbook.ActiveSheet;//获取工作表

   int excelCount = mySheet.UsedRange.CurrentRegion.Rows.Count;//获得记录的行数
   MergeCell(ref mySheet, 1, excelCount, "A");//合并单元格
   MergeCell(ref mySheet, 1, excelCount, "B");//合并单元格

   //设置禁止弹出保存和覆盖的询问提示框
   xlApp.DisplayAlerts = false;
   xlApp.AlertBeforeOverwriting = false;

   //保存所做的修改
   xlApp.SaveWorkspace();
}
catch (Exception ex)
{

//异常时,处理代码
}
finally
{
   if (xlApp!=null)
        xlApp.Quit();//退出Excel
   xlApp = null;
}


/// <summary>
/// 合并指定EXCEL的单元格
/// </summary>
/// <param name="mySheet">指定的EXCEL工作表</param>
/// <param name="startLine">起始行</param>
/// <param name="recCount">总行数</param>
/// <param name="col">要合并的列</param>
private void MergeCell(ref Microsoft.Office.Interop.Excel.Worksheet mySheet, int startLine, int recCount, string col)
{
    //获得起始行合并列单元格的填充内容
    string qy1 = mySheet.get_Range(col + startLine.ToString(), col + startLine.ToString()).Text.ToString();

    Microsoft.Office.Interop.Excel.Range rg1;
    string strtemp = "";
    bool endCycle = false;

    //从起始行到终止行做循环
     for (int i = startLine; i <= recCount + startLine - 1&&!endCycle; )
     {
         for (int j = i + 1; j <= recCount + startLine - 1; j++)
         {
             rg1 = mySheet.get_Range(col + j.ToString(), col + j.ToString());//获得下一行的填充内容
             strtemp = rg1.Text.ToString().Trim();
             //最后一行时,标记循环结束
             if (j == recCount + startLine - 1)
                 endCycle = true;
             if (strtemp.Trim()==qy1.Trim() )//内容等于初始内容
             {
                 rg1 = mySheet.get_Range(col + i.ToString(), col + j.ToString());//选取上条合并位置和当前行的合并区域
                 rg1.ClearContents();//清空要合并的区域
                 rg1.MergeCells = true;
                 if (col == "A")
                     mySheet.Cells[i, 1] = qy1;
                 else if (col == "B")
                     mySheet.Cells[i, 2] = qy1;
             }
             else//内容不等于初始内容
             {
                 i = j;//i获取新值
                 qy1 = mySheet.get_Range(col + j.ToString(), col + j.ToString()).Text.ToString();
                 break;
             }
         }
     }
}


  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
要在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 ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值