EPPlus,查找并设置命名范围的值

Big*_*Owl 5 c# excel epplus

我一直在尝试使用ExcelPackage(3.0.1)库设置命名区域的值(在这种情况下,单个命名单元格),它应该是一个简单的:

ExcelNamedRange er = xlPackage.Workbook.Names["Customer"];
er.Value = "Foo Bar";
Run Code Online (Sandbox Code Playgroud)

我显然做错了 - 有没有人有一个我可以遵循的例子

谢谢

dan*_*uio 10

我查找了ExcelPackage文档以查看Names []集合返回的类型,并发现documentatios即将推出,或者至少这是他们在2007年所说的内容.

我建议你使用EPPlus,它是一个excel库(仅限xlsx),对我来说很有用.

官方链接

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

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";                        
        }
    }
}
Run Code Online (Sandbox Code Playgroud)


Big*_*Owl 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); }
                }
Run Code Online (Sandbox Code Playgroud)