有没有办法使用EPPlus获得'命名'单元格?

gno*_*bes 10 epplus epplus-4

我有一个Excel文件,我用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";
Run Code Online (Sandbox Code Playgroud)

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

worksheet.Cells["A1"].Value = "abc123";
Run Code Online (Sandbox Code Playgroud)

Ern*_*e S 12

实际上,它有点误导.命名范围存储在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);
    }
}
Run Code Online (Sandbox Code Playgroud)

你在输出中得到这个(使用带有虚拟数据的excel文件):

{"before": Range1 B2}
{"after": abc123}
Run Code Online (Sandbox Code Playgroud)

  • @DanieleArmanasco实际上在Excel 2013中,在_Create Named Cell_对话框中,您可以选择在WorkBook或WorkSheet级别选择范围. (3认同)