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

时间:2016-08-03 16:46:46

标签: c# epplus

我想使用List添加标题列。

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

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);

仅打印&#34; 1&#34;在第一栏。

如何在第一行打印所有标题列?

2 个答案:

答案 0 :(得分:1)

您只指定了一个Cell 此代码: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

  

从范围的左上角开始将集合加载到工作表中。

P.S。我认为只是输入错误:List<string> headerColumns1 = new List<string>()反对workSheet.Cells[1, 1].LoadFromCollection(headerColumns, false);

答案 1 :(得分:0)

该函数将采用集合并将每个条目视为Row对象,并使用“反射”将每个属性作为列值打印。因此,如果你给它那个集合它看到它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);

其中显示如下:

enter image description here