我试图用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++;
}
Run Code Online (Sandbox Code Playgroud)