2015-05-27 73 views
8

我有一個Excel文件,我用EPPlus以編程方式填充。有沒有辦法使用EPPlus獲得'命名'單元格?

我曾嘗試以下:

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

下不工作 - 所以我知道我至少接近。

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

回答

11

其實,它有點誤導。命名範圍存儲在workBOOK級別,而不是workSHEET級別。所以,如果你做這樣的事情:

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

您在輸出得到這個(使用Excel與它的虛擬數據文件):

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

我覺得這不是誤導,因爲命名的區域是常見的到所有工作簿(它們必須對每個工作簿都是唯一的) –

+2

@DanieleArmanasco實際上在Excel 2013中,在_Create命名的Cell_對話框中,您可以選擇在WorkBook或WorkSheet級別選擇範圍的名稱。 –

相關問題