Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to change cell color with NPOI

Tags:

using NPOI.XSSF.UserModel; using NPOI.XSSF.Model;  using NPOI.HSSF.UserModel; using NPOI.HSSF.Model;  using NPOI.SS.UserModel; using NPOI.SS.Util;   (...)  XSSFWorkbook hssfwb;  using (FileStream file = new FileStream(@"D:\VB\XLSX teste com NPOI\XLSX 1\Book1.xlsx",       FileMode.Open, FileAccess.Read)) {     hssfwb = new XSSFWorkbook(file);     file.Close(); }  ISheet sheet = hssfwb.GetSheetAt(0); IRow row = sheet.GetRow(0);  ICell cell = row.CreateCell(5); cell.SetCellValue("test"); cell.CellStyle.FillBackgroundColor = IndexedColors.BrightGreen.Index; cell.CellStyle.FillPattern = FillPattern.SolidForeground;  using (FileStream file = new FileStream(@"D:\VB\XLSX teste com NPOI\XLSX 1\Book1ee22.xlsx",       FileMode.Create, FileAccess.Write)) {     hssfwb.Write(file);     file.Close(); } 

Version of NPOI: 2.1.3.1 I have this code and it is changing the color for the hole sheet and not just the cell... What is the proper way to change the fill color of the cell?


Here is the working code, based on the answer that is marked as correct below:

XSSFWorkbook hssfwb;         using (FileStream file = new FileStream(@"D:\Copy D\Tech\VB\XLSX teste com NPOI\XLSX 1\Book1.xlsx", FileMode.Open, FileAccess.Read))         {             hssfwb = new XSSFWorkbook(file);             file.Close();         }          ISheet sheet = hssfwb.GetSheetAt(0);         IRow row = sheet.GetRow(0);           ICellStyle testeStyle = hssfwb.CreateCellStyle();         testeStyle.BorderBottom = NPOI.SS.UserModel.BorderStyle.Medium;         testeStyle.FillForegroundColor = IndexedColors.BrightGreen.Index;         testeStyle.FillPattern = FillPattern.SolidForeground;           ICell cell = row.CreateCell(5);         cell.SetCellValue("testeeerere");         cell.CellStyle = testeStyle;           using (FileStream file = new FileStream(@"D:\Copy D\Tech\VB\XLSX teste com NPOI\XLSX 1\Book1ee22.xlsx", FileMode.Create, FileAccess.Write))         {             hssfwb.Write(file);             file.Close();         } 
like image 760
meme Avatar asked May 05 '16 13:05

meme


1 Answers

take a look at this example:

using NPOI.HSSF.UserModel; using NPOI.SS.UserModel; using NPOI.SS.Util; 

(...)

Row row = sheet.CreateRow(0);  //styling Font boldFont = workbook.CreateFont(); boldFont.Boldweight = (short)FontBoldWeight.BOLD; ICellStyle boldStyle = workbook.CreateCellStyle(); boldStyle.SetFont(boldFont);  boldStyle.BorderBottom = CellBorderType.MEDIUM; boldStyle.FillForegroundColor = NPOI.HSSF.Util.HSSFColor.GREY_25_PERCENT.index; boldStyle.FillPattern = FillPatternType.SOLID_FOREGROUND;   for (int i = 0; i < columns.Length; i++) {     Cell cell = row.CreateCell(i);     cell.SetCellValue(columns[i]);     cell.CellStyle = boldStyle; } 

here you can see how to apply bold, background color and border for each cell in a row. In this example columns is string array representing columns data; use your values instead.

like image 62
Nino Avatar answered Sep 17 '22 18:09

Nino