2015-05-27 9 views
8

Ich habe eine Excel-Datei, die ich programmatisch mit EPPlus bevölkert.Gibt es eine Möglichkeit, mit EPPlus "benannte" Zellen zu erhalten?

Ich habe versucht, die folgenden:

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

Die folgende funktioniert - so dass ich weiß, ich bin zumindest nahe.

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

Antwort

11

Eigentlich ist es ein bisschen irreführend. Die benannten Bereiche werden auf der Ebene workBOOK und nicht auf der Ebene workSHEET gespeichert. Also, wenn Sie etwas tun, wie folgt aus:

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

Sie erhalten diese in der Ausgabe (unter Verwendung von Excel mit Dummy-Daten in es-Datei):

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

Ich denke, dies ist nicht irreführend ist, weil benannte Bereiche gemeinsam sind für alle Arbeitsmappen (sie müssen pro Arbeitsmappe eindeutig sein) –

+2

@DanieleArmanasco tatsächlich in Excel 2013, in dem Dialogfeld _Create Named Cell_ haben Sie die Option, um den Namen entweder auf WorkBook- oder auf Worksheet-Ebene festzulegen. –

Verwandte Themen