更改命名区域 EPPlus

3
我正在使用EPPlus来填充Excel文件,我有许多数据透视表,当文件被打开时它们会刷新。
它们的来源始终是我的应用程序填充的两个工作表之一。
问题在于每次填充时行数都不同,我尝试在它们的源中使用命名范围,但是当我使用EPPlus更改命名范围的范围时,它无效。
   epplusWs.Workbook.Names["named_range"].Address = "data_sheet!$A$1:$H$" + row.ToString();

你能把你用来创建数据透视表的代码粘贴过来吗? - Yahya Hussein
我没有使用EPPlus来创建它们,我有一个模板,其中使用了以命名范围作为数据源的这些对象。 - Carlos Siestrup
1
那么问题是什么?你正在更新命名范围地址的地址,但更新没有生效? - Yahya Hussein
是的,我也尝试过使用公式创建动态范围,但如果文件中存在宏或动态范围,EPPlus在保存文件时会出现错误。 - Carlos Siestrup
你在 $H$ 后面漏了一个数字吗? - Taraz
显示剩余2条评论
2个回答

1
这是一个晚回答,但您可以像这样添加一个新的命名范围:
    ExcelNamedRange NR = new ExcelNamedRange("named_range", sheet: worksheet, nameSheet: worksheet, address: <your address string here>, index: 1);
    package.Workbook.Worksheets[1].Names.Add("named_range", NR);

只是提醒一下,自版本5.1.2起,此解决方案已不再适用 - 此构造函数的作用域现在在此版本中设置为内部,建议改用Gilles Boisson的方法。 - Kalpesh Popat

1
我找到了一种编辑现有内容的方法:

var range = epplusWs.Workbook.Names[rangeName];
range.Address = "YourNewRange";
epplusWs.Workbook.Names.Remove(rangeName);
epplusWs.Workbook.Names.Add(rangeName, range);

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