在Excel中连续多列相同数据项合并
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
在Excel中连续多列相同数据项合并
————————————————————————————————作者:————————————————————————————————日期:
在Excel中将连续多列相同数据项合并
效果图如下:
代码如下:
///
///合并工作表中指定行数和列数数据相同的单元格
///
///工作表索引
///开始行索引
///开始列索引
///要合并的行数
///要合并的列数
public void MergeWorkSheet(int sheetIndex,int beginRowIndex,int beginColumnIndex,int row Count,int columnCount)
{
//检查参数
if ( columnCount < 1 || rowCount < 1)
return ;
for(int col=0;col { int mark = 0; //标记比较数据中第一条记录位置 int mergeCount = 1; //相同记录数,即要合并的行数 string text = ""; for(int row=0;row { string prvName = ""; string nextName = ""; //最后一行不用比较 if( row + 1 < rowCount) { for(int n=0;n<=col;n++) { range = (Excel.Range)workSheet.Cells[row + beginRowIndex,n + beginColumnI ndex]; 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 + beginCol umnIndex]; 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,be ginRowIndex + mark + mergeCount - 1,beginColumnIndex + col,text); mergeCount = 1; mark = row + 1; } } } } }