2021年7月16日星期五

.net npoi 导出合并单元格

          我写这个是因为 一个妹子(因为我喜欢这妹子,不然谁鸟你,所以身边对你好的异性一定对你图谋不轨,就像我)请教我这个问题

          导出exexl,大多数人百度一下就知道怎么写,但合并单元格就要有一定思考,我也看过大量的资料,但我觉得有解决问题的思路很重要,废话不说了  ,直接来看代码:  

 CellRangeAddress(y, y1, x, x1)分别代表这 合并的初始行,结束行,初始列,结束列

 

    CellRangeAddress region = new CellRangeAddress(y, y1, x, x1);//合并单元格    sheet.AddMergedRegion(region);    cell = sheet.GetRow(item.Ya).GetCell(2);    cell.CellStyle = cellstyles;//合并单元格后的样式

这里的

cellstyles合并单元格的样式,我就不做解释,直接贴代码:
   //这里就是合并单元格后单元格的样式   //在合并单元格后 cell.CellStyle = cellstyles; 这样就ok了 字体大小也可以在这里该   NPOI.SS.UserModel.ICellStyle cellstyles = workbook.CreateCellStyle();//设置垂直居中格式   cellstyles.VerticalAlignment = VerticalAlignment.Center;//垂直居中   cellstyles.Alignment = HorizontalAlignment.Left;//水平居左   cellstyles = workbook.CreateCellStyle();//设置垂直居中格式   cellstyles.VerticalAlignment = VerticalAlignment.Center;//垂直居中   cellstyles.Alignment = HorizontalAlignment.Left;//水平居中

上面都是凑字数,接下来说一说  我对合并上下单元格的理解想法就是 :用数组或者集合存放合并单元格的坐标,对就是这么简单,算了直接贴代码:

   //写入列   for (int i = 0; i < dts.Columns.Count; i++)   {    row.CreateCell(i).SetCellValue(dts.Columns[i].ColumnName);   }   //根据上次代码 做的改进,用一个集合来存放 合并单元格的位置,因为 我们这只需要上下单元格合并 所以 一条数据只存放2个值,代表这 从第几行 到第几行 注意 后者的值必定大于等于前者   //如 是上下左右的单元格 合并一条数据就要存放4个值    List<indexs> ids = new List<indexs>();   bool flag = true; ;   string temp = "";   //写入行数据   for (int i = 0; i < dts.Rows.Count; i++)   {    /*     标题占一行     列名占一行     所以 row = sheet.CreateRow(i + 2); 这里是 i+2    */    row = sheet.CreateRow(i + 2);    for (int j = 0; j < dts.Columns.Count; j++)    {     if (dts.Columns[j].ColumnName == "IDNumber")//判断是否到需要合并的单元格     {      if (i != 0)      {       if (temp != dts.Rows[i][j].ToString().Trim())       {        temp = dts.Rows[i][j].ToString().Trim();        if (temp == dts.Rows[i - 1][j].ToString().Trim())        {         ids.Add(new indexs         {          Ya = i + 1,         });        }        else        {         if (ids.Count() != 0 && ids[ids.Count - 1].Yb == 0)         {          ids[ids.Count - 1].Yb = i + 1;          flag = true;         }        }       }       else       {        if (temp == dts.Rows[i - 1][j].ToString().Trim())        {         //flag 防止出现重复         if (flag)         {          //出现相同订单号的位置          flag = false;          ids.Add(new indexs          {           Ya = i + 1,          });         }         temp = dts.Rows[i][j].ToString().Trim();//感觉这里可以不写这个 你可以试试        }        //防止最后一条数据也是合并项        if (i == dts.Rows.Count - 1)        {         ids[ids.Count - 1].Yb = i + 2;        }       }      }     }     //写入单元格     var col = row.CreateCell(j);     col.SetCellValue(dts.Rows[i][j].ToString().Trim());    }   }   //这里就是合并单元格后单元格的样式   //在合并单元格后 cell.CellStyle = cellstyles; 这样就ok了 字体大小也可以在这里该   NPOI.SS.UserModel.ICellStyle cellstyles = workbook.CreateCell......

原文转载:http://www.shaoqun.com/a/881592.html

跨境电商:https://www.ikjzd.com/

moss:https://www.ikjzd.com/w/1653

agora:https://www.ikjzd.com/w/2176

easel:https://www.ikjzd.com/w/1721


我写这个是因为一个妹子(因为我喜欢这妹子,不然谁鸟你,所以身边对你好的异性一定对你图谋不轨,就像我)请教我这个问题导出exexl,大多数人百度一下就知道怎么写,但合并单元格就要有一定思考,我也看过大量的资料,但我觉得有解决问题的思路很重要,废话不说了,直接来看代码:CellRangeAddress(y,y1,x,x1)分别代表这合并的初始行,结束行,初始列,结束列CellRangeAddressr
rfq:https://www.ikjzd.com/w/251
2021年意大利旅游全攻略:http://www.30bags.com/a/421431.html
2021年有拉尼娜现象?美专家:西太平洋台风将开始沉寂:http://www.30bags.com/a/425630.html
2021年有哪些景点涨价了?涨了多少?:http://www.30bags.com/a/402703.html
2021年幼儿园六一儿童节主持词开场白:http://www.30bags.com/a/430938.html
女生喊痛男生还继续塞 女人越喊痛男人越用力冲刺:http://lady.shaoqun.com/a/247502.html
第一次和姐姐偷尝禁果的真实经历:http://lady.shaoqun.com/m/a/108201.html
几位领导在办公室玩我 把她压在办公桌上进进出出:http://lady.shaoqun.com/m/a/247443.html
深圳猫和老鼠亲子音乐会门票多少钱:http://www.30bags.com/a/506675.html
深圳去外伶仃岛船票时间表(每天多少航班):http://www.30bags.com/a/506676.html
亚马逊推出品牌推荐奖金计划!流量越多奖金越多:https://www.ikjzd.com/articles/146695
亚马逊三种发货方式优缺点:https://www.ikjzd.com/articles/146690

没有评论:

发表评论

注意:只有此博客的成员才能发布评论。