gpt4 book ai didi

c# - ClosedXML 将列表中的数据插入现有的适当 Excel 表(命名范围)c#

转载 作者:太空宇宙 更新时间:2023-11-03 14:53:30 27 4
gpt4 key购买 nike

有一个类似的问题,似乎没有回答(也许没有答案)。如何从 Closed XML“更新”现有的 Excel 表(命名范围)。我知道如何获取表信息,并删除现有数据(见下文)

    var ws = wb.Worksheet(sheetName);
var table = ws.Table("data");
table.Clear();

然后呢?我有一个名为“listdata”的列表,它与表格标题完全匹配......

我是否需要像这样一次一个地循环遍历表格(这看起来很浪费):

foreach (var item in listdata){table.InsertRowsBelow(1); ws.Cells(2,1).InsertData(item)}

我想如果你这样做可能会更简单:

table.InsertRowsBelow(listdata.Count()); ws.Cells(2,1).InsertData(listdata);

或者有没有办法批量加载到“表”(类似于 .AddRange(listdata) 或 .Union(listdata))。目前,我只是删除整个工作表,然后重新创建工作表并粘贴新表格:

      wb.Worksheets.Delete(sheetName);
var ws = wb.Worksheets.Add(sheetName);
ws.Cell(1, 1).InsertTable(listdata, "data", true);

最佳答案

据我所知,您在回答中讨论的方法是最简单的方法,即

  • 获取表的引用
  • 删除其数据
  • 插入您的列表。

InsertData 充当批量插入,它将采用任何 IEnumerable 集合并将整个集合输出到从所选单元格开始的 Excel 电子表格中。

因此,例如,您可以执行此操作以从列表中填充表格(其中工作表的第一行是表格的标题行):

private void PopulateTable(XLWorkbook wb, string workSheetName, string tableName, IEnumerable list)
{
var ws = wb.Worksheet(workSheetName);
var table = ws.Table(tableName);

ws.Cell(2, 1).InsertData(list);
}

Cell 还有一个 InsertTable 函数,它将插入一个 DataTable 而不是 IEnumerable

关于c# - ClosedXML 将列表中的数据插入现有的适当 Excel 表(命名范围)c#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50685463/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com