2

我是打开 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);
            }                
        }
    }

请帮忙。提前致谢。

4

2 回答 2

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

快乐编码!

于 2017-02-10T06:46:17.617 回答
0

以下将删除所有 WebExtensionTaskpanes 并且您的 Word 文件将有效。调用它而不是上面的方法。

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

        if (webExTaskpanesPart1 != null)
        {
            bool result2 = package.DeletePart(webExTaskpanesPart1);
        }
    }
于 2017-01-23T22:29:40.443 回答