参考文档有:

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 != )
{
foreach (var items in exportDataList)
{
ISheet sheet = book.CreateSheet(items.Key);
IRow rowTitle = sheet.CreateRow();
IRow rowtemp;
for (int k = ; k < fieldInfies.Count; k++)
{
rowTitle.CreateCell(k).SetCellValue(fieldInfies.ElementAt(k).DisplayName);
}
for (int j = ; 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 + );
for (int k = ; 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();
IRow rowtemp = sheet.CreateRow();
            //给工作簿添加表头
for (int k = ; k < fieldInfies.Count; k++)
{
rowTitle.CreateCell(k).SetCellValue(fieldInfies.ElementAt(k).DisplayName);
}
            //给第二行第一列的单元格赋值“无数据”
rowtemp.CreateCell().SetCellValue("无数据!");
            //创建单元格样式
HSSFCellStyle fCellStyle = (HSSFCellStyle)book.CreateCellStyle();
            //创建字体
HSSFFont ffont = (HSSFFont)book.CreateFont();
            //给字体设置颜色
ffont.Color = HSSFColor.Red.Index;
            //给样式添加字体
fCellStyle.SetFont(ffont);
            //给第二行第一列单元格添加样式
rowtemp.GetCell().CellStyle = fCellStyle;
}
}
catch(Exception ex)
{
Console.WriteLine(ex.Message);
}
return book;
}
}

NPOI简单的给某个单元格字体设置颜色的更多相关文章

  1. 用NPOI创建Excel、合并单元格、设置单元格样式、边框的方法

    本篇文章小编为大家介绍,用NPOI创建Excel.合并单元格.设置单元格样式.边框的方法.需要的朋友参考下 今天在做项目中,遇到使用代码生成具有一定样式的Excel,找了很多资料,最后终于解决了,Ex ...

  2. aspxGridview 根据单元格值得不同,设置单元格字体的颜色(设置和读取值)

    protected void ASPxGridView1_HtmlRowCreated(object sender,DevExpress.Web.ASPxGridView.ASPxGridViewTa ...

  3. AdvStringGrid 单元格字体颜色、背景颜色

    procedure TForm5.Button1Click(Sender: TObject); var I: Integer; begin AdvStringGrid1.RowCount := ;// ...

  4. c#怎样获取excel单元格的RGB颜色

    这段时间一直在做office的工作.前2天获取单元格的颜色的问题一直没搞明确. 開始我想用的就是Npoi.主要前一部分的工作都是用Npoi完毕的 row.GetCell(j).CellStyle.Fi ...

  5. 在Asp.Net MVC中使用NPOI插件实现对Excel的操作(导入,导出,合并单元格,设置样式,输入公式)

    前言 NPOI 是 POI 项目的.NET版本,它不使用 Office COM 组件,不需要安装 Microsoft Office,目前支持 Office 2003 和 2007 版本. 1.整个Ex ...

  6. VBA在Excel中的应用(一):改变符合条件单元格的背景颜色

    在使用excel处理数据的时候,为了能更清晰的标示出满足特定条件的单元格,对单元格添加背景色是不错的选择.手工处理的方式简单快捷,但是当遇到大批量数据,就会特别的费时费力,而且不讨好(容易出错).通过 ...

  7. excel如何设置输入数字后单元格自动填充颜色

    在使用excel的过程中,有时需要在输入数字时,突出显示这些单元格,突出显示可以用有填充颜色的单元格来表示.为了实现这样的效果,需要借助excel的条件格式. 工具/原料 电脑 Excel 2010 ...

  8. 表格单元格td设置宽度无效的解决办法 .

    http://zzstudy.offcn.com/archives/11366 在做table页面时,有时对td设置的宽度是无效的,td的宽度始终有内部的内容撑开,可以设置padding,但直接设置w ...

  9. 帆软报表(finereport)单元格中各颜色标识的含义

    帆软报表(finereport)单元格中,可根据单元格角标的颜色判断单元格进行的操作 过滤:单元格左下角黄色三角形 条件属性:单元格左上角红色三角形.  控件:单元格右侧中间的各种矩形.  左父格:单 ...

随机推荐

  1. caffe下python环境的编译

    安装python所需的依赖包 (1)sudo apt-get install python-numpy python-scipy python-matplotlib ipython ipython-n ...

  2. 查看md文件

    使用命令将md文件转为html,在浏览器中演示 通过npm安装i5ting_toc 安装好node之后,可以直接使用npm.Windows+R打开运行框,输入cmd,打开命令窗口.连网的情况下,输入如 ...

  3. 大数据量.csv文件导入SQLServer数据库

    前几天拿到了一个400多M的.csv文件,在电脑上打开要好长时间,打开后里面的数据都是乱码.因此,做了一个先转码再导入数据库的程序.100多万条的数据转码+导入在本地电脑上花了4分钟,感觉效率还可以. ...

  4. 关于CR0寄存器

    开始的时候,我认为CR0.WP如果被置位,那么内存的页面只读属性将会失效,导致可以被写入数据. 这几天正好碰到一个问题,查看了资料才发现,之前的理解不完整. 引用Intel手册中的一句话: CR0.W ...

  5. css样式表格边框1px hover时为2px 实现方式

    //css .flclass-cont .flclass-cont-box{width:%;display:inline-block;font-size:;margin:10px;position:r ...

  6. elasticsearch集群安全重启节点

    es2.x 关闭集群的动态分片:(动态分片开启状态如果节点宕机了,会导致集群重新分配数据进行数据转移,会导致节点直接大量传输数据)curl -XPUT 'http://192.168.248.193: ...

  7. php方法----将数组按照键值进行排序

    将数组按照键值进行排序 array_multisort(array_column($arr,'first'),SORT_ASC,$arr);

  8. GCC中的强符号和弱符号及强引用和弱引用

    1. 强符号和弱符号 1.1 u-boot和kernel中的__weak指令 u-boot和kernel比较普遍地使用了__weak来定义函数. 在include\linux\compiler-gcc ...

  9. EFCore笔记之查询数据

    查询数据 基础查询,Linq100实例: https://code.msdn.microsoft.com/101-LINQ-Samples-3fb9811b using (var context = ...

  10. Pyhton学习——Day25

    #面向对象的几个方法#1.静态方法@staticmethod,不能访问类属性,也不能访问实例属性,只是类的工具包#2.类方法:@classmethod,在函数属性前加上类方法,显示为(cls)代表类, ...