EPPlus Excel 导出,如何从列表中打印 header 列

EPPlus Excel export, how to print header column from list

我想使用列表添加 header 列。

我试过这个,但它只打印第一列。

List<string> headerColumns1 = new List<string>()
{
    "1",
    "2",
    "3"
};

ExcelPackage excel = new ExcelPackage();
var workSheet = excel.Workbook.Worksheets.Add("Sheet1");
workSheet.Cells[1, 1].LoadFromCollection(headerColumns, false); //
workSheet.Cells[2, 1].LoadFromCollection(data, false);

它在第一列中只打印“1”。

如何打印第一行的所有 header 列?

您只指定了一个单元格 此代码:workSheet.Cells[1, 1] 显示您的错误

您有两个选择: 指定范围

using (ExcelRange range = ec.Cells[1, 1, 1, headerColumns.Count])
{
    range.LoadFromCollection(headerColumns, false);
}

或者使用foreach手动填充

int index = 1;
foreach(var item in headerColumns)
{
    workSheet.Cells[1, index++].Value = item;
}

看看LoadFromCollection

Load a collection into a the worksheet starting from the top left row of the range.

p.s。我相信这只是输入错误:List<string> headerColumns1 = new List<string>()workSheet.Cells[1, 1].LoadFromCollection(headerColumns, false);

该函数将获取一个集合并将每个条目视为一个 Row 对象,并使用 Reflections 将每个 属性 打印为列值。所以如果你给它那个集合,它会看到它 R1C1 =“1”,R2C1 =“2”,然后 R3C1 =“3”。

但是,workSheet.Cells[2, 1].LoadFromCollection(data, false); 行将覆盖 R2C1 及以下的所有值,因为这是它开始的右上角单元格。

因此,要执行您想要的操作,您需要提供 List 的内容,其中包含一个条目。例如,这将解决上面代码的问题(但您最终可能需要比 Tuple 更复杂的东西):

var headerColumns = new List<Tuple<string, string, string>>
{
    new Tuple<string, string, string>("1","2","3")
};

workSheet.Cells[1, 1].LoadFromCollection(headerColumns, false);

显示为: