我是新手打开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);
}
}
}
请帮忙。 提前谢谢。
答案 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);
}
}