После удаления WebExtensionPart из документа WordprocessingDocument происходит повреждение

Я новичок в открытии XML SDK, и я не имею большого представления о том, как работают отношения для обработки текстовых документов. Я хочу удалить webtask-pane из моего существующего документа, который содержит webtask-pane и добавлен программно.

После удаления WebExtensionPart из WordprocessingDocument с помощью Open Office XML.

Результат: документ поврежден. Причина: часть отношений существует после удаления WebExtensionPart.

Код:

public static void RemoveTaskPaneExt(WordprocessingDocument package)
    {
        WebExTaskpanesPart webExTaskpanesPart1 = package.GetPartsOfType<WebExTaskpanesPart>().FirstOrDefault();

        if (webExTaskpanesPart1 != null)
        {
            WebExtensionPart aWebExtension =
                webExTaskpanesPart1.GetPartsOfType<WebExtensionPart>()
                    .Where(
                        x =>
                            x.WebExtension.WebExtensionStoreReference.Id ==
                            System.Configuration.ConfigurationManager.AppSettings["PaneID"])
                    .FirstOrDefault();
            if (aWebExtension != null)
            {
                bool result = package.WebExTaskpanesPart.DeletePart(aWebExtension);
            }                
        }
    }

Пожалуйста помоги. Заранее спасибо.

2 ответа

Я получил ответ, используя удаление всех дочерних элементов панели задач.

public static void RemoveTaskPaneExt(WordprocessingDocument package)
    {
        WebExTaskpanesPart webExTaskpanesPart1 = package.GetPartsOfType<WebExTaskpanesPart>().FirstOrDefault();

        if (webExTaskpanesPart1 != null)
        {
            WebExtensionPart aWebExtension =
                webExTaskpanesPart1.GetPartsOfType<WebExtensionPart>()
                    .Where(
                        x =>
                            x.WebExtension.WebExtensionStoreReference.Id ==
                            System.Configuration.ConfigurationManager.AppSettings["PaneID"])
                    .FirstOrDefault();
            if (aWebExtension != null)
            {
webExTaskpanesPart1.Taskpanes.RemoveAllChildren();
                bool result = package.WebExTaskpanesPart.DeletePart(aWebExtension);
            }                
        }
}

Удачного кодирования!

Следующее удалит все WebExtensionTaskpanes, и ваш файл Word будет действительным. Вызовите это вместо вашего метода выше.

private static void RemoveWebExtensionPart(WordprocessingDocument package)
    {
        WebExTaskpanesPart webExTaskpanesPart1 = package.GetPartsOfType<WebExTaskpanesPart>().FirstOrDefault();

        if (webExTaskpanesPart1 != null)
        {
            bool result2 = package.DeletePart(webExTaskpanesPart1);
        }
    }
Другие вопросы по тегам