NPOI.HSSF.UserModel.HSSFWorkbook wb = new HSSFWorkbook(ExcelFile); //获取工作簿
HSSFSheet sheet = (HSSFSheet)wb.GetSheetAt(0); //获取第一个Sheet
HSSFRow row = (HSSFRow)sheet.GetRow(0); //获取第一个Sheet的第一行
HSSFCell cell = (HSSFCell)sheet.GetRow(0).GetCell(0);  //获取第一个Sheet第一行的第一列,即第一个单元格
HSSFCellStyle cellStyle = (HSSFCellStyle)wb.CreateCellStyle(); //定义一个单元格样式
// 设置单元格背景色
cellStyle.FillForegroundColor = HSSFColor.Red.Index;
cellStyle.FillPattern = FillPattern.SolidForeground;//设置文字对齐方式
cellStyle.Alignment = HorizontalAlignment.Center; //水平居中
cellStyle.VerticalAlignment = VerticalAlignment.Center; //垂直居中//设置字体格式开始
HSSFFont firstFont = (HSSFFont)wb.CreateFont();//设置字体的颜色为自定义颜色
HSSFPalette palette = wb.GetCustomPalette();
palette.SetColorAtIndex(HSSFColor.Lime.Index, (byte)205, (byte)133, (byte)63); //RGB颜色值
firstFont.Color = HSSFColor.Lime.Index;
//字体属性
firstFont.FontName = "宋体";
firstFont.FontHeightInPoints = (short)12; //设置字体大小
firstFont.Boldweight = (short)FontBoldWeight.Bold; //加粗
cellStyle .SetFont(firstFont);  //设置cellStyle 样式的字体
//设置字体格式结束//边框(Thin是单线——)
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.None;

具体实例:
(要求如果基本工资大于5000,该行的背景色要设置为红色。)

 protected void btnExcel_Click(object sender, ImageClickEventArgs e){BLL.BLL_Test bll = new BLL.BLL_Test();DataTable dt = bll.getData().Tables[0];string path = System.Web.HttpContext.Current.Request.MapPath("Files/");FileStream ExcelFile = new FileStream(path + "text.xls", FileMode.Open, FileAccess.ReadWrite);NPOI.HSSF.UserModel.HSSFWorkbook wb = new HSSFWorkbook(ExcelFile);//获取第一个工作表  HSSFSheet sheet = (HSSFSheet)wb.GetSheetAt(0);HSSFRow row;HSSFCell cell;//设置首行内容cell = (HSSFCell)sheet.GetRow(0).GetCell(0); cell.SetCellValue(System.DateTime.Now.ToString("yyyy-mm") + "测试");//1、如果基本工资>5000,该行填充为红色。(排除最后一行)bool cellStyleFlag = false;HSSFCellStyle cellStyle = (HSSFCellStyle)wb.CreateCellStyle();cellStyle.FillForegroundColor = HSSFColor.Red.Index;// 设置背景色cellStyle.FillPattern = FillPattern.SolidForeground;cellStyle.Alignment = HorizontalAlignment.Center;//2、设置首行格式HSSFFont firstFont = (HSSFFont)wb.CreateFont();HSSFPalette palette = wb.GetCustomPalette();palette.SetColorAtIndex(HSSFColor.Lime.Index, (byte)205, (byte)133, (byte)63);firstFont.Color = HSSFColor.Lime.Index;firstFont.FontName = "宋体";firstFont.FontHeightInPoints = (short)12;firstFont.Boldweight = (short)FontBoldWeight.Bold;HSSFCellStyle firstTitleStyle = (HSSFCellStyle)wb.CreateCellStyle();firstTitleStyle.SetFont(firstFont);firstTitleStyle.Alignment = HorizontalAlignment.Center;firstTitleStyle.VerticalAlignment = VerticalAlignment.Center;cell.CellStyle = firstTitleStyle;//3、设置标题行格式HSSFFont font = (HSSFFont)wb.CreateFont();font.Color = HSSFColor.Lime.Index;font.FontName = "宋体";font.FontHeightInPoints = (short)10;font.Boldweight = (short)FontBoldWeight.Bold;HSSFCellStyle titleStyle = (HSSFCellStyle)wb.CreateCellStyle();titleStyle.SetFont(font);titleStyle.Alignment = HorizontalAlignment.Center;titleStyle.VerticalAlignment = VerticalAlignment.Center;//边框                                       titleStyle.BorderBottom = NPOI.SS.UserModel.BorderStyle.Thin;titleStyle.BorderLeft = NPOI.SS.UserModel.BorderStyle.Thin;titleStyle.BorderRight = NPOI.SS.UserModel.BorderStyle.Thin;titleStyle.BorderTop = NPOI.SS.UserModel.BorderStyle.None;for (int r = 0; r < dt.Rows.Count+2; r++) //因为有两行标题行,所以多循环两行{row = (HSSFRow)sheet.GetRow(r+1); //由于首行已经设置过样式,所以行数从第2行开始if (row == null)row = (HSSFRow)sheet.CreateRow(r+1);cell = (HSSFCell)row.GetCell(0);if (cell == null)cell = (HSSFCell)row.CreateCell(0);cellStyleFlag = false; //每次循环一行都要将cellStyleFlag初始为false,否则一行变红之后,后面的行都是红色if (r > 1 && r != dt.Rows.Count + 1){cell.SetCellValue(r - 1); //序号if (int.Parse(dt.Rows[r-2]["基本工资"].ToString()) > 5000)  //要在循环列之前先判断,这样才能根据cellStyleFlag来循环设定该行的列cellStyleFlag = true;}for (int c = 0; c < dt.Columns.Count; c++){cell = (HSSFCell)row.GetCell(c);if (cell == null)cell = (HSSFCell)row.CreateCell(c);if (r < 2) //设置标题行的样式cell.CellStyle = titleStyle;else{if (c > 0) //第一列是序号,所以第一列不绑值cell.SetCellValue(dt.Rows[r-2][c].ToString());if (cellStyleFlag)cell.CellStyle = cellStyle; }}}string NewFileName = "text" + "_" + System.DateTime.Now.ToString("yyyymmddhhmmss") + ".xls";if (Common.FileHelper.IsExistFile(path + "temp/" + NewFileName)){Common.FileHelper.DeleteFile(path + "temp/" + NewFileName);}FileStream Excel_NewFile = new FileStream(path + "temp/" + NewFileName, FileMode.Create);wb.Write(Excel_NewFile);Excel_NewFile.Flush();ExcelFile.Close();Excel_NewFile.Close();path = path + "/temp/" + NewFileName;System.IO.FileInfo file = new System.IO.FileInfo(path);Response.Clear();Response.Charset = "GB2312";Response.ContentEncoding = System.Text.Encoding.UTF8;// 添加头信息,为"文件下载/另存为"对话框指定默认文件名 Response.AddHeader("Content-Disposition", "attachment; filename=" + Server.UrlEncode(file.Name));// 添加头信息,指定文件大小,让浏览器能够显示下载进度 Response.AddHeader("Content-Length", file.Length.ToString());// 指定返回的是一个不能被客户端读取的流,必须被下载 Response.ContentType = "application/ms-excel";// 把文件流发送到客户端 Response.WriteFile(file.FullName);// 停止页面的执行 Response.End();}

导出的Excel:

**备注:**导出Excel取的是模板,标题行的样式其实已经在模板里已经设置好了。之所以在程式里又用代码去控制标题行的样式,是因为加上“如果基本工资大于0,该行的背景色要设置为红色”的设置后,标题行的字体颜色会自动变成绿色的!!! 我也不知道为什么,后来想要保持标题行颜色为橙色,就在代码里进行控制了。
模板如下图:

【C#】NPOI导出Excel格式设置相关推荐

  1. NPOI导出EXCEL 打印设置分页及打印标题

    在用NPOI导出EXCEL的时候设置分页,在网上有查到用sheet1.SetRowBreak(i)方法,但一直都没有起到作用.经过研究是要设置  sheet1.FitToPage = false; 而 ...

  2. 使用NPOI 导出EXCEL,设置样式,字体等详细代码方法教程

    MemoryStream ms = new MemoryStream();XSSFWorkbook workbook = new XSSFWorkbook();//创建Workbook对象for (i ...

  3. NPOI导出数值格式设置(我是保留四位小数,不足补0)

    看了网上好多帖子,都是保留两位小数的,写法是: HSSFDataFormat.GetBuiltinFormat("0.00"); 于是想四位小数,就是多加两个00,变成: HSSF ...

  4. C# NPOI 导出Excel 日期格式

    NPOI 导出Excel时,如果是需要日期格式,在这处理一下,Excel本身支持的是 XSSF开头 和 HSSF开头就是 .xls 和 .xlsx的区别, 可以强制转换 row = (XSSFRow) ...

  5. NPOI导出excel设置打印为A4纸张

    NPOI导出excel设置打印为A4纸张: Sheet sheet1 = hssfworkbook.CreateSheet("表(横版)");                 sh ...

  6. npoi 设定视图为分页预览_NPOI导出EXCEL 打印设置分页及打印标题

    在用NPOI导出EXCEL的时候设置分页,在网上有查到用sheet1.SetRowBreak(i)方法,但一直都没有起到作用.经过研究是要设置  sheet1.FitToPage = false; 而 ...

  7. .net开发时用NPOI导出xlsx格式的Excel时,打开导出的Excel遇到“部分内容有问题”的报错

    项目场景: 提示:这里简述项目相关背景: .NET 开发 C# 问题描述 用NPOI导出xlsx格式的Excel时,打开导出的Excel遇到"部分内容有问题"的报错 原因分析: 写 ...

  8. NPOI导出Excel百分比格式

    NPOI导出Excel百分比格式 using using System; using System.Collections.Generic; using System.Data; using Syst ...

  9. C#利用NPOI导出Excel

    C#利用NPOI导出Excel 第一篇文章 View Code 1 using System; 2 using System.Collections.Generic; 3 using System.L ...

  10. Winform中通过NPOI导出Excel时通过ICellStyle和IDataFormat格式化日期显示格式

    场景 Winform中通过NPOI导出Excel的三种方式(HSSFWorkbook,XSSFWorkbook,SXSSFWorkbook)附代码下载: https://blog.csdn.net/B ...

最新文章

  1. 2021年大数据Flink(十八):Flink Window操作
  2. Jdom makes xml easy
  3. P1080 国王游戏(贪心)
  4. 之全能忙内_全能水适能指导员流行到山西,你是否跟上?
  5. $.ajax()参数详解及标准写法
  6. Android NDK学习记录(一)
  7. Integrating ASP.NET AJAX with SharePoint
  8. 驳文不看文,实在可怕
  9. 3. HTML DOM Attribute 对象
  10. MySQL5及更高版本的jar包下载(jdbc)及常见问题解决
  11. 天创速盈:拼多多新店什么时候适合直通车?
  12. HTML5入门 之下拉菜单
  13. 飞腾arm服务器下的银河麒麟V10 yum 安装docker
  14. 【Linux】syscall系统调用原理及实现
  15. Cocos2d python
  16. 利用ubuntu对SD卡分区,生成EXT3、EXT4分区
  17. Sanic部署(1)
  18. 2020-02-28-E-prime主要常见问题及matlab、python打marker方式
  19. 深度学习-第T6周——好莱坞明星识别
  20. Ubuntu服务器更改远程端口号的方法

热门文章

  1. python 使用ThreadPool 创建线程,后台执行并check
  2. MYSQL存储过程详解(创建、变量的定义、异常、错误输出、游标、调试)
  3. 请求服务器获取微信openid,Golang通过小程序获取微信openid的方法示例
  4. Data Lab 2(深入理解计算机系统)
  5. 如何修复rpc服务器,打印时弹出RPC服务器不可用修复教程
  6. 算法与数据结构王道天勤_计算机考研专业课 天勤和王道应该如何选择呢 或者说二者的区别是什么?...
  7. 实用Python识别图片上的数字(转载)
  8. 格物致知诚意正心修身齐家治国平天下是什么意思【转载】
  9. 不会安装Maya的同学看过来,安装步骤详解
  10. android图片剪切第三方,Android第三方开源图片裁剪截取:cropper