Trying to apply bold to whole line but keep getting null reference - NPOI

The first time I applied bold to the columns, I wanted the row to be bold instead of the entire column. So I decided to do the same, but using row.RowStyle

. Compiled with no errors, but what I got is a runtime error where stated r.RowStyle.SetFont(font);

. I made a class that is related to everything excel related and in this class I get this error ( r.RowStyle.SetFont(font);


Handled by NullReferenceException

An object reference is not set on an object instance.

Debug the whole process and nothing is specified. I don't understand why I am getting this error when using RowStyle

, and when I am using CellStyle

, I am not getting this error.

This is my class:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;   

using NPOI.HSSF.UserModel;
using NPOI.HPSF;
using NPOI.POIFS.FileSystem;
using NPOI.SS.UserModel;

using System.IO;

//works with everything related to excel
namespace takeMyTime_text
    class exelSheet
            string exelPath; // where it being saved

        HSSFWorkbook wb2 = new HSSFWorkbook();

        ISheet sheet;

        IRow r;

        IFont font;

        String[] headerTitles = { "Date", "In", "Out", "In", "Out", "Description" };

        // assing values to class variables
        public void getValues(string path, string worksheetName)
            exelPath = path;

        //excel header
        public void header()
            #region set bold properties

            font = wb2.CreateFont();

            font.FontHeightInPoints = 11;

            font.FontName = "Arial";

            font.Boldweight = (short)FontBoldWeight.Bold;


            sheet = wb2.CreateSheet("test sheet");

            //se tiene que usar esto cada vez que vallas a escribir en el mismo row
            r = sheet.CreateRow(0);


            for (int i = 0; i < headerTitles.Length; i++)

        //excel footer
        public void footer(int row, int col, string totalHours, int row2, int col2)
            //ws.Cells[row, col] = new Cell("Worked hours:");

            //ws.Cells[row2, col2] = new Cell(totalHours);



        // write the date on the excel file
        public void writeDate(DateTime dt, int col, int row)
            r = sheet.CreateRow(row);

            r.CreateCell(col).SetCellValue(dt.Month + "/" + dt.Day + "/" + dt.Year);          

        //write and value on a cel
        public void writeValues(string text, int col, int row)
            //r = sheet.CreateRow(row);


        //guarda la info en un excel
        public void writeToFile()
            FileStream file = new FileStream(exelPath, FileMode.Create);





source to share

1 answer

It looks like your RowStyle is NULL. Try the following:

var style = wb2.CreateCellStyle();

r = sheet.CreateRow(0);
r.RowStyle = style;




All Articles