2011-09-02 8 views
6

में नामित रेंज मैं ओपनएक्सएमएल के साथ एक्सेल में नामित श्रेणियां बनाने की कोशिश कर रहा हूं। मैं DefinedNames संग्रह में एक DefinedName जोड़ने में सक्षम हूं, लेकिन ऐसा कुछ भी प्रतीत नहीं होता है। मैंने विस्तारितफाइलप्रॉपर्टीज में एक जगह देखी जहां श्रेणियों के नाम सहेजे जा रहे हैं, "टाइटलसफर्ट्स" नामक एक संरचना। मैंने वहां एक प्रविष्टि जोड़ने की कोशिश की है, लेकिन यह एक त्रुटि फेंकने के लिए एक्सेल का कारण बनता है और नामित रेंज नहीं बनाई गई है।एक्सेल ओपनएक्सएमएल

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++; 
    } 
+1

"मैं DefinedNames संग्रह में एक DefinedName जोड़ने के लिए कर रहा हूँ, लेकिन वह कुछ भी करने को नहीं लगता है" - कि तुम सब करने की है होना चाहिए - किस तरह से यह कुछ भी नहीं है? जब आप दस्तावेज़ को सहेजते हैं और इसे एक्सेल में खोलते हैं, तो क्या आपकी नामित श्रेणी ड्रॉपडाउन सूची में दिखाई देती है? यदि आप xlsx को ज़िप फ़ाइल के रूप में खोलते हैं, तो क्या आप अपना नामांकित श्रेणी workbook.xml में पा सकते हैं? – Ben

+2

मुझे यकीन है कि आप मूल्यों को सही तरीके से अर्हता प्राप्त करने में विफल रहे हैं। आपके pNamedRangeName को "myrangename" जैसे कुछ दिखना चाहिए और pNamedRangeRef को "शीट 1! $ ए $ 1" जैसा दिखना चाहिए। –

उत्तर

1

एक वैश्विक/कार्यपुस्तिका चौड़ा नामांकित श्रेणी को परिभाषित करने के Open XML SDK 2.0 Productivity Tool for Microsoft Office का उपयोग करना, बहुत आसान है:: यहाँ कोड मैं का उपयोग कर रहा है

DefinedNames definedNamesCol = new DefinedNames(); //Create the collection 
DefinedName definedName = new DefinedName() 
    { Name = "test", Text="Sheet1!$B$2:$B$4" };  // Create a new range 
definedNamesCol.Append(definedName);     // Add it to the collection 

workbook.Append(definedNamesCol);      // Add collection to the workbook 
0

नीचे कोड मेरे लिए चाल किया था। इसके बाद मैं एक्सेल में नाम श्रेणी भी देख पा रहा था।

var wbPart = document.WorkbookPart; 
Workbook workbook = wbPart.Workbook; 
DefinedName definedName1 = new DefinedName { Name = "ColumnRange",Text = "Sheet1!$A$1:$I$1"}; 
DefinedName definedName2 = new DefinedName { Name = "RowRange", Text = "Sheet1!$A$1:$A$15"}; 
if (workbook.DefinedNames == null) 
      { 
       DefinedNames definedNames1 = new DefinedNames(); 
       definedNames1.Append(definedName1); 
       definedNames1.Append(definedName2); 
       workbook.DefinedNames = definedNames1; 
      } 
संबंधित मुद्दे