使用现有的范围名称从电子表格读取或检索值

我有一个现有的Excel文件,它已经定义了单元格名称或单元格区域名称。

我能够使用Openxml sdk获取所有单元格区域名称。 我的示例代码如下:

  var path = @"D:\test.xlsx"; using (var document = SpreadsheetDocument.Open(path, true)) { var workbookPart = document.WorkbookPart; var wb = workbookPart.Workbook; var definedNames = wb.DefinedNames; if (definedNames != null) { System.Console.WriteLine("Name\tText\tName.Value"); foreach (DefinedName dn in definedNames) { System.Console.WriteLine(dn.Name + "\t" + dn.Text + "\t" + dn.Name.Value); } } } 

有没有什么办法来检索或使用这个OpenXml或任何其他SDK在C#中定义的名称读取单元格的值?

访问命名范围

如果您有一个或多个命名范围,则可以通过不同的方式访问它们:

指定范围内的特定范围/单元格

 // worksheet scope var range = worksheet.Range("NameOfTheRange"); var cell = worksheet.Cell("NameOfTheRange"); // workbook scope var range = workbook.Range("NameOfTheRange"); var cell = workbook.Cell("NameOfTheRange"); 

在指定范围内指定的所有范围/单元格(是指定范围可指向多个范围/单元格)

 // worksheet scope var ranges = worksheet.Ranges("NameOfTheRange"); var cells = worksheet.Cells("NameOfTheRange"); // workbook scope var ranges = workbook.Ranges("NameOfTheRange"); var cells = workbook.Cells("NameOfTheRange"); 

工作簿中的工作表范围
访问命名区域的一个便利方法是从工作簿访问工作表的范围。
例如:

 var range = workbook.Range("Sheet1!Result"); var cell = workbook.Cell("Sheet1!Result"); 

范围:
如果您要求在工作表中命名的范围,那么ClosedXML将在工作表上查看,然后在工作簿找不到它。

例如,在创build具有工作簿作用域的命名范围之后,可以从工作簿或工作表访问它(只要工作表中没有一个已经存在)。

 // Create a range with workbook scope (the default) worksheet.RangeUsed().AddToNamed("Result"); // Access it from the workbook: var range = workbook.Range("Result"); // Access it from the worksheet: // What happens here is that it will try to get the named range // on the worksheet, when it fails it then gets the named range // on the workbook var range = worksheet.Range("Result"); 

找不到?
如果命名范围不存在,则返回null。

参考: 访问命名范围

我想你正在寻找这个

 using System.Xml; XmlNodeList elemList = doc.GetElementsByTagName(@"XML node"); for (int i = 0; i < elemList.Count; i++) { //dosomthing with elemList[i].Attributes["AttributeName"].Value; } 

问候