Excel Interop - 如何更改命名范围

Vil*_*zka 5 c# excel excel-interop

我有一个模板 excel 文件,我将数据从 SQL Server OLEDB 连接器填充到其中。该文件包含一些数据透视表,这些数据透视表引用了数据库正在填充的数据集。

目前我所做的是使用“Data!$A:$K”范围选择工作表中的所有行。这会导致数据透视表中显示空白值的问题。

我想要做的是在数据集上创建一个命名表并将数据透视表引用到它(另外我获得了命名表带来的其他一些优势)。

行数自然没有设置,所以我想找到一种方法将命名范围范围设置为仅实际值。

我为此使用 Excel Interop 和 C#,但找不到更改范围的方法。我只得到了:

oRng = oSheet.get_Range("Transactions");
Run Code Online (Sandbox Code Playgroud)

其中选择命名范围。但是如何更改属于它的单元格?

或者我应该追求更好的解决方案吗?

编辑

动态范围就是答案!

感谢@TimWilliams 的回复,我解决了这个问题:

“在模板中使用动态范围:http : //ozgrid.com/Excel/DynamicRanges.htm

我觉得动态范围在这里描述得更好:http : //www.contextures.com/xlpivot01.html

我遇到了一个小问题,我无法使用数据透视表中的范围,因为它要求它至少需要 2 行才能操作——模板文件只有列标题。我在第二行的第一个单元格中添加了一个随机字符串,数据透视表接受了这一点。

之后我不得不使用 c# 代码删除该行。

谢谢你们的帮助。

Gui*_*ume 5

通过执行以下操作,您将在 oSheet 上创建一个命名范围(事务),盯着单元格 A1 并在单元格 C3 处完成

Range namedRange= oSheet.Range[oSheet.Cells[1, 1], oSheet.Cells[3, 3]];
namedRange.Name = "Transactions";
Run Code Online (Sandbox Code Playgroud)

如果名称已存在于工作簿中,它将被替换,否则将被创建。