• 在Excel中将连续多列相同数据项合并


    效果图如下:


    代码如下:
    /// <summary>
            
    /// 合并工作表中指定行数和列数数据相同的单元格
            
    /// </summary>
            
    /// <param name="sheetIndex">工作表索引</param>
            
    /// <param name="beginRowIndex">开始行索引</param>
            
    /// <param name="beginColumnIndex">开始列索引</param>
            
    /// <param name="rowCount">要合并的行数</param>
            
    /// <param name="columnCount">要合并的列数</param>

            public void MergeWorkSheet(int sheetIndex,int beginRowIndex,int beginColumnIndex,int rowCount,int columnCount)
            
    {

                
    //检查参数
                if ( columnCount < 1 || rowCount < 1)
                    
    return ;

                
    for(int col=0;col<columnCount;col++)
                
    {
                    
    int mark = 0;            //标记比较数据中第一条记录位置
                    int mergeCount = 1;        //相同记录数,即要合并的行数
                    string text = "";
                    
                    
    for(int row=0;row<rowCount;row++)
                    
    {
                        
    string prvName = "";
                        
    string nextName = "";

                        
    //最后一行不用比较
                        if( row + 1 < rowCount)        
                        
    {
                            
    for(int n=0;n<=col;n++)
                            
    {
                                range 
    = (Excel.Range)workSheet.Cells[row + beginRowIndex,n + beginColumnIndex];
                                range 
    = (Excel.Range)range.MergeArea.get_Item(1,1);
                                text 
    = range.Text.ToString();
                                prvName 
    = prvName + text;

                                range 
    = (Excel.Range)workSheet.Cells[row + 1 + beginRowIndex,n + beginColumnIndex];
                                range 
    = (Excel.Range)range.MergeArea.get_Item(1,1);
                                nextName 
    = nextName + range.Text.ToString();

                            }

                                
                            
    if(prvName == nextName)
                            
    {
                                mergeCount
    ++;

                                
    if(row == rowCount - 2)
                                
    {
                                    
    this.MergeCells(sheetIndex,beginRowIndex + mark,beginColumnIndex + col,beginRowIndex + mark + mergeCount - 1,beginColumnIndex + col,text);
                                }

                            }

                            
    else
                            
    {
                                
    this.MergeCells(sheetIndex,beginRowIndex + mark,beginColumnIndex + col,beginRowIndex + mark + mergeCount - 1,beginColumnIndex + col,text);
                                mergeCount 
    = 1;
                                mark 
    = row + 1;
                            }

                                
                        }
            
                    }

                }

            }
  • 相关阅读:
    添加linux alias
    vs2019 switch语句快捷键列出枚举 及常用快捷键
    generic 泛型使用
    华为云 安装centos8.2
    linux 安装redis,mysql,netcore
    react按需加载
    工具类注册基本写法
    vue项目使用深拷贝
    react+less+antd 复习搭建(一)
    python 1 cmd进入工作
  • 原文地址:https://www.cnblogs.com/lingyun_k/p/415555.html
Copyright © 2020-2023  润新知