【问题标题】:Is there a way to get 'named' cells using EPPlus?有没有办法使用 EPPlus 获取“命名”单元格?
【发布时间】:2015-05-27 23:39:32
【问题描述】:

我有一个 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";

以下确实有效 - 所以我知道我至少很接近。

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

【问题讨论】:

    标签: epplus epplus-4


    【解决方案1】:

    实际上,它有点误导。命名范围存储在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}
    

    【讨论】:

    • 我认为这不会产生误导,因为命名范围对所有工作簿都是通用的(每个工作簿它们必须是唯一的)
    • @DanieleArmanasco 实际上在 Excel 2013 中,在 Create Named Cell 对话框中,您可以选择在 WorkBook 或 WorkSheet 级别设置名称范围。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多