【发布时间】:2016-06-04 02:34:41
【问题描述】:
类似于
EPPlus - Named Range is not populated
在他的例子中,他的范围在工作簿级别,但他正在查看工作表级别。
我的 EP 代码在工作簿级别显示 0 个范围,在工作表级别显示 15 个范围,这是应该的。
打开工作表。名称显示所有 15 个,并带有正确的名称。
检索一个范围,公式是正确的
“OFFSET(Sheet1!$A$33, 0, Sheet1!_CurrentMonth, 1, 55 -Sheet1!_CurrentMonth)”,但几乎所有其他内容都会在评估时返回异常。
它报告 1 列,这是不正确的。
使用“'Sheet1'!_Fund1Projected”,'FullAddress' 看起来是正确的,但 'FullAddressAbsolute' 给出了“$#REF!$-1”
最后,我使用模板 xltm 创建电子表格 xlsm。
public static void CreateChart()
{
var excelFullPath = "C:\\Users\\username\\Documents\\Excel\\Templates\\";
var excelFileName = "LowCashBalanceChart.xlsm";
FileInfo newFile = new FileInfo(excelFullPath + excelFileName);
if (newFile.Exists)
newFile.Delete();
FileInfo template = new FileInfo(excelFullPath + "Sample Chart.xltm");
using (ExcelPackage xlPackage = new ExcelPackage(newFile, template))
{
ExcelWorksheet worksheet = xlPackage.Workbook.Worksheets["Sheet1"]; //xlPackage.Workbook.Worksheets.FirstOrDefault();
ExcelNamedRange namedRange;
namedRange = xlPackage.Workbook.Names["_Fund1Projected"]; // fails, no ranges at the WB level
namedRange = worksheet.Names["_Fund1Projected"]; // this one works
for (int rowIndex = namedRange.Start.Row; rowIndex <= namedRange.End.Row; rowIndex++) // Exception on range.Start
// 'namedRange.Start' threw an exception of type 'System.ArgumentOutOfRangeException'
{
for (int columnIndex = namedRange.Start.Column; columnIndex <= namedRange.End.Column; columnIndex++)
{
worksheet.Cells[rowIndex, columnIndex].Value = (rowIndex * 100 + columnIndex).ToString();
}
}
xlPackage.Save();
}
}
我查看了 GitHub 上的代码,但没有什么特别之处。
在工作簿级别尝试使用范围以及相同的结果。
【问题讨论】: