• 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; } }
  • 相关阅读:
    org.eclipse.swt.SWTException: Invalid thread access问题解决方法
    V3700系列存储数据恢复成功
    导致磁盘阵列数据丢失的7个常见原因/早做准备哦
    服务器分区丢失数据恢复过程(阵列数据恢复)
    EFS加密文件无法打开怎么办
    raid5硬盘硬件修复;条带分析方法;阵列重组
    程序员节/技术党福利:ORACLE 环境故障数据恢复方案
    HP MSA存储 raid组lvm下vxfs文件系统数据恢复方案
    如何排除服务器中RAID5故障/服务器数据恢复案例
    linux服务器数据恢复方法_服务器硬盘故障解决方案
  • 原文地址:https://www.cnblogs.com/luna-hehe/p/10209893.html
Copyright © 2020-2023  润新知