首页 > 开发 > 综合 > 正文

C#实现在Excel中将连续多列相同数据项合并

2024-07-21 02:29:01
字体:
来源:转载
供稿:网友

  效果图如下:

代码如下:

/**//// <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;
                        }
                           
                    }       
                }
            }
        }

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表