从WordprocessingDocument文档中删除WebExtensionPart后损坏

时间:2017-01-04 09:15:52

标签: c# openxml-sdk office-addins office-2016 office-web-components

我是新手打开xml sdk,我对关系如何处理文字处理文档并不太了解。我想从包含webtask-pane的现有文档中删除webtask-pane,并通过编程方式添加它。

使用open office xml从WordprocessingDocument删除WebExtensionPart。

结果:文档损坏。 原因:删除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 个答案:

答案 0 :(得分: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);
            }                
        }
}

快乐的编码!

答案 1 :(得分:0)

以下将删除所有WebExtensionTaskpanes,您的Word文件将有效。请调用此代替上述方法。

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

        if (webExTaskpanesPart1 != null)
        {
            bool result2 = package.DeletePart(webExTaskpanesPart1);
        }
    }