L'SDK OpenXML fornisce la classe Lock
e la LockingValues
enumerazione per l'impostazione a livello di codice le opzioni:
- Controllo dei contenuti non può essere cancellato e
- contenuti non possono essere modificati
Così, per imposta queste due opzioni su "false" (LockingValues.Unlocked
), cerca tutti gli elementi SdtElement
nel documento e imposta il Val
proprietà a LockingValues.Unlocked
.
Il codice seguente mostra un esempio:
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();
}
Dovrebbe essere aggiunto come commento alla soluzione pertinente –
Ciao @OriPrice, non posso commentare la soluzione poiché la mia reputazione è inferiore a 50. Saluti. –