如何使Excel电子表格列名称不同于匿名类型成员?

时间:2019-05-24 18:40:52

标签: c# excel spreadsheet

我需要根据客户要求设置Excel列名称。例如。 “自动装运案例”,“安全库存案例”,但是运行以下代码时出现错误。

project.dll中发生类型'System.NullReferenceException'的异常,但未在用户代码中处理 对象引用未设置为对象的实例。

我该如何解决?

//Create the WorkSheet
ExcelWorksheet worksheet = excelPackage.Workbook.Worksheets.Add("VIL");

//get column names
string[] columnNames =
        {"Item2",
        "Autoship Cases",
        "Safety Stock Cases",
        "TotalCases",
        "QtyPerCase",
        "Title",
        "Job",
        "Item1",
        "CartonNumber",
        "PrintQuantity"
        };

// get table data                
var records = db.BinderyLabels
    .Where(r => r.UserId == user.Id)
    .Select(p => new
    {
        Item2 = p.Item2 ?? "",
        AutoshipCases = p.AutoshipCases ?? 0,
        SafetyStockCases = p.SafetyStockCases ?? 0,
        TotalCases = p.TotalCases ?? 0,
        QtyPerCase = p.QtyPerCase ?? 0,
        Title = p.Title ?? "",
        Job = p.Job ?? "",
        Item1 = p.Item1 ?? "",
        CartonNumber = p.CartonNumber ?? 0,
        PrintQuantity = p.PrintQuantity ?? 0
    });

int i = 0;
//Adding column name to worksheet
foreach (var col in columnNames)
{
    i++;
    worksheet.Cells[1, i].Value = col;
}

//Adding records to worksheet
int j;
int t = 2;

foreach (var rec in records)
{
    for (j = 0; j < columnNames.Length; j++)
    {
        worksheet.Cells[t, j + 1].Value = rec.GetType().GetProperty(columnNames[j].ToString()).GetValue(rec, null);
    }
    t++;
}               

0 个答案:

没有答案