使用现有范围名称从电子表格中读取或检索值
Read or retrieve value from spreadsheet using existing rangenames
我有一个现有的 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
或 c# 中的任何其他 SDK 从定义的名称中检索或读取单元格值?
我想你正在搜索这个
using System.Xml;
XmlNodeList elemList = doc.GetElementsByTagName(@"XML node");
for (int i = 0; i < elemList.Count; i++)
{
//dosomthing with
elemList[i].Attributes["AttributeName"].Value;
}
问候
访问命名范围
如果您有一个或多个命名范围,您可以通过不同的方式访问它们:
指定范围内的特定 range/cell
// worksheet scope
var range = worksheet.Range("NameOfTheRange");
var cell = worksheet.Cell("NameOfTheRange");
// workbook scope
var range = workbook.Range("NameOfTheRange");
var cell = workbook.Cell("NameOfTheRange");
命名范围内指定的所有 ranges/cells(是的,一个命名范围可以指向许多 ranges/cells)
// 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 将在工作表中查找,如果找不到则在工作簿中查找。
例如,在创建具有工作簿范围的命名范围后,您可以从工作簿或工作表访问它(只要工作表上还没有)。
// 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。
我有一个现有的 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
或 c# 中的任何其他 SDK 从定义的名称中检索或读取单元格值?
我想你正在搜索这个
using System.Xml;
XmlNodeList elemList = doc.GetElementsByTagName(@"XML node");
for (int i = 0; i < elemList.Count; i++)
{
//dosomthing with
elemList[i].Attributes["AttributeName"].Value;
}
问候
访问命名范围
如果您有一个或多个命名范围,您可以通过不同的方式访问它们:
指定范围内的特定 range/cell
// worksheet scope
var range = worksheet.Range("NameOfTheRange");
var cell = worksheet.Cell("NameOfTheRange");
// workbook scope
var range = workbook.Range("NameOfTheRange");
var cell = workbook.Cell("NameOfTheRange");
命名范围内指定的所有 ranges/cells(是的,一个命名范围可以指向许多 ranges/cells)
// 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 将在工作表中查找,如果找不到则在工作簿中查找。
例如,在创建具有工作簿范围的命名范围后,您可以从工作簿或工作表访问它(只要工作表上还没有)。
// 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。