После удаления 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);
}
}