我正在尝试使用 OpenXML 在 Excel 中创建命名范围。我可以在 DefinedNames 集合中添加一个 DefinedName,但这似乎没有任何作用。我注意到在 ExtendedFileProperties 中保存范围名称的地方,一个名为“TitlesOfParts”的结构。我曾尝试在其中添加一个条目,但这会导致 excel 引发错误并且未创建命名范围。这是我正在使用的代码:
public void AddNamedRange(string pNamedRangeRef, string pNamedRangeName)
{
DefinedName _definedName = new DefinedName() { Name = pNamedRangeName, Text = pNamedRangeRef };
_workbook.Descendants<DocumentFormat.OpenXml.Spreadsheet.DefinedNames>().First().Append(_definedName);
DocumentFormat.OpenXml.VariantTypes.VTLPSTR _t = new DocumentFormat.OpenXml.VariantTypes.VTLPSTR() { Text = pNamedRangeName };
_spreadsheet.ExtendedFilePropertiesPart.Properties.TitlesOfParts.VTVector.Append(_t);
_spreadsheet.ExtendedFilePropertiesPart.Properties.TitlesOfParts.VTVector.Size++;
}