2012-05-23 27 views
6

मैं सर्वर साइड पर एक Word 2010 दस्तावेज़ से छेड़छाड़ कर रहा हूँ और सामग्री नियंत्रण के कुछ दस्तावेज में निम्नलिखित लॉकिंग गुणWord 2010 दस्तावेज़ में OpenXML SDK का उपयोग करके मैं सामग्री नियंत्रण को अनलॉक कैसे करूं?

जाँच कर ली है
  • सामग्री नियंत्रण हटाया नहीं जा सकता
  • सामग्री संपादित नहीं किया जा सकता है

क्या कोई भी इन लॉकिंग विकल्पों को गलत पर सेट करने या ओपनएक्सएमएल एसडीके का उपयोग करके पूरी तरह से निकालने की सलाह दे सकता है? करने के लिए

  • सामग्री नियंत्रण हटाया नहीं जा सकता और
  • सामग्री

तो संपादित नहीं किया जा सकता है,:

उत्तर

5

OpenXML SDK प्रोग्राम के रूप में विकल्प की स्थापना के लिए Lock वर्ग और LockingValues गणन प्रदान करता है उन दो विकल्पों को "झूठी" (LockingValues.Unlocked) पर सेट करें, दस्तावेज़ में सभी SdtElement तत्वों की खोज करें और सेट करें Val संपत्ति LockingValues.Unlocked पर संपत्ति।

नीचे कोड एक उदाहरण दिखाता है:

static void UnlockAllSdtContentElements() 
{ 
    using (WordprocessingDocument wordDoc = 
    WordprocessingDocument.Open(@"c:\temp\myword.docx", true)) 
    {   
    IEnumerable<SdtElement> elements = 
     wordDoc.MainDocumentPart.Document.Descendants<SdtElement>(); 

    foreach (SdtElement elem in elements) 
    { 
     if (elem.SdtProperties != null) 
     { 
     Lock l = elem.SdtProperties.ChildElements.First<Lock>(); 

     if (l == null) 
     {    
      continue; 
     } 

     if (l.Val == LockingValues.SdtContentLocked) 
     { 
      Console.Out.WriteLine("Unlock content element..."); 
      l.Val = LockingValues.Unlocked; 
     } 
     } 
    } 
    } 
} 

static void Main(string[] args) 
{ 
    UnlockAllSdtContentElements(); 
} 
1
बस जो इस कोड को कॉपी, यह ध्यान रखें कि अगर वहाँ सामग्री नियंत्रण से जुड़े कोई ताले, फिर वहाँ एक लॉक नहीं किया जाएगा के लिए

इससे जुड़ी संपत्ति, इसलिए जब कोड निम्न निर्देश निष्पादित करता है, तो यह कोई अपवाद लौटाएगा क्योंकि कोई तत्व नहीं मिला है:

लॉक एल = elem.SdtProperties.ChildElements.First();

इसे ठीक करने का तरीका पहले के बजाय FirstOrDefault है।

+0

प्रासंगिक समाधान –

+0

हाय @ ओरीप्रिस पर टिप्पणी के रूप में जोड़ा जाना चाहिए, मैं समाधान पर टिप्पणी नहीं कर सकता क्योंकि मेरी प्रतिष्ठा 50 से कम है। सम्मान। –