我正在使用EPPLus进行项目,我正在尝试在内存中创建一个Excel工作表来模拟它。
我用于单元测试的类有一个方法
public ExcelPackage GetExcelPackage()
{
using (var package = new ExcelPackage())
{
ExcelWorksheet returnWorksheet = package.Workbook.Worksheets.Add("worksheet");
returnWorksheet.Cells[1, 1].Value = "043";
returnWorksheet.Cells[1, 2].Value = "21677";
returnWorksheet.Cells[1, 3].Value = "100";
returnWorksheet.Cells[1, 4].Value = String.Empty;
returnWorksheet.Cells[1, 5].Value = "12292016";
returnWorksheet.Cells[1, 6].Value = String.Empty;
return package;
}
}
在我的InputFileController中,当我调用package.Workbook.Worksheets.First时,我得到一个null对象错误。
public static IInputFileRepository ReadExcelFile(IFileDataSource excelFileDataSource)
{
FileInfo fileToRead = new FileInfo(excelFileDataSource.InputFile);
List<string> lines = new List<string>();
ExcelPackage package = excelFileDataSource.GetExcelPackage();
ExcelWorksheet worksheet = package.Workbook.Worksheets.First();
知道我可能做错了吗?
所以,看起来我有一个无关的bug。我没有让我的IFileDataSource返回一个ExcelPackage,而是让它返回文件名,并使用EPPlus从我的InputController打开并读取该文件。
public static IInputFileRepository ReadExcelFile(IFileDataSource excelFileDataSource)
{
FileInfo fileToRead = new FileInfo(excelFileDataSource.InputFile);
List<string> lines = new List<string>();
var fileInfo = new FileInfo(excelFileDataSource.InputFile);
using (var package = new ExcelPackage(newFile: fileInfo))
{
ExcelWorksheet worksheet = package.Workbook.Worksheets.First();
for (int rowIndex = 2; rowIndex <= worksheet.Dimension.End.Row; rowIndex++)
由于处理对象而发生空引用错误 - 这是由于代码块周围的using
语句引起的。
我在这里给出答案,以防任何人来到这里并想知道根本原因。