示例#1
0
        public override void SetBackgroudColor(System.Drawing.Color color)
        {
            IWorkbook  workbook  = _npoiWorksheet.Workbook;
            ICellStyle cellStyle = workbook.CreateCellStyle();

            cellStyle.CloneStyleFrom(_row.RowStyle);
            if (workbook is HSSFWorkbook)
            {
                HSSFWorkbook hssfWorkbook = (HSSFWorkbook)workbook;
                HSSFPalette  palette      = hssfWorkbook.GetCustomPalette(); //调色板实例

                //palette.SetColorAtIndex((short)8, color.R, color.G, color.B);

                HSSFColor hssFColor = palette.FindSimilarColor(color.R, color.G, color.B);

                cellStyle.FillPattern = FillPattern.SolidForeground;

                cellStyle.FillForegroundColor = hssFColor.Indexed;
            }
            else
            {
                HSSFWorkbook hssfWorkbook = new HSSFWorkbook();
                HSSFPalette  palette      = hssfWorkbook.GetCustomPalette(); //调色板实例

                //palette.SetColorAtIndex((short)8, color.R, color.G, color.B);

                HSSFColor hssFColor = palette.FindSimilarColor(color.R, color.G, color.B);

                cellStyle.FillPattern = FillPattern.SolidForeground;

                cellStyle.FillForegroundColor = hssFColor.Indexed;
                //No way!
            }
            _row.RowStyle = cellStyle;
        }
        /// <summary>
        /// create the colours for the COBie sheet
        /// </summary>
        /// <param name="colourName"></param>
        /// <param name="red"></param>
        /// <param name="green"></param>
        /// <param name="blue"></param>
        private void CreateColours(string colourName, byte red, byte green, byte blue)
        {
            IColor colour = null;

            if (IsXlsx)
            {
                byte[] rgb = new byte[3] {
                    red, green, blue
                };
                colour = new XSSFColor(rgb) as IColor;
            }
            else
            {
                HSSFPalette palette = ((HSSFWorkbook)ExcelWorkbook).GetCustomPalette();
                colour = palette.FindSimilarColor(red, green, blue);
                if (colour == null)
                {
                    // First 64 are system colours
                    //srl this code does not work with the latest version of NPOI
                    //if  (NPOI.HSSF.Record.PaletteRecord.STANDARD_PALETTE_SIZE  < 64 )
                    //{
                    //     NPOI.HSSF.Record.PaletteRecord.STANDARD_PALETTE_SIZE = 64;
                    //}
                    //NPOI.HSSF.Record.PaletteRecord.STANDARD_PALETTE_SIZE++;
                    colour = palette.AddColor(red, green, blue);
                }
            }
            _colours.Add(colourName, colour);
        }
示例#3
0
        private short GetXLColour(HSSFWorkbook workbook, System.Drawing.Color SystemColour)
        {
            short       s         = 0;
            HSSFPalette XlPalette = workbook.GetCustomPalette();
            HSSFColor   XlColour  = XlPalette.FindColor(SystemColour.R, SystemColour.G, SystemColour.B);

            if (XlColour == null)
            {
                if (NPOI.HSSF.Record.PaletteRecord.STANDARD_PALETTE_SIZE < 255)
                {
                    if (NPOI.HSSF.Record.PaletteRecord.STANDARD_PALETTE_SIZE < 64)
                    {
                        NPOI.HSSF.Record.PaletteRecord.STANDARD_PALETTE_SIZE = 64; NPOI.HSSF.Record.PaletteRecord.STANDARD_PALETTE_SIZE += 1;
                        XlColour = XlPalette.AddColor(SystemColour.R, SystemColour.G, SystemColour.B);
                    }
                    else
                    {
                        XlColour = XlPalette.FindSimilarColor(SystemColour.R, SystemColour.G, SystemColour.B);
                    }
                    s = XlColour.GetIndex();
                }
            }
            else
            {
                s = XlColour.GetIndex();
            }
            return(s);
        }
示例#4
0
        /// <summary>
        /// 设置单元格样式
        /// </summary>
        /// <param name="rownum"></param>
        /// <param name="isFill">是否填充背景色</param>
        /// <returns></returns>
        //private HSSFCellStyle SetStyle(int rownum,bool isFill)
        //{

        //    if (isFill)
        //    {
        //        if (rownum%2 == 0)
        //        {
        //            cellstyle.FillForegroundColor = HSSFColor.LIGHT_ORANGE.index;
        //        }
        //        else
        //            cellstyle.FillForegroundColor = HSSFColor.SKY_BLUE.index;
        //        cellstyle.FillPattern = FillPatternType.SOLID_FOREGROUND;
        //        //cellstyle.FillBackgroundColor = HSSFColor.RED.index;
        //    }
        //    return cellstyle;
        //}
        /// <summary>
        /// 获取颜色
        /// </summary>
        /// <param name="sysColor"></param>
        /// <returns></returns>
        private short GetColor(System.Drawing.Color sysColor)
        {
            short       s         = 0;
            HSSFPalette xlPalette = WorkBook.GetCustomPalette();
            HSSFColor   xlColor   = xlPalette.FindColor(sysColor.R, sysColor.G, sysColor.B);

            if (xlColor == null)
            {
                if (NPOI.HSSF.Record.PaletteRecord.STANDARD_PALETTE_SIZE <= 255)
                {
                    if (NPOI.HSSF.Record.PaletteRecord.STANDARD_PALETTE_SIZE < 64)
                    {
                        NPOI.HSSF.Record.PaletteRecord.STANDARD_PALETTE_SIZE  = 64;
                        NPOI.HSSF.Record.PaletteRecord.STANDARD_PALETTE_SIZE += 1;
                        xlColor = xlPalette.AddColor(sysColor.R, sysColor.G, sysColor.B);
                    }
                    else
                    {
                        xlColor = xlPalette.FindSimilarColor(sysColor.R, sysColor.G, sysColor.B);
                    }
                    s = xlColor.GetIndex();
                }
            }
            else
            {
                s = xlColor.GetIndex();
            }
            return(s);
        }
示例#5
0
        /// <summary>
        /// 获取RGB对应NPOI颜色值
        /// </summary>
        /// <param name="workbook">当前wb</param>
        /// <param name="R"></param>
        /// <param name="G"></param>
        /// <param name="B"></param>
        /// <returns></returns>
        public static short GetXLColour(this HSSFWorkbook workbook, int R, int G, int B)
        {
            short       s         = 0;
            HSSFPalette XlPalette = workbook.GetCustomPalette();
            HSSFColor   XlColour  = XlPalette.FindColor((byte)R, (byte)G, (byte)B);

            if (XlColour == null)
            {
                if (NPOI.HSSF.Record.PaletteRecord.STANDARD_PALETTE_SIZE < 255)
                {
                    if (NPOI.HSSF.Record.PaletteRecord.STANDARD_PALETTE_SIZE < 64)
                    {
                        NPOI.HSSF.Record.PaletteRecord.STANDARD_PALETTE_SIZE  = 64;
                        NPOI.HSSF.Record.PaletteRecord.STANDARD_PALETTE_SIZE += 1;
                        XlColour = XlPalette.AddColor((byte)R, (byte)G, (byte)B);
                    }
                    else
                    {
                        XlColour = XlPalette.FindSimilarColor((byte)R, (byte)G, (byte)B);
                    }

                    s = XlColour.GetIndex();
                }
            }
            else
            {
                s = XlColour.GetIndex();
            }
            return(s);
        }
示例#6
0
        public override void SetFontColor(System.Drawing.Color color)
        {
            IWorkbook  workbook  = _npoiWorksheet.Workbook;
            ICellStyle cellStyle = workbook.CreateCellStyle();

            if (workbook is HSSFWorkbook)
            {
                HSSFWorkbook hssfWorkbook = (HSSFWorkbook)workbook;
                HSSFPalette  palette      = hssfWorkbook.GetCustomPalette(); //调色板实例

                //palette.SetColorAtIndex((short)8, color.R, color.G, color.B);

                HSSFColor hssFColor = palette.FindSimilarColor(color.R, color.G, color.B);
                cellStyle.CloneStyleFrom(_row.RowStyle);

                IFont font = cellStyle.GetFont(workbook);
                font.Color = hssFColor.Indexed;
                cellStyle.SetFont(font);
                _row.RowStyle = cellStyle;
            }
            else
            {
                //No way!
            }
        }
示例#7
0
        internal IColor CreateColor(string htmlColor)
        {
            Color color = ColorTranslator.FromHtml(htmlColor);

            byte[] array = new byte[]
            {
                color.R,
                color.G,
                color.B
            };
            IColor result;

            switch (this.ExcelVersion)
            {
            case ExcelVersion.XLS:
            {
                HSSFPalette customPalette = this.ExcelXls.GetCustomPalette();
                if (this._palleteColorSize >= 63)
                {
                    HSSFColor hSSFColor = customPalette.FindColor(color.R, color.G, color.B);
                    if (hSSFColor == null)
                    {
                        hSSFColor = customPalette.FindSimilarColor(color.R, color.G, color.B);
                    }
                    short?palleteColorSize = this._palleteColorSize;
                    this._palleteColorSize = (palleteColorSize.HasValue
                            ? new short?((short)(palleteColorSize.GetValueOrDefault() + 1))
                            : null);
                    result = hSSFColor;
                }
                else
                {
                    if (!this._palleteColorSize.HasValue)
                    {
                        this._palleteColorSize = new short?(8);
                    }
                    else
                    {
                        short?palleteColorSize = this._palleteColorSize;
                        this._palleteColorSize = (palleteColorSize.HasValue
                                ? new short?((short)(palleteColorSize.GetValueOrDefault() + 1))
                                : null);
                    }
                    customPalette.SetColorAtIndex(this._palleteColorSize.Value, color.R, color.G, color.B);
                    HSSFColor hSSFColor = customPalette.GetColor(this._palleteColorSize.Value);
                    result = hSSFColor;
                }
                break;
            }

            case ExcelVersion.XLSX:
                result = new XSSFColor(color);
                break;

            default:
                throw new Exception(ErrorMessage.Excel_BadVersion);
            }
            return(result);
        }
示例#8
0
        public void TestFindSimilar()
        {
            HSSFWorkbook book = new HSSFWorkbook();
            HSSFPalette  p    = book.GetCustomPalette();


            // Add a few edge colours in
            p.SetColorAtIndex((short)8, unchecked ((byte)-1), (byte)0, (byte)0);
            p.SetColorAtIndex((short)9, (byte)0, unchecked ((byte)-1), (byte)0);
            p.SetColorAtIndex((short)10, (byte)0, (byte)0, unchecked ((byte)-1));

            // And some near a few of them
            p.SetColorAtIndex((short)11, unchecked ((byte)-1), (byte)2, (byte)2);
            p.SetColorAtIndex((short)12, unchecked ((byte)-2), (byte)2, (byte)10);
            p.SetColorAtIndex((short)13, unchecked ((byte)-4), (byte)0, (byte)0);
            p.SetColorAtIndex((short)14, unchecked ((byte)-8), (byte)0, (byte)0);

            Assert.AreEqual(
                "FFFF:0:0", p.GetColor((short)8).GetHexString()
                );

            // Now Check we get the right stuff back
            Assert.AreEqual(
                p.GetColor((short)8).GetHexString(),
                p.FindSimilarColor(unchecked ((byte)-1), (byte)0, (byte)0).GetHexString()
                );
            Assert.AreEqual(
                p.GetColor((short)8).GetHexString(),
                p.FindSimilarColor(unchecked ((byte)-2), (byte)0, (byte)0).GetHexString()
                );
            Assert.AreEqual(
                p.GetColor((short)8).GetHexString(),
                p.FindSimilarColor(unchecked ((byte)-1), (byte)1, (byte)0).GetHexString()
                );
            Assert.AreEqual(
                p.GetColor((short)11).GetHexString(),
                p.FindSimilarColor(unchecked ((byte)-1), (byte)2, (byte)1).GetHexString()
                );
            Assert.AreEqual(
                p.GetColor((short)12).GetHexString(),
                p.FindSimilarColor(unchecked ((byte)-1), (byte)2, (byte)10).GetHexString()
                );

            book.Close();
        }
示例#9
0
        public static ICellStyle GetFontColorStyle(IWorkbook workbook, ExcelFontColor colorType)
        {
            var         hwb     = new HSSFWorkbook();
            HSSFPalette palette = hwb.GetCustomPalette();
            HSSFColor   myColor = new HSSFColor();

            switch (colorType)
            {
            case ExcelFontColor.Red:
                myColor = palette.FindSimilarColor(250, 0, 0);    //#FF0000
                break;

            case ExcelFontColor.Blue:
                myColor = palette.FindSimilarColor(1, 75, 162);    //#014BA2
                break;

            case ExcelFontColor.Green:
                myColor = palette.FindSimilarColor(0, 100, 33);    //#006421
                break;

            case ExcelFontColor.Gray:
                myColor = palette.FindSimilarColor(164, 164, 164);    //#A4A4A4
                break;

            default:
                break;
            }

            short palIndex  = myColor.Indexed;
            IFont fontStyle = workbook.CreateFont();

            fontStyle.FontName           = "微软雅黑";
            fontStyle.Color              = palIndex;
            fontStyle.FontHeightInPoints = 10;

            var cellStyle = CreateBorderedStyle(workbook);

            cellStyle.SetFont(fontStyle);

            return(cellStyle);
        }
示例#10
0
        /// <summary>
        /// 获取颜色值
        /// </summary>
        /// <param name="color">颜色RGB</param>
        /// <param name="workbook">Excel画布</param>
        /// <returns></returns>
        public static string GetColorIndex(HSSFWorkbook workbook, Color color)
        {
            HSSFPalette palette = workbook.GetCustomPalette();
            var         v       = palette.FindSimilarColor(color.R, color.G, color.B);

            if (v == null)
            {
                throw new Exception("Color is not in Palette");
            }
            else
            {
                return(v.GetHexString());
            }
        }
示例#11
0
        private static short GetXlColour(HSSFWorkbook workbook, Color systemColor)
        {
            short       s         = 0;
            HSSFPalette xlPalette = workbook.GetCustomPalette();

            NPOI.HSSF.Util.HSSFColor xlColour = xlPalette.FindColor(systemColor.R, systemColor.G, systemColor.B);
            if (xlColour == null)
            {
                xlColour = xlPalette.FindSimilarColor(systemColor.R, systemColor.G, systemColor.B);
                s        = xlColour.Indexed;
            }
            else
            {
                s = xlColour.Indexed;
            }
            return(s);
        }
示例#12
0
        /// <summary>
        /// 获取Xls颜色
        /// </summary>
        /// <param name="workbook">工作簿</param>
        /// <param name="color">系统颜色</param>
        /// <returns></returns>
        public static short GetXlsColour(this HSSFWorkbook workbook, Color color)
        {
            short       s         = 0;
            HSSFPalette palette   = workbook.GetCustomPalette(); //调色板实例
            HSSFColor   hssfColor = palette.FindColor(color.R, color.G, color.B);

            if (hssfColor == null)
            {
                hssfColor = palette.FindSimilarColor(color.R, color.G, color.B);
                s         = hssfColor.Indexed;
            }
            else
            {
                s = hssfColor.Indexed;
            }

            return(s);
        }
示例#13
0
        private void CreateColours(string colourName, byte red, byte green, byte blue)
        {
            HSSFPalette palette = XlsWorkbook.GetCustomPalette();
            HSSFColor   colour  = palette.FindSimilarColor(red, green, blue);

            if (colour == null)
            {
                // First 64 are system colours
                //srl this code does not work with the latest version of NPOI
                //if  (NPOI.HSSF.Record.PaletteRecord.STANDARD_PALETTE_SIZE  < 64 )
                //{
                //     NPOI.HSSF.Record.PaletteRecord.STANDARD_PALETTE_SIZE = 64;
                //}
                //NPOI.HSSF.Record.PaletteRecord.STANDARD_PALETTE_SIZE++;
                colour = palette.AddColor(red, green, blue);
            }
            _colours.Add(colourName, colour);
        }
        private HSSFColor GetColor(HSSFWorkbook workbook, byte red, byte green, byte blue)
        {
            HSSFPalette palette = workbook.GetCustomPalette();
            HSSFColor   colour  = palette.FindSimilarColor(red, green, blue);

            if (colour == null)
            {
                // NPOI.HSSF.Record.PaletteRecord.STANDARD_PALETTE_SIZE is now const...
                //// First 64 are system colours
                //if (NPOI.HSSF.Record.PaletteRecord.STANDARD_PALETTE_SIZE < 64)
                //{
                //    NPOI.HSSF.Record.PaletteRecord.STANDARD_PALETTE_SIZE = 64;
                //}
                //NPOI.HSSF.Record.PaletteRecord.STANDARD_PALETTE_SIZE++;
                colour = palette.AddColor(red, green, blue);
            }
            return(colour);
        }
示例#15
0
        private static short GetXLColour(HSSFWorkbook workbook, Color SystemColour)
        {
            short       s         = 0;
            HSSFPalette XlPalette = workbook.GetCustomPalette();

            NPOI.HSSF.Util.HSSFColor XlColour = XlPalette.FindColor(SystemColour.R, SystemColour.G, SystemColour.B);
            if (XlColour == null)
            {
                if (NPOI.HSSF.Record.PaletteRecord.STANDARD_PALETTE_SIZE < 255)
                {
                    XlColour = XlPalette.FindSimilarColor(SystemColour.R, SystemColour.G, SystemColour.B);
                    s        = XlColour.Indexed;
                }
            }
            else
            {
                s = XlColour.Indexed;
            }
            return(s);
        }
示例#16
0
    void Test()
    {
        filePath = "E:/MyWork/test.xls";
        wk       = new HSSFWorkbook();
        sheet    = wk.CreateSheet("mySheet");

        HSSFWorkbook hssfWorkbook = new HSSFWorkbook();              //工作簿实例
        HSSFPalette  palette      = hssfWorkbook.GetCustomPalette(); //调色板实例
        //palette.SetColorAtIndex((short)8, (byte)0, (byte)200, (byte)0);

        //PaletteRecord p = new PaletteRecord();
        PaletteRecord p = new PaletteRecord();


        //调色板实例
        //HSSFPalette palette = workbookAll.GetCustomPalette();
        //RGB颜色值,第一个值:8~64之间,后面三个值为RGB色值
        //palette.SetColorAtIndex((short)8, 179, 179, 179);
        //颜色实例
        //HSSFColor hSSFColor = palette.FindColor(179, 179, 179);
        //style.FillPattern = CellFillPattern.SOLID_FOREGROUND;
        //应用颜色到Style
        //style.FillForegroundColor = hSSFColor.GetIndex();

        //List<HSSFColor> colors = new List<HSSFColor>();
        Dictionary <int, ICellStyle> colDic = new Dictionary <int, ICellStyle>();

        for (int i = 0; i < size; i++)
        {
            row = sheet.CreateRow(i);
            for (int j = 0; j < size / 4; j++)
            {
                cell = row.CreateCell(j);
                //cell.SetCellValue(i + "-" + j);

                Color col = texture.GetPixel(j * 4, size - i);
                //Color col = GetArvCol(j * 4, size - i);
                //if(col.a <= 0.1f)
                //{

                //}

                short similarColor = palette.FindSimilarColor((byte)(col.r * 255), (byte)(col.g * 255), (byte)(col.b * 255)).Indexed;
                //透明的地方用白色
                if (col.a <= 0.1f)
                {
                    similarColor = 9;
                }
                //Debug.LogError(similarColor.Indexed);
                if (!colDic.ContainsKey(similarColor))
                {
                    ICellStyle s = wk.CreateCellStyle();
                    colDic.Add(similarColor, s);
                    s.FillForegroundColor = similarColor;
                    s.FillPattern         = FillPattern.SolidForeground;
                    cell.CellStyle        = s;
                }
                else
                {
                    ICellStyle s = colDic[similarColor];
                    s.FillForegroundColor = similarColor;
                    s.FillPattern         = FillPattern.SolidForeground;
                    cell.CellStyle        = s;
                }

                //ICellStyle s = wk.CreateCellStyle();
                //s.FillForegroundColor = palette.FindSimilarColor((byte)(col.r * 255), (byte)(col.g * 255), (byte)(col.b * 255)).Indexed;
                //s.FillPattern = FillPattern.SolidForeground;
                //cell.CellStyle = s;
            }
        }

        fs = File.Create(filePath);
        wk.Write(fs);
        fs.Close();
        fs.Dispose();
        Debug.Log("创建表格成功");
    }
示例#17
0
        private void button1_Click(object sender, EventArgs e)
        {
            string fileName;

            //fileName = System.IO.Path.GetDirectoryName(sourceFileTexBox.Text) + "\\";
            fileName  = "list_" + System.IO.Path.GetFileName(sourceFileTexBox.Text);
            fileName += ".xls";

            SaveFileDialog saveFileDia = new SaveFileDialog();

            saveFileDia.Filter   = "Excel文件|*.xls";
            saveFileDia.FileName = fileName;

            DialogResult result = saveFileDia.ShowDialog();

            if (DialogResult.OK == result)
            {
                fileName = saveFileDia.FileName;
                if (File.Exists(fileName))
                {
                    MessageBox.Show("目标文件已经存在!", "错误");
                    return;
                }

                try
                {
                    IWorkbook wb = new HSSFWorkbook();

                    ISheet tb = wb.CreateSheet(System.IO.Path.GetFileName(sourceFileTexBox.Text));
                    tb.DisplayGridlines = false;

                    tb.CreateRow(5).CreateCell(29).SetCellValue("備考");
                    tb.GetRow(5).CreateCell(3).SetCellValue("No.");
                    tb.GetRow(5).CreateCell(5).SetCellValue("関数名");
                    tb.GetRow(5).CreateCell(17).SetCellValue("テスト方法");

                    ICellStyle bg = (HSSFCellStyle)wb.CreateCellStyle();
                    IFont      ft = wb.CreateFont();
                    ft.Color = NPOI.HSSF.Util.HSSFColor.White.Index;
                    bg.SetFont(ft);
                    HSSFWorkbook             wob      = new HSSFWorkbook();
                    HSSFPalette              pa       = wob.GetCustomPalette();
                    NPOI.HSSF.Util.HSSFColor XlColour = pa.FindSimilarColor(23, 55, 93);
                    bg.FillForegroundColor = XlColour.Indexed; //15000;
                    bg.FillPattern         = FillPattern.SolidForeground;

                    tb.CreateRow(3);
                    for (int i = 0; i < 50; i++)
                    {
                        tb.GetRow(3).CreateCell(i).CellStyle = bg;
                    }
                    tb.GetRow(3).GetCell(1).SetCellValue(System.IO.Path.GetFileName(sourceFileTexBox.Text));

                    ICellStyle Border3 = (HSSFCellStyle)wb.CreateCellStyle();
                    Border3.BorderTop    = NPOI.SS.UserModel.BorderStyle.Thick;
                    Border3.BorderLeft   = NPOI.SS.UserModel.BorderStyle.Thick;
                    Border3.BorderBottom = NPOI.SS.UserModel.BorderStyle.Thin;

                    tb.GetRow(5).GetCell(3).CellStyle = Border3;

                    ICellStyle Border2 = (HSSFCellStyle)wb.CreateCellStyle();
                    Border2.BorderTop    = NPOI.SS.UserModel.BorderStyle.Thick;
                    Border2.BorderBottom = NPOI.SS.UserModel.BorderStyle.Thin;

                    ICellStyle Border4 = (HSSFCellStyle)wb.CreateCellStyle();
                    Border4.BorderTop    = NPOI.SS.UserModel.BorderStyle.Thick;
                    Border4.BorderLeft   = NPOI.SS.UserModel.BorderStyle.Thin;
                    Border4.BorderBottom = NPOI.SS.UserModel.BorderStyle.Thin;

                    ICellStyle Border5 = (HSSFCellStyle)wb.CreateCellStyle();
                    Border5.BorderTop    = NPOI.SS.UserModel.BorderStyle.Thick;
                    Border5.BorderRight  = NPOI.SS.UserModel.BorderStyle.Thick;
                    Border5.BorderBottom = NPOI.SS.UserModel.BorderStyle.Thin;

                    ICellStyle Border6 = (HSSFCellStyle)wb.CreateCellStyle();
                    Border6.BorderTop    = NPOI.SS.UserModel.BorderStyle.Thin;
                    Border6.BorderLeft   = NPOI.SS.UserModel.BorderStyle.Thick;
                    Border6.BorderBottom = NPOI.SS.UserModel.BorderStyle.Thin;

                    ICellStyle Border7 = (HSSFCellStyle)wb.CreateCellStyle();
                    Border7.BorderTop    = NPOI.SS.UserModel.BorderStyle.Thin;
                    Border7.BorderLeft   = NPOI.SS.UserModel.BorderStyle.Thin;
                    Border7.BorderBottom = NPOI.SS.UserModel.BorderStyle.Thin;

                    ICellStyle Border8 = (HSSFCellStyle)wb.CreateCellStyle();
                    Border8.BorderTop    = NPOI.SS.UserModel.BorderStyle.Thin;
                    Border8.BorderRight  = NPOI.SS.UserModel.BorderStyle.Thick;
                    Border8.BorderBottom = NPOI.SS.UserModel.BorderStyle.Thin;

                    ICellStyle Border9 = (HSSFCellStyle)wb.CreateCellStyle();
                    Border9.BorderTop    = NPOI.SS.UserModel.BorderStyle.Thin;
                    Border9.BorderLeft   = NPOI.SS.UserModel.BorderStyle.Thick;
                    Border9.BorderBottom = NPOI.SS.UserModel.BorderStyle.Thick;

                    ICellStyle Border10 = (HSSFCellStyle)wb.CreateCellStyle();
                    Border10.BorderTop    = NPOI.SS.UserModel.BorderStyle.Thin;
                    Border10.BorderBottom = NPOI.SS.UserModel.BorderStyle.Thick;

                    ICellStyle Border11 = (HSSFCellStyle)wb.CreateCellStyle();
                    Border11.BorderTop    = NPOI.SS.UserModel.BorderStyle.Thin;
                    Border11.BorderLeft   = NPOI.SS.UserModel.BorderStyle.Thin;
                    Border11.BorderBottom = NPOI.SS.UserModel.BorderStyle.Thick;

                    ICellStyle Border12 = (HSSFCellStyle)wb.CreateCellStyle();
                    Border12.BorderTop    = NPOI.SS.UserModel.BorderStyle.Thin;
                    Border12.BorderRight  = NPOI.SS.UserModel.BorderStyle.Thick;
                    Border12.BorderBottom = NPOI.SS.UserModel.BorderStyle.Thick;

                    tb.GetRow(5).CreateCell(4).CellStyle = Border2;
                    tb.GetRow(5).GetCell(5).CellStyle    = Border4;

                    for (int i = 6; i < 17; i++)
                    {
                        tb.GetRow(5).CreateCell(i).CellStyle = Border2;
                    }
                    tb.GetRow(5).GetCell(17).CellStyle = Border4;

                    for (int i = 18; i < 29; i++)
                    {
                        tb.GetRow(5).CreateCell(i).CellStyle = Border2;
                    }
                    tb.GetRow(5).GetCell(29).CellStyle = Border4;

                    for (int i = 30; i < 41; i++)
                    {
                        tb.GetRow(5).CreateCell(i).CellStyle = Border2;
                    }
                    tb.GetRow(5).CreateCell(41).CellStyle = Border5;

                    ICellStyle Border1 = (HSSFCellStyle)wb.CreateCellStyle();
                    Border1.BorderTop    = NPOI.SS.UserModel.BorderStyle.Thin;
                    Border1.BorderBottom = NPOI.SS.UserModel.BorderStyle.Thin;

                    int lastline = 6;
                    for (int i = 0; i < funcListBox.SelectedItems.Count; i++)
                    {
                        tb.CreateRow(6 + i).CreateCell(5).SetCellValue(funcListBox.SelectedItems[i].ToString());
                        tb.GetRow(6 + i).CreateCell(3).SetCellValue(" " + (i + 1).ToString());

                        tb.GetRow(6 + i).GetCell(3).CellStyle = Border6;

                        tb.GetRow(6 + i).CreateCell(4).CellStyle = Border1;
                        tb.GetRow(6 + i).GetCell(5).CellStyle    = Border7;

                        for (int j = 6; j < 17; j++)
                        {
                            tb.GetRow(6 + i).CreateCell(j).CellStyle = Border1;
                        }
                        tb.GetRow(6 + i).CreateCell(17).CellStyle = Border7;
                        for (int j = 18; j < 29; j++)
                        {
                            tb.GetRow(6 + i).CreateCell(j).CellStyle = Border1;
                        }
                        tb.GetRow(6 + i).CreateCell(29).CellStyle = Border7;
                        for (int j = 30; j < 41; j++)
                        {
                            tb.GetRow(6 + i).CreateCell(j).CellStyle = Border1;
                        }
                        tb.GetRow(6 + i).CreateCell(41).CellStyle = Border8;

                        lastline += 1;
                    }

                    tb.CreateRow(lastline).CreateCell(3).CellStyle = Border9;
                    tb.GetRow(lastline).CreateCell(4).CellStyle    = Border10;
                    tb.GetRow(lastline).CreateCell(5).CellStyle    = Border11;
                    for (int j = 6; j < 17; j++)
                    {
                        tb.GetRow(lastline).CreateCell(j).CellStyle = Border10;
                    }
                    tb.GetRow(lastline).CreateCell(17).CellStyle = Border11;
                    for (int j = 18; j < 29; j++)
                    {
                        tb.GetRow(lastline).CreateCell(j).CellStyle = Border10;
                    }
                    tb.GetRow(lastline).CreateCell(29).CellStyle = Border11;
                    for (int j = 30; j < 41; j++)
                    {
                        tb.GetRow(lastline).CreateCell(j).CellStyle = Border10;
                    }
                    tb.GetRow(lastline).CreateCell(41).CellStyle = Border12;

                    for (int i = 0; i < 50; i++)
                    {
                        tb.SetColumnWidth(i, 1024);
                    }


                    using (FileStream fs = File.OpenWrite(fileName))
                    {
                        wb.Write(fs);
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.ToString());
                    return;
                }

                MessageBox.Show("生成成功!", "成功");
            }
        }