• NPOI导出EXCEL部分样式不起作用


    在使用NPOI导出excel的时候,设置cell样式,数据量多余6条之后,在后面几条数据没有样式(边框,对其,换行等)。

    原因是设置CellStyle的时候把CreateCellStyle放在循环列集合里边,原版代码有问题的代码

    HSSFRow dataRow = (HSSFRow)sheet.CreateRow(rowIndex);
    foreach (DataColumn column in dtSource.Columns)
    {
        HSSFCell newCell = (HSSFCell)dataRow.CreateCell(column.Ordinal);
        string drValue = row[column].ToString();
        switch (column.DataType.ToString())
        {
            case "System.String":
                {
                    HSSFCellStyle strStyle = (HSSFCellStyle)workbook.CreateCellStyle();
                    strStyle.BorderBottom = BorderStyle.Thin;
                    strStyle.BorderTop = BorderStyle.Thin;
                    strStyle.BorderLeft = BorderStyle.Thin;
                    strStyle.BorderRight = BorderStyle.Thin;
                    //strStyle.VerticalAlignment = VerticalAlignment.Center;
                    strStyle.Alignment = HorizontalAlignment.Left;
                    switch (detail.Format)
                    {
                        case ExportFormat.Normal:
                            //strStyle.Alignment = HorizontalAlignment.Center;
                            strStyle.Alignment = HorizontalAlignment.Left;
                            break;
                        case ExportFormat.Formatted:
                            strStyle.WrapText = true;
                            break;
                    }
                    newCell.SetCellValue(drValue);
                    newCell.CellStyle = strStyle;
                    break;
                }
        }
    }
    

     解决问题,需要将该样式提取到foreach外面就可以解决了

    HSSFRow dataRow = (HSSFRow)sheet.CreateRow(rowIndex);
    HSSFCellStyle strStyle = (HSSFCellStyle)workbook.CreateCellStyle();
    strStyle.BorderBottom = BorderStyle.Thin;
    strStyle.BorderTop = BorderStyle.Thin;
    strStyle.BorderLeft = BorderStyle.Thin;
    strStyle.BorderRight = BorderStyle.Thin;
    foreach (DataColumn column in dtSource.Columns)
    {
        HSSFCell newCell = (HSSFCell)dataRow.CreateCell(column.Ordinal);
        string drValue = row[column].ToString();
        switch (column.DataType.ToString())
        {
            case "System.String":
                {
                    //strStyle.VerticalAlignment = VerticalAlignment.Center;
                    strStyle.Alignment = HorizontalAlignment.Left;
                    switch (detail.Format)
                    {
                        case ExportFormat.Normal:
                            //strStyle.Alignment = HorizontalAlignment.Center;
                            strStyle.Alignment = HorizontalAlignment.Left;
                            break;
                        case ExportFormat.Formatted:
                            strStyle.WrapText = true;
                            break;
                    }
                    newCell.SetCellValue(drValue);
                    newCell.CellStyle = strStyle;
                    break;
                }
        }
    }
    

      

  • 相关阅读:
    asp 后台批量管理程序
    面经
    单例模式(singleton)解析例子
    互联网产品经理必读书籍
    Struts2中的OGNL表达式
    阿里巴巴面经
    Servlet/JSP如何控制页面缓存于squid中
    Java陷阱一箩筐面试题集及解答
    阿里巴巴笔经http://bbs.yingjiesheng.com/forum.php?mod=viewthread&tid=696098&extra=page%3D1%26filter%3Dtypeid%26typeid%3D6356%26typeid%3D6356
    阿里巴巴java笔试
  • 原文地址:https://www.cnblogs.com/zbfamily/p/9408604.html
Copyright © 2020-2023  润新知