试图将粗体应用于整行,但不断获得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();
}
}
}
看起来您的RowStyle为null。尝试以下操作:
var style = wb2.CreateCellStyle();
style.SetFont(font);
r = sheet.CreateRow(0);
r.RowStyle = style;