12

I have an Excel file that I am populating programmatically with EPPlus.

I have tried the following:

// provides access to named ranges, does not appear to work with single cells
worksheet.Names["namedCell1"].Value = "abc123";

// provides access to cells by address
worksheet.Cells["namedCell1"].Value = "abc123";

The following does work - so I know I am at least close.

worksheet.Cells["A1"].Value = "abc123";
Thomas Weller
  • 55,411
  • 20
  • 125
  • 222
gnobes
  • 133
  • 1
  • 9

1 Answers1

15

Actually, its a bit misleading. The Named Ranges are stored at the workBOOK level and not the workSHEET level. So if you do something like this:

[TestMethod]
public void Get_Named_Range_Test()
{
    //http://stackoverflow.com/questions/30494913/is-there-a-way-to-get-named-cells-using-epplus

    var existingFile = new FileInfo(@"c:\temp\NamedRange.xlsx");
    using (var pck = new ExcelPackage(existingFile))
    {
        var wb = pck.Workbook; //Not workSHEET
        var namedCell1 = wb.Names["namedCell1"];

        Console.WriteLine("{{\"before\": {0}}}", namedCell1.Value);
        namedCell1.Value = "abc123";
        Console.WriteLine("{{\"after\": {0}}}", namedCell1.Value);
    }
}

You get this in the output (using an excel file with dummy data in it):

{"before": Range1 B2}
{"after": abc123}
Thomas Weller
  • 55,411
  • 20
  • 125
  • 222
Ernie S
  • 13,902
  • 4
  • 52
  • 79
  • I think this is not misleading because named ranges are common to all workbook (they must be unique per workbook) – Daniele Armanasco Jun 16 '16 at 14:24
  • 3
    @DanieleArmanasco actually in Excel 2013, in the _Create Named Cell_ dialog box you have the option to choose to scope the name either at WorkBook or at WorkSheet level. – RaffaeleT Sep 16 '16 at 14:20