ClosedXML向现有表中添加数据

7

使用ClosedXML,我正在尝试将数据添加到现有表格中的现有Excel工作表中。简单的方法是在Excel工作表中添加一个表格,下面是如何实现的快速示例。我不明白的是,如果您已经有一个空表格,那么如何将数据添加到现有表格中?

// Add a DataTable as a worksheet
            wb.Worksheets.Add(dataTable);

我不明白你的问题...在Excel中,你所谓的“空表”是什么意思...几乎所有东西都可以在Excel中作为表格。你能否提供一张截图,这样会更容易理解。 - Maxime Porté
3个回答

6

我不知道为什么这个问题对人们来说不清楚。如果存在一个表格(通过在 Excel 中“插入 -> 表格”创建),并且您使用 ClosedXML 打开一个 Excel 文档,添加数据到下一行不会自动扩展表格。

您可以在添加数据之前将其扩展如下:

IXLTables tsTables = thisSheet.Tables;
IXLTable firstTable = tsTables.FirstOrDefault();
if (firstTable != null)
    firstTable.InsertRowsBelow(1);

正是我所需要的!很高兴你在这个问题被问了将近一年后提供了答案,因为多年后它仍然有用 :) - RMD
是的,我不得不再次回到这里,将近4年后我第一次解决了这个问题。 - AndrewK

4
我有一个类似的需求,需要将数据插入到现有表格中,该表格具有多个数据验证/注释/公式。
我发现最简单的解决方案(对我而言)是使用表格的 ReplaceData 调用。如果您在Excel工作表中为表格提供名称,那么这种方法特别有用,因为这样您可以直接从工作簿获取对表格的引用,例如:
var candidateTable = workbook.Table("Candidates");  
candidateTable.ReplaceData(candidateData, propagateExtraColumns: true);

请注意,使其正常工作的关键是设置propogateExtraColumns参数 - 这将确保您设置的任何公式/等等自动复制到创建的任何新行中。
FYI- 您可以通过在工作表中选择表格,单击设计选项卡,然后输入表格名称来设置Excel表格的名称:

Enter table name in Excel


3
要把DataTable添加到现有的工作表中,请使用以下方法:
wb.Worksheet(1).Cell(1, 1).InsertTable(dataTable);

更多信息请查阅文档


3
是的,这是添加新表格到现有工作表的一种方法。我的问题在于如何向该工作表上的现有表格填充数据。每次我替换或添加新表格到工作表中时,都会破坏公式。到目前为止,我通过删除整个工作表、创建一个新的工作表、添加新的表格,然后命名工作表和表格来使其起作用。你可以想象,这需要大量额外的编码才能完成这个任务,这不应该是必须要做的。 - scripter78

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接