【问题标题】:EPPlus, Find and set the value for a Named RangeEPPlus,查找并设置命名范围的值
【发布时间】:2012-07-04 15:54:42
【问题描述】:

我一直在努力尝试使用 ExcelPackage (3.0.1) 库设置命名范围(在本例中为单个命名单元格)的值,它应该很简单:

ExcelNamedRange er = xlPackage.Workbook.Names["Customer"];
er.Value = "Foo Bar";

我显然做错了 - 有人有我可以效仿的例子

谢谢

【问题讨论】:

    标签: c# excel epplus


    【解决方案1】:

    我查找 ExcelPackage 文档以查看 Names[] 集合返回的类型,发现文档很快就会出现,或者至少他们在 2007 年是这么说的。

    我建议您使用 EPPlus,它是一个对我非常有用的 excel 库(仅限 xlsx)。

    official link

    现在,为命名范围内的每个单元格设置一个值:

    ExcelWorksheet sheet = _openXmlPackage.Workbook.Worksheets["SheetName"];
    using (ExcelNamedRange namedRange = sheet.Names["RangeName"])
    {
        for (int rowIndex = Start.Row; rowIndex <= namedRange.End.Row; rowIndex++)
        {
            for (int columnIndex = namedRange.Start.Column; columnIndex <= namedRange.End.Column; columnIndex++)
            {
                sheet.Cells[rowIndex, columnIndex].Value = "no more hair pulling";                        
            }
        }
    }
    

    【讨论】:

    • 我的范围是一个单元格。上面的代码声称namedRange.Start.Row 是-1。
    • 它应该适用于单个单元格,但我不是 100% 确定。我看到你设法解决了你的问题,很高兴你做到了。如果有命名范围问题的人有兴趣尝试 EPPlus,我将在此处留下我的答案。问候。
    【解决方案2】:

    我不得不改用单元格值。

    using (ExcelPackage xlPackage = new ExcelPackage(newFile))
                {
                    foreach (ExcelWorksheet worksheet in xlPackage.Workbook.Worksheets)
                    {
    
                        var dimension = worksheet.Dimension;
                        if (dimension == null) { continue; }
                        var cells = from row in Enumerable.Range(dimension.Start.Row, dimension.End.Row)
                                    from column in Enumerable.Range(dimension.Start.Column, dimension.End.Column)
                                    //where worksheet.Cells[row, column].Value.ToString() != String.Empty
                                    select worksheet.Cells[row, column];
                        try
                        {
                            foreach (var excelCell in cells)
                            {
                                try
                                {
                                    if (excelCell.Value.ToString().Equals("[Customer]")) { excelCell.Value = "Customer Name"; }
    
                                }
                                catch (Exception) { }
                            }
    
                        }
                        catch (Exception a) { Console.WriteLine(a.Message); }
                    }
    

    【讨论】:

    • 这是设置您将搜索的范围吗?这样您就不会搜索空单元格?我需要这样的东西吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多