本文介绍了如何在Word 2010文档中使用OpenXML SDK解锁内容控件?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在服务器端处理Word 2010文档,并且该文档中的某些内容控件已选中以下锁定"属性

I am manipulating a Word 2010 document on the server-side and some of the content controls in the document have the following Locking properties checked

  • 内容控件无法删除
  • 内容无法编辑

任何人都可以建议使用OpenXML SDK将这些Locking选项设置为false或将其全部删除吗?

Can anyone advise set these Locking options to false or remove then altogether using the OpenXML SDK?

推荐答案

openxml SDK提供了Lock类和LockingValues枚举以编程方式设置选项:

The openxml SDK provides the Lock class and the LockingValues enumerationfor programmatically setting the options:

  • 内容控件无法删除,并且
  • 内容无法编辑

因此,要将这两个选项设置为"false"(LockingValues.Unlocked),搜索文档中的所有SdtElement元素,并将Val属性设置为LockingValues.Unlocked.

So, to set those two options to "false" (LockingValues.Unlocked),search for all SdtElement elements in the document and set the Val property toLockingValues.Unlocked.

下面的代码显示了一个示例:

The code below shows an example:

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();
}

这篇关于如何在Word 2010文档中使用OpenXML SDK解锁内容控件?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-31 09:10