c# - Excel Interop - 如何更改命名范围

标签 c# excel excel-interop

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

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

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

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

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

oRng = oSheet.get_Range("Transactions");

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

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

编辑

动态范围就是答案!

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

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

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

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

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

谢谢大家的帮助。

最佳答案

通过执行以下操作,您将在 oSheet 上创建一个命名范围(事务),开始于单元格 A1 并结束于单元格 C3

Range namedRange= oSheet.Range[oSheet.Cells[1, 1], oSheet.Cells[3, 3]];
namedRange.Name = "Transactions";

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

关于c# - Excel Interop - 如何更改命名范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9791935/

相关文章:

vba - 如何要求 Excel 2010 工作簿位于特定文件路径中才能使用 VBA 打开?

vb.net - 出现错误时,转到下一个所需的操作,而不是下一行

c# - 为什么我的数据透视表字段名称被视为无效和/或我的数据被视为未组织为带有标签列的列表?

c# - "sheetwise"如何将 Excel 工作簿保存或导出为 PDF 文件?

c# - 使用 C# 的 get set 属性被认为是好的做法吗?

python - 如何用另一种类型的值覆盖 C# 中的变量?

c# - setExpressCheckout 和 SSL/TLS 错误

c# - 何时同时运行异步函数?

通过带项目符号的 VBA 发送 HTML 电子邮件

.net - 无法将类型 'System.__ComObject' 的 COM 对象强制转换为接口(interface)类型 'Microsoft.Office.Interop.Excel.Worksheets'