2015-05-27 14 views
8

Mam plik programu Excel, który zapełnia programowo programem EPPlus.Czy istnieje sposób na uzyskanie "nazwanych" komórek za pomocą EPPlus?

Próbowałem następujące:

// 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"; 

Poniższy działa - tak wiem, że jestem co najmniej blisko.

worksheet.Cells["A1"].Value = "abc123"; 

Odpowiedz

11

Właściwie to trochę mylące. Nazwane zakresy są przechowywane na poziomie workBOOK, a nie na poziomie workSHEET. Więc jeśli można zrobić coś takiego:

[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); 
    } 
} 

masz to na wyjściu (przy użyciu pliku Excel z fikcyjnych danych w nim):

{"before": Range1 B2} 
{"after": abc123} 
+0

myślę, że to nie jest mylące, ponieważ nazwane zakresy są wspólne do wszystkich skoroszytów (muszą być one unikalne na skoroszycie) –

+2

@ DanieleArmanasco faktycznie w programie Excel 2013, w oknie dialogowym Tworzenie nazwanej komórki_ można wybrać zakres zakresu nazwy w WorkBook lub na poziomie WorkSheet. –

Powiązane problemy