2015-05-27 10 views
8

Ho un file Excel che sto popolando programmaticamente con EPPlus.C'è un modo per ottenere celle "nominate" usando EPPlus?

Ho provato quanto segue:

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

Il seguente funziona - quindi so io sono almeno vicino.

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

risposta

11

In realtà, è un po 'fuorviante. Gli intervalli nominati sono memorizzati al livello workBOOK e non al livello workSHEET. Quindi, se si fa qualcosa di simile:

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

Si ottiene questo in uscita (utilizzando un file Excel con dati fittizi in esso):

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

credo che questo non è fuorviante perché intervalli denominati sono comuni a tutte le cartelle di lavoro (devono essere univoci per cartella di lavoro) –

+2

@DanieleArmanasco in realtà in Excel 2013, nella finestra di dialogo _Create Named Cell_ si ha la possibilità di scegliere di esplorare il nome a livello di WorkBook o di WorkSheet. –

Problemi correlati