试图将粗体应用于整行,但不断获得null引用-NPOI

本文关键字:null -NPOI 引用 应用于 | 更新日期: 2023-09-27 18:22:39

我第一次对列应用粗体,但我只希望一行是粗体,而不是整列。所以我决定做同样的事情,但使用row.RowStyle。编译时没有错误,但我得到的是一个运行时错误,上面写着r.RowStyle.SetFont(font);。我做了一个类来处理与excel相关的所有内容,在这个类中我得到了这个错误(r.RowStyle.SetFont(font);):

已处理NullReferenceException

对象引用未设置为对象的实例

调试了整个过程,什么都没有。我不明白为什么我在使用RowStyle时会出现这个错误,而当我使用CellStyle时却没有出现这个错误。

这是我的课:

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's 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;
            #endregion
            sheet = wb2.CreateSheet("test sheet");
            //se tiene que usar esto cada vez que vallas a escribir en el mismo row
            r = sheet.CreateRow(0);
            r.RowStyle.SetFont(font);
            for (int i = 0; i < headerTitles.Length; i++)
            {
                r.CreateCell(i).SetCellValue(headerTitles[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);
            //wb.Worksheets.Add(ws);
            //wb.Save(exelPath);            
        }
        // 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);
            r.CreateCell(col).SetCellValue(text);           
        }
        //guarda la info en un excel
        public void writeToFile()
        {
            FileStream file = new FileStream(exelPath, FileMode.Create);
            wb2.Write(file);
            file.Close();
        }
    }
}

试图将粗体应用于整行,但不断获得null引用-NPOI

看起来您的RowStyle为null。尝试以下操作:

var style = wb2.CreateCellStyle();
style.SetFont(font);
r = sheet.CreateRow(0);
r.RowStyle = style;