ClosedXML将数据添加到现有表

时间:2015-08-11 17:37:14

标签: c# openxml closedxml

使用ClosedXML我正在尝试将数据添加到现有表中的现有Excel工作表。最简单的方法是在下面的Excel工作表中添加一个表,这是一个如何做到这一点的简单示例。我不明白的是,如果你已经有一个空的表,你怎么能只添加到现有表?

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

3 个答案:

答案 0 :(得分:3)

要将DataTable添加到现有工作表,请使用以下命令:

wb.Worksheet(1).Cell(1, 1).InsertTable(dataTable);

documentation中的更多信息。

答案 1 :(得分:3)

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

您可以在添加数据之前展开它:

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

答案 2 :(得分:1)

我有一个类似的要求,我需要将数据插入现有的表中,该表具有许多内置的数据验证/注释/公式。

我发现(对我而言)最简单的解决方案是使用表的 ReplaceData 调用。如果您在Excel工作表中为表提供名称,这将特别有用,因为这样您可以直接从工作簿中获取对该表的引用,即:

var candidateTable = workbook.Table("Candidates");  
candidateTable.ReplaceData(candidateData, propagateExtraColumns: true);

请注意,使其正常工作的关键是设置 propogateExtraColumns 参数-这将确保您设置的任何公式/ etc将自动复制到创建的任何新行。 / p>

仅供参考-您可以通过在工作表中选择表格,单击“设计”选项卡,然后输入表格名称来设置Excel表格的名称:

Enter table name in Excel