public static void SetCellMerge(ISheet workSheet, int[] mergeRangeIndexArr) { if (mergeRangeIndexArr != null) { List <CellRangeAddress> rangList = new List <CellRangeAddress>(); List <MergeRangeEntity> titleList = new List <MergeRangeEntity>(); for (int i = workSheet.FirstRowNum + 1; i <= workSheet.LastRowNum; i++) { if (i == 1) { int index = mergeRangeIndexArr[0]; MergeRangeEntity entity = new MergeRangeEntity(); entity.ColSpan = 1; entity.ColumnName = workSheet.GetRow(i).GetCell(index).ToString(); titleList.Add(entity); } else { int index = mergeRangeIndexArr[0]; if (titleList[0].ColumnName != workSheet.GetRow(i).GetCell(index).ToString()) { titleList[0].ColumnName = workSheet.GetRow(i).GetCell(index).ToString(); rangList.Add(new CellRangeAddress(titleList[0].ColSpan, i - 1, index, index)); titleList[0].ColSpan = i; } else { if (i == workSheet.LastRowNum) { rangList.Add(new CellRangeAddress(titleList[0].ColSpan, i, index, index)); } } } } //取第一列的数据为合并的标识 List <CellRangeAddress> newrangList = new List <CellRangeAddress>(); foreach (CellRangeAddress cellRangin in rangList) { for (int i = 0; i < mergeRangeIndexArr.Length; i++) { int index = mergeRangeIndexArr[i]; newrangList.Add(new CellRangeAddress(cellRangin.FirstRow, cellRangin.LastRow, index, index)); } } foreach (CellRangeAddress cellRang in newrangList) { workSheet.AddMergedRegion(cellRang); } } }
public static void SetCellMerge(ISheet workSheet, int[] mergeRangeIndexArr) { if (mergeRangeIndexArr != null) { List <CellRangeAddress> rangList = new List <CellRangeAddress>(); List <MergeRangeEntity> titleList = new List <MergeRangeEntity>(); for (int i = workSheet.FirstRowNum + 1; i <= workSheet.LastRowNum; i++) { if (i == 1) { int index = mergeRangeIndexArr[0]; MergeRangeEntity entity = new MergeRangeEntity(); entity.ColSpan = 1; entity.ColumnName = workSheet.GetRow(i).GetCell(index).ToString(); titleList.Add(entity); } else { int index = mergeRangeIndexArr[0]; if (titleList[0].ColumnName != workSheet.GetRow(i).GetCell(index).ToString()) { titleList[0].ColumnName = workSheet.GetRow(i).GetCell(index).ToString(); rangList.Add(new CellRangeAddress(titleList[0].ColSpan, i - 1, index, index)); titleList[0].ColSpan = i; } else { if (i == workSheet.LastRowNum) { rangList.Add(new CellRangeAddress(titleList[0].ColSpan, i, index, index)); } } } //if (i == 1) //{ // for (int j = 0; j < mergeRangeIndexArr.Length; j++) // { // //int colSpan1 = 1; // int index = mergeRangeIndexArr[j]; // MergeRangeEntity entity = new MergeRangeEntity(); // entity.ColSpan = 1; // entity.ColumnName = workSheet.GetRow(i).GetCell(index).ToString(); // titleList.Add(entity); // } //} //else //{ // for (int j = 0; j < mergeRangeIndexArr.Length; j++) // { // int index = mergeRangeIndexArr[j]; // if (titleList[j].ColumnName != workSheet.GetRow(i).GetCell(index).ToString()) // { // titleList[j].ColumnName = workSheet.GetRow(i).GetCell(index).ToString(); // rangList.Add(new CellRangeAddress(titleList[j].ColSpan, i - 1, index, index)); // titleList[j].ColSpan = i; // } // else // { // if (i == workSheet.LastRowNum) // { // rangList.Add(new CellRangeAddress(titleList[j].ColSpan, i, index, index)); // } // } // } //} //if (i == 1) //{ // a1 = workSheet.GetRow(i).GetCell(0).ToString(); // a2 = workSheet.GetRow(i).GetCell(1).ToString(); // a3 = workSheet.GetRow(i).GetCell(2).ToString(); // a4 = workSheet.GetRow(i).GetCell(3).ToString(); // a5 = workSheet.GetRow(i).GetCell(4).ToString(); // a6 = workSheet.GetRow(i).GetCell(5).ToString(); // a7 = workSheet.GetRow(i).GetCell(6).ToString(); //} //else //{ // if (a1 != workSheet.GetRow(i).GetCell(0).ToString()) // { // a1 = workSheet.GetRow(i).GetCell(0).ToString(); // rangList.Add(new CellRangeAddress(colSpan1, i - 1, 0, 0)); // colSpan1 = i; // } // else // { // if (i == workSheet.LastRowNum) // { // rangList.Add(new CellRangeAddress(colSpan1, i, 0, 0)); // } // } // if (a3 != workSheet.GetRow(i).GetCell(2).ToString()) // { // a3 = workSheet.GetRow(i).GetCell(2).ToString(); // rangList.Add(new CellRangeAddress(colSpan2, i - 1, 2, 2)); // colSpan2 = i; // } // else // { // if (i == workSheet.LastRowNum) // { // rangList.Add(new CellRangeAddress(colSpan2, i, 2, 2)); // } // } // if (a4 != workSheet.GetRow(i).GetCell(3).ToString()) // { // a4 = workSheet.GetRow(i).GetCell(3).ToString(); // rangList.Add(new CellRangeAddress(colSpan3, i - 1, 3, 3)); // colSpan3 = i; // } // else // { // if (i == workSheet.LastRowNum) // { // rangList.Add(new CellRangeAddress(colSpan3, i, 3, 3)); // } // } // if (a5 != workSheet.GetRow(i).GetCell(4).ToString()) // { // a5 = workSheet.GetRow(i).GetCell(4).ToString(); // rangList.Add(new CellRangeAddress(colSpan4, i - 1, 4, 4)); // colSpan4 = i; // } // else // { // if (i == workSheet.LastRowNum) // { // rangList.Add(new CellRangeAddress(colSpan4, i, 4, 4)); // } // } //} } //取第一列的数据为合并的标识 List <CellRangeAddress> newrangList = new List <CellRangeAddress>(); foreach (CellRangeAddress cellRangin in rangList) { for (int i = 0; i < mergeRangeIndexArr.Length; i++) { int index = mergeRangeIndexArr[i]; newrangList.Add(new CellRangeAddress(cellRangin.FirstRow, cellRangin.LastRow, index, index)); } } foreach (CellRangeAddress cellRang in newrangList) { workSheet.AddMergedRegion(cellRang); } } }