我想使用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;在第一栏。
如何在第一行打印所有标题列?
答案 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;
}
从范围的左上角开始将集合加载到工作表中。
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);
其中显示如下: