2

xml sdk를 열어 본 경험이 없으며 워드 프로세서 문서에 대한 관계가 어땠는지 잘 모릅니다. 나는 기존의 문서에서 webtask-pane을 삭제하고 싶다.이 문서는 웹 타스크 창과 프로그래밍 방식으로 추가 된 문서를 포함하고있다.WordprocessingDocument 문서에서 WebExtensionPart를 삭제 한 후 손상되었습니다.

openprocess 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

다음은 모든 WebExtensionTaskpanes를 제거하고 Word 파일이 유효합니다. 위의 메서드 대신이 함수를 호출하십시오.

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

     if (webExTaskpanesPart1 != null) 
     { 
      bool result2 = package.DeletePart(webExTaskpanesPart1); 
     } 
    } 
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); 
      }     
     } 
} 

해피 코딩!