예제 #1
0
        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);
                }
            }
        }
예제 #2
0
        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);
                }
            }
        }