OpenXML을 사용하여 Excel에서 명명 된 범위를 만들려고합니다. DefinedName 컬렉션에 DefinedName을 추가 할 수는 있지만 아무 것도하지 않는 것 같습니다. RangeFileProperties에서 "TitlesOfParts"라는 구조체의 이름이 저장되는 곳을 발견했습니다. 거기에 항목을 추가하려고했지만 오류가 발생하여 이름이 지정된 범위가 만들어지지 않습니다.Excel의 명명 된 범위 OpenXML
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++;
}
"나는 DefinedNames 수집에 DefinedName을 추가 할 수 있어요,하지만 아무것도하지 않는 것"- 그것이 당신이 할 일은해야한다 - 어떤 식으로는 아무것도하지 않는 이유는 무엇입니까? 문서를 저장하고 Excel에서 열면 이름이 지정된 범위가 드롭 다운 목록에 나타 납니까? xlsx를 zip 파일로 열면 workbook.xml에서 이름이 지정된 범위를 찾을 수 있습니까? – Ben
나는 당신이 값들을 적절하게 한정하지 못할 것이라고 생각한다. pNamedRangeName은 "myrangename"과 같아야하고 pNamedRangeRef는 "Sheet1! $ A $ 1"처럼 보입니다. –