私は、サーバー側でのWord 2010文書を操作していますし、文書内のコンテンツコントロールのいくつかは、以下のロックのプロパティはWord 2010文書のOpenXML SDKを使用してコンテンツコントロールをロック解除するにはどうすればよいですか?
- コンテンツコントロールが
- 内容が
OpenXML SDKを使用して、これらのロックオプションをfalseに設定するか、または完全に削除するようアドバイスできますか?
私は、サーバー側でのWord 2010文書を操作していますし、文書内のコンテンツコントロールのいくつかは、以下のロックのプロパティはWord 2010文書のOpenXML SDKを使用してコンテンツコントロールをロック解除するにはどうすればよいですか?
OpenXML SDKを使用して、これらのロックオプションをfalseに設定するか、または完全に削除するようアドバイスできますか?
のOpenXML SDKはLock
クラスと、プログラムのオプションを設定するためのLockingValues
列挙 提供:
を編集することはできませんこれらの2つのオプションを "false"(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();
}
ただ、このコードをコピーしたもののために、コンテンツコントロールに関連付けられたロックが存在しない場合は、[ロックがないことに注意してくださいプロパティが関連付けられているため、コードで次の命令を実行すると、要素が見つからないため例外が返されます。
ロックl = elem.SdtProperties.ChildElements.First();
これを修正する方法は、Firstの代わりにFirstOrDefaultを実行することです。
関連ソリューションへのコメントとして追加する必要があります –
こんにちは@OriPrice、私の評判が50未満ですので、私は解決策にコメントすることはできません。 –