/// <summary>
/// 将指定索引列的数据相同的行合并,对每个WorkSheet操作
/// </summary>
/// <param name="columnIndex">列索引</param>
/// <param name="beginRowIndex">开始行索引</param>
/// <param name="endRowIndex">结束行索引</param>
public void MergeRows(int columnIndex,int beginRowIndex,int endRowIndex)
{
if(endRowIndex - beginRowIndex < 1)
return;
for(int i=1;i<=this.WorkSheetCount;i++)
{
int beginIndex = beginRowIndex;
int count = 0;
string text1;
string text2;
workSheet = (Excel.Worksheet)workBook.Worksheets.get_Item(i);
for(int j=beginRowIndex;j<=endRowIndex;j++)
{
range = (Excel.Range)workSheet.Cells[j,columnIndex];
text1 = range.Text.ToString();
range = (Excel.Range)workSheet.Cells[j+1,columnIndex];
text2 = range.Text.ToString();
if(text1 == text2)
{
++count;
}
else
{
if(count > 0)
{
this.MergeCells(workSheet,beginIndex,columnIndex,beginIndex+count,columnIndex,text1);
}
beginIndex = j + 1; //设置开始合并行索引
count = 0; //计数器清0
}
}
}
}
/// <summary>
/// 将指定索引列的数据相同的行合并,对指定WorkSheet操作
/// </summary>
/// <param name="sheetIndex">WorkSheet索引</param>
/// <param name="columnIndex">列索引</param>
/// <param name="beginRowIndex">开始行索引</param>
/// <param name="endRowIndex">结束行索引</param>
public void MergeRows(int sheetIndex,int columnIndex,int beginRowIndex,int endRowIndex)
{
if(sheetIndex > this.WorkSheetCount)
{
this.KillExcelProcess();
throw new Exception("索引超出范围,WorkSheet索引不能大于WorkSheet数量!");
}
if(endRowIndex - beginRowIndex < 1)
return;
int beginIndex = beginRowIndex;
int count = 0;
string text1;
string text2;
workSheet = (Excel.Worksheet)workBook.Worksheets.get_Item(sheetIndex);
for(int j=beginRowIndex;j<=endRowIndex;j++)
{
range = (Excel.Range)workSheet.Cells[j,columnIndex];
text1 = range.Text.ToString();
range = (Excel.Range)workSheet.Cells[j+1,columnIndex];
text2 = range.Text.ToString();
if(text1 == text2)
{
++count;
}
else
{
if(count > 0)
{
this.MergeCells(workSheet,beginIndex,columnIndex,beginIndex+count,columnIndex,text1);
}
beginIndex = j + 1; //设置开始合并行索引
count = 0; //计数器清0
}
}
}