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

王朝c#·作者佚名  2006-11-24
窄屏简体版  字體: |||超大  

效果图如下:

代码如下:

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

}

&nb

[1] [2] 下一页

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航