NPOI简单的给某个单元格字体设置颜色

参考文档有:

https://www.cnblogs.com/gossip/p/4307486.html

 https://bbs.csdn.net/topics/391042064?page=1

效果图:

 

 需求分析:导出数据时能够导出一段时间段内的所有产品质量数据,要求每天的数据放到一个Excel文件中,每天所有总成的数据按总成划分,每个总成一个工作簿,以此类推,导出后压缩到文件夹中返回到浏览器供用户查看。因为会存在某日没有生产数据,但依然要导出Excel文件,起初的效果如下图所示,为空白工作簿,没有一个单元格。对于没有数据的Excel导出文档当然还是要有表头和单元格的,如果能加上“无数据”的说明,就更人性化了

 

 

        /// <summary>
        /// 每日所有数据按每个总成一个工作簿导出到excel中
        /// </summary>
        /// <param name="exportDataList">某日的excel数据内容</param>
        /// <param name="fieldInfies">excel表头</param>
        /// <returns></returns>
        public static HSSFWorkbook createHSSFWorkbook_Day(Dictionary<string, List<T>> exportDataList, List<ExportFieldInfo> fieldInfies)
        {
            HSSFWorkbook book = new HSSFWorkbook();
            try
            {
                if (exportDataList.Count != 0)
                {
                    foreach (var items in exportDataList)
                    {
                        ISheet sheet = book.CreateSheet(items.Key);
                        IRow rowTitle = sheet.CreateRow(0);
                        IRow rowtemp;
                        for (int k = 0; k < fieldInfies.Count; k++)
                        {
                            rowTitle.CreateCell(k).SetCellValue(fieldInfies.ElementAt(k).DisplayName);
                        }
                        for (int j = 0; j < items.Value.Count; j++)
                        {
                            object tempobj = items.Value[j];
                            //获取类型
                            Type type = tempobj.GetType();
                            List<System.Reflection.PropertyInfo> ps = type.GetProperties().ToList();
                            //将数据写入sheet各个行
                            rowtemp = sheet.CreateRow(j + 1);
                            for (int k = 0; k < fieldInfies.Count; k++)
                            {
                                //获取属性值
                                var value = ps.First(t => t.Name == fieldInfies.ElementAt(k).FieldName).GetValue(tempobj, null);
                                switch (fieldInfies.ElementAt(k).DataType)
                                {
                                    case DataTypeEnum.Int:
                                        rowtemp.CreateCell(k).SetCellValue(Convert.ToInt32(value));
                                        break;
                                    case DataTypeEnum.Float:
                                        rowtemp.CreateCell(k).SetCellValue(Convert.ToDouble(value));
                                        break;
                                    case DataTypeEnum.Double:
                                        rowtemp.CreateCell(k).SetCellValue(Convert.ToDouble(value));
                                        break;
                                    case DataTypeEnum.String:
                                        rowtemp.CreateCell(k).SetCellValue(Convert.ToString(value));
                                        break;
                                    case DataTypeEnum.DateTime:
                                        rowtemp.CreateCell(k).SetCellValue(Convert.ToDateTime(value).ToString("yyyy-MM-dd HH:mm:ss.SSS"));
                                        break;
                                    case DataTypeEnum.Date:
                                        rowtemp.CreateCell(k).SetCellValue(Convert.ToDateTime(value).ToString("yyyy-MM-dd"));
                                        break;
                                    default:
                                        break;
                                }
                            }
                            tempobj = null;
                            ps = null;
                        }
                    }
                }
                else
                {
            //这段代码为“无数据”情况下的特殊处理
            //创建一个名称为“Sheet1”的工作簿 ISheet sheet
= book.CreateSheet("Sheet1");
            //创建2行 IRow rowTitle
= sheet.CreateRow(0); IRow rowtemp = sheet.CreateRow(1);
            //给工作簿添加表头
for (int k = 0; k < fieldInfies.Count; k++) { rowTitle.CreateCell(k).SetCellValue(fieldInfies.ElementAt(k).DisplayName); }
            //给第二行第一列的单元格赋值“无数据” rowtemp.CreateCell(
0).SetCellValue("无数据!");
            //创建单元格样式 HSSFCellStyle fCellStyle
= (HSSFCellStyle)book.CreateCellStyle();
            //创建字体 HSSFFont ffont
= (HSSFFont)book.CreateFont();
            //给字体设置颜色 ffont.Color
= HSSFColor.Red.Index;
            //给样式添加字体 fCellStyle.SetFont(ffont);
            //给第二行第一列单元格添加样式 rowtemp.GetCell(
0).CellStyle = fCellStyle; } } catch(Exception ex) { Console.WriteLine(ex.Message); } return book; } }

 

posted @ 2019-01-02 17:52  单纯的桃子  阅读(14263)  评论(2编辑  收藏  举报