예제 #1
0
        private static ICellStyle GetCellStyle(IWorkbook wb, XlsStyle str, Font headFont = null, Font contentFont = null, Font titleFont = null, Font bottomFont = null)
        {
            ICellStyle cellStyle = wb.CreateCellStyle();
            //定义几种字体
            //也可以一种字体,写一些公共属性,然后在下面需要时加特殊的

            IFont font = wb.CreateFont();

            font.FontName           = "微软雅黑";
            font.FontHeightInPoints = 10;

            if (contentFont != null)
            {
                font.FontName = contentFont.Name;
                if (contentFont.Bold)
                {
                    font.Boldweight = (short)NPOI.SS.UserModel.FontBoldWeight.BOLD;
                }
                font.FontHeightInPoints = (short)contentFont.SizeInPoints;
                font.IsItalic           = contentFont.Italic;
                font.IsStrikeout        = contentFont.Strikeout;
                font.Underline          = (byte)(contentFont.Underline ? 1 : 0);
            }

            IFont linkAddresFont = wb.CreateFont();

            linkAddresFont.Color    = HSSFColor.OLIVE_GREEN.BLUE.index;
            linkAddresFont.IsItalic = true;//下划线
            linkAddresFont.FontName = "微软雅黑";

            //边框
            cellStyle.BorderBottom = NPOI.SS.UserModel.BorderStyle.THIN;
            cellStyle.BorderLeft   = NPOI.SS.UserModel.BorderStyle.THIN;
            cellStyle.BorderRight  = NPOI.SS.UserModel.BorderStyle.THIN;
            cellStyle.BorderTop    = NPOI.SS.UserModel.BorderStyle.THIN;
            //边框颜色
            //cellStyle.BottomBorderColor = HSSFColor.OLIVE_GREEN.BLUE.index;
            //cellStyle.TopBorderColor = HSSFColor.OLIVE_GREEN.BLUE.index;
            //背景图形,我没有用到过。感觉很丑
            //cellStyle.FillBackgroundColor = HSSFColor.OLIVE_GREEN.BLUE.index;
            //cellStyle.FillForegroundColor = HSSFColor.OLIVE_GREEN.BLUE.index;
            cellStyle.FillForegroundColor = HSSFColor.WHITE.index;
            // cellStyle.FillPattern = FillPatternType.NO_FILL;
            cellStyle.FillBackgroundColor = HSSFColor.BLUE.index;
            //水平对齐
            cellStyle.Alignment = NPOI.SS.UserModel.HorizontalAlignment.LEFT;
            //垂直对齐
            cellStyle.VerticalAlignment = VerticalAlignment.CENTER;
            //自动换行
            cellStyle.WrapText = true;
            //缩进;当设置为1时,前面留的空白太大了。希旺官网改进。或者是我设置的不对
            cellStyle.Indention = 0;
            //上面基本都是设共公的设置
            //下面列出了常用的字段类型
            switch (str)
            {
            case XlsStyle.Title:
                cellStyle.Alignment = NPOI.SS.UserModel.HorizontalAlignment.CENTER;
                if (titleFont != null)
                {
                    font.FontName = titleFont.Name;
                    if (titleFont.Bold)
                    {
                        font.Boldweight = (short)NPOI.SS.UserModel.FontBoldWeight.BOLD;
                    }
                    font.FontHeightInPoints = (short)titleFont.SizeInPoints;
                    font.IsItalic           = titleFont.Italic;
                    font.IsStrikeout        = titleFont.Strikeout;
                    font.Underline          = (byte)(titleFont.Underline ? 1 : 0);
                }
                cellStyle.BorderTop    = NPOI.SS.UserModel.BorderStyle.NONE;
                cellStyle.BorderLeft   = NPOI.SS.UserModel.BorderStyle.NONE;
                cellStyle.BorderBottom = NPOI.SS.UserModel.BorderStyle.NONE;
                cellStyle.BorderRight  = NPOI.SS.UserModel.BorderStyle.NONE;
                cellStyle.SetFont(font);
                break;

            case XlsStyle.Header:
                // cellStyle.FillPattern = FillPatternType.LEAST_DOTS;
                cellStyle.Alignment = NPOI.SS.UserModel.HorizontalAlignment.CENTER;
                if (headFont != null)
                {
                    font.FontName = headFont.Name;
                    if (headFont.Bold)
                    {
                        font.Boldweight = (short)NPOI.SS.UserModel.FontBoldWeight.BOLD;
                    }
                    font.FontHeightInPoints = (short)headFont.SizeInPoints;
                    font.IsItalic           = headFont.Italic;
                    font.IsStrikeout        = headFont.Strikeout;
                    font.Underline          = (byte)(headFont.Underline ? 1 : 0);
                }
                cellStyle.BorderBottom = NPOI.SS.UserModel.BorderStyle.MEDIUM;
                cellStyle.BorderLeft   = NPOI.SS.UserModel.BorderStyle.MEDIUM;
                cellStyle.BorderRight  = NPOI.SS.UserModel.BorderStyle.MEDIUM;
                cellStyle.BorderTop    = NPOI.SS.UserModel.BorderStyle.MEDIUM;
                cellStyle.SetFont(font);
                break;

            case XlsStyle.Bottom:
                cellStyle.Alignment = NPOI.SS.UserModel.HorizontalAlignment.RIGHT;
                if (bottomFont != null)
                {
                    font.FontName = bottomFont.Name;
                    if (bottomFont.Bold)
                    {
                        font.Boldweight = (short)NPOI.SS.UserModel.FontBoldWeight.BOLD;
                    }
                    font.FontHeightInPoints = (short)bottomFont.SizeInPoints;
                    font.IsItalic           = bottomFont.Italic;
                    font.IsStrikeout        = bottomFont.Strikeout;
                    font.Underline          = (byte)(bottomFont.Underline ? 1 : 0);
                }
                cellStyle.BorderTop    = NPOI.SS.UserModel.BorderStyle.NONE;
                cellStyle.BorderLeft   = NPOI.SS.UserModel.BorderStyle.NONE;
                cellStyle.BorderBottom = NPOI.SS.UserModel.BorderStyle.NONE;
                cellStyle.BorderRight  = NPOI.SS.UserModel.BorderStyle.NONE;
                cellStyle.SetFont(font);
                break;

            case XlsStyle.Serial:
                cellStyle.Alignment = NPOI.SS.UserModel.HorizontalAlignment.CENTER;
                font.Boldweight     = (short)NPOI.SS.UserModel.FontBoldWeight.BOLD;
                cellStyle.SetFont(font);
                break;

            case XlsStyle.Time:
                IDataFormat dataStyle = wb.CreateDataFormat();
                cellStyle.DataFormat = dataStyle.GetFormat("yyyy-mm-dd");
                cellStyle.SetFont(font);
                break;

            case XlsStyle.Number:
                cellStyle.DataFormat = HSSFDataFormat.GetBuiltinFormat("0.00");
                cellStyle.Alignment  = NPOI.SS.UserModel.HorizontalAlignment.GENERAL;
                cellStyle.SetFont(font);
                break;

            case XlsStyle.Money:
                IDataFormat format = wb.CreateDataFormat();
                cellStyle.DataFormat = format.GetFormat("¥#,##0");
                cellStyle.Alignment  = NPOI.SS.UserModel.HorizontalAlignment.GENERAL;
                cellStyle.SetFont(font);
                break;

            case XlsStyle.Url:
                linkAddresFont.Underline = 1;
                cellStyle.SetFont(linkAddresFont);
                break;

            case XlsStyle.Percent:
                cellStyle.DataFormat = HSSFDataFormat.GetBuiltinFormat("0.00%");
                cellStyle.Alignment  = NPOI.SS.UserModel.HorizontalAlignment.GENERAL;
                cellStyle.SetFont(font);
                break;

            case XlsStyle.Chupper:
                IDataFormat format1 = wb.CreateDataFormat();
                cellStyle.DataFormat = format1.GetFormat("[DbNum2][$-804]0");
                cellStyle.SetFont(font);
                break;

            case XlsStyle.Tnumber:
                cellStyle.DataFormat = HSSFDataFormat.GetBuiltinFormat("0.00E+00");
                cellStyle.SetFont(font);
                break;

            case XlsStyle.Default:
                cellStyle.SetFont(font);
                break;
            }
            return(cellStyle);
        }
예제 #2
0
        /// <summary> 创建workbook样式 </summary>
        /// <param name="wb"></param>
        /// <param name="str"></param>
        /// <returns></returns>
        public static ICellStyle GetCellStyle(IWorkbook wb, XlsStyle str)
        {
            var cellStyle = wb.CreateCellStyle();

            //边框
            cellStyle.BorderBottom   =
                cellStyle.BorderLeft = cellStyle.BorderRight = cellStyle.BorderTop = BorderStyle.Thin;
            //边框颜色
            cellStyle.BottomBorderColor = HSSFColor.Black.Index;
            cellStyle.TopBorderColor    = HSSFColor.Black.Index;

            //背景图形,我没有用到过。感觉很丑
            cellStyle.FillForegroundColor = HSSFColor.White.Index;
            cellStyle.FillBackgroundColor = HSSFColor.Blue.Index;

            //水平对齐
            cellStyle.Alignment = HorizontalAlignment.Left;

            //垂直对齐
            cellStyle.VerticalAlignment = VerticalAlignment.Center;

            //自动换行
            //cellStyle.WrapText = true;

            //缩进;当设置为1时,前面留的空白太大了。希旺官网改进。或者是我设置的不对
            cellStyle.Indention = 0;

            //上面基本都是设共公的设置
            //下面列出了常用的字段类型
            switch (str)
            {
            case XlsStyle.Header:
                // cellStyle.FillPattern = FillPatternType.LEAST_DOTS;
                cellStyle.FillForegroundColor = 41;
                cellStyle.FillPattern         = FillPattern.SolidForeground;
                cellStyle.Alignment           = HorizontalAlignment.Center;

                var heaerFont = wb.CreateFont();
                heaerFont.FontHeightInPoints = 12;
                heaerFont.Boldweight         = 600;
                heaerFont.FontName           = "微软雅黑";
                cellStyle.SetFont(heaerFont);
                break;

            case XlsStyle.DateTime:
                IDataFormat datastyle = wb.CreateDataFormat();

                cellStyle.DataFormat = datastyle.GetFormat("yyyy/mm/dd");
                cellStyle.SetFont(SetCellNormalFont(wb));
                break;

            case XlsStyle.Number:
                cellStyle.DataFormat = HSSFDataFormat.GetBuiltinFormat("0.00");
                cellStyle.SetFont(SetCellNormalFont(wb));
                break;

            case XlsStyle.Money:
                IDataFormat format = wb.CreateDataFormat();
                cellStyle.DataFormat = format.GetFormat("¥#,##0");
                cellStyle.SetFont(SetCellNormalFont(wb));
                break;

            case XlsStyle.Url:
                var fontcolorblue = wb.CreateFont();
                fontcolorblue.Color     = HSSFColor.Black.Index;
                fontcolorblue.IsItalic  = true;    //下划线
                fontcolorblue.FontName  = "微软雅黑";
                fontcolorblue.Underline = FontUnderlineType.Single;
                cellStyle.SetFont(fontcolorblue);
                break;

            case XlsStyle.Percent:
                cellStyle.DataFormat = HSSFDataFormat.GetBuiltinFormat("0.00%");
                cellStyle.SetFont(SetCellNormalFont(wb));
                break;

            //case XlsStyle.中文大写:
            //    IDataFormat format1 = wb.CreateDataFormat();
            //    cellStyle.DataFormat = format1.GetFormat("[DbNum2][$-804]0");
            //    cellStyle.SetFont(font);
            //    break;
            //case XlsStyle.科学计数法:
            //    cellStyle.DataFormat = HSSFDataFormat.GetBuiltinFormat("0.00E+00");
            //    cellStyle.SetFont(font);
            //    break;
            case XlsStyle.Default:
                cellStyle.SetFont(SetCellNormalFont(wb));
                break;
            }
            return(cellStyle);
        }