通过 C# 以编程方式将行添加到 Excel 数据模型

Programmatically add rows to an Excel data model via C#

我们正在考虑允许我们的客户从我们的 Web 应用程序下载一个 Excel 文件,其中包含他们数据的原始导出以及一些基本图表和基于该数据的数据透视表 table数据.

我们想要完成这项工作的基本方法是,我们有一个固定的 Excel 文件,其中包含一项工作中的所有报告元素 sheet 并为另一项工作中的基础数据留出空间工作sheet。当用户请求他们的 Excel 报告时,我们以编程方式用他们的结果填写数据工作 sheet 并将最终的 Excel 文件发送给他们。

在使用固定数据集进行原型设计时,一切似乎都变得容易了。我们使用的数据集被添加到 Excel 数据模型,然后我们设置了图表和其他报告元素。然而,当在我们的应用程序中使用该文件作为生成的 Excel 文件的模板时,我们发现数据模型的定义仍然存在——也就是说,我们用 [=35] 构建了 "protype" =] $A:$T79 的定义

但是在生成报告时,该定义不会更改为包含添加的数据集可能具有的任何大小。

我们正在使用 EPPlus 来处理我们的 Excel sheet 代,但到目前为止还没有找到解决此类问题的方法。这可能很大程度上是因为我们是相当 Excel 的新手。目标是获得用户体验,即 Excel sheet 中包含的图表和数据透视表 table 反映了 Excel 文件中包含的总数据集,而无需它们做任何事情。

好的,我实际上已经找到了解决方案。 解决方案就在我们面前。

我们将数据集定义为命名集 - 这是在 "Formulas" 下和 "Name Manager" 内完成的。我们有一个范围来定义我们的数据集——定义范围时的 "Refers To" 字段可以采用公式。因此,我们没有给它一个固定的大小,而是使用这个:=OFFSET(Data!$A;0;0;COUNTA(Data!$A:$A);COUNTA(Data!:))

这会计算行数和列数,参考我们 Data 工作表中的 A1。我们所有的枢轴都设置为在启动时重新加载,这似乎有效。