【问题标题】:EPPlus - Named Range is not populatedEPPlus - 未填充命名范围
【发布时间】:2014-02-19 05:36:41
【问题描述】:

我正在使用 EPPLus 打开 Excel 电子表格并尝试从命名范围读取。命名范围为空。

是我用错了,还是 EPPlus 有问题

代码

        var package = new ExcelPackage();

        using (var stream = File.OpenRead(tmpExcel))
        {
            package.Load(stream);
        }

        var worksheet = package.Workbook.Worksheets["Common-Lookup"];

        using (ExcelNamedRange namedRange = worksheet.Names["LupVerticalSettings"])
        {
            for (var row = namedRange.Start.Row; row <= namedRange.End.Row; row++)
            {
                for (var col = namedRange.Start.Column; col <= namedRange.End.Column; col++)
                {
                    _.Nv(worksheet.Cells[row, col].Address, worksheet.Cells[row, col].Text);
                    //worksheet.Cells[rowIndex, columnIndex].Value = "no more hair pulling";
                }
            }
        }

Excel 看起来像这样

空的命名范围

【问题讨论】:

    标签: c# excel epplus


    【解决方案1】:

    我解决了我的问题,我会在这里为将来可能需要它的任何人提供答案

        var package = new ExcelPackage();
    
        using (var stream = File.OpenRead(tmpExcel))
        {
            package.Load(stream);
        }
    
        var worksheet = package.Workbook.Worksheets["Common-Lookup"];
    
        // Access Named Ranges from the ExcelWorkbook instead of ExcelWorksheet
        //using (ExcelNamedRange namedRange = worksheet.Names["LupVerticalSettings"])
    
        // use package.Workbook.Names instead of worksheet.Names
        using (ExcelNamedRange namedRange = package.Workbook.Names["LupVerticalSettings"])
        {
            for (var row = namedRange.Start.Row; row <= namedRange.End.Row; row++)
            {
                for (var col = namedRange.Start.Column; col <= namedRange.End.Column; col++)
                {
                    _.Nv(worksheet.Cells[row, col].Address, worksheet.Cells[row, col].Text);
                    //worksheet.Cells[rowIndex, columnIndex].Value = "no more hair pulling";
                }
            }
        }
    

    【讨论】:

    • 谢谢。我见过的所有其他示例都在谈论使用 Worksheet.Names[] 代码... Workbook.Names[] 更改就是这样。
    • 谢谢!即使在创建新范围时也会发生这种情况 - 如果将其添加到 worksheet.Names 并在 Excel 中查看它,范围将只是该工作表。为了能够使用另一个工作表中的命名范围,它的范围需要是 Workbook,并且在 EPP 中,它是通过执行您的建议来实现的 - 将其添加到 workbook.names
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-13
    相关资源
    最近更新 更多