2012-03-12 3 views
0

openxml sdk에 관한 아주 기본적인 질문이 있습니다. 나는 pptx 문서를 처리하고 싶다.Openxml 2.0 xml 처리

slideMaster1.xml의 C# 코드에서 노드의 유형이 p : cNvPr 인 모든 XMLNode의 목록을 가져 오려고합니다. 그 값을 문자열 목록에 저장하려고하기 때문입니다.

어떻게 할 수 있습니까?

답변

0

졸탄, 'p : cNvPr'노드는 비 시각적 캔버스 속성을 지정하는 비 시각적 그리기 속성입니다. 자세한 내용은 MSDN documentation을 참조하십시오.

파워 포인트를 열고 sdk를 사용하여 마스터의 모든 레이아웃에 대한 비 시각적 드로잉 속성에 대한 이름 속성을 표시하는 작은 창 폼 앱을 작성했습니다. 아래 스크린 샷과 link for zip of the Solution을 참조하십시오.

enter image description here

코드는 기본적으로는 다음을 수행합니다

foreach (var slideMasterPart in PresentationPart.SlideMasterParts) 
{ 
    foreach (var layouts in slideMasterPart.SlideLayoutParts) 
    { 
    get each of the layouts.SlideLayout.CommonSlideData.ShapeTree.Descendants<NonVisualDrawingProperties>(); 
       and put the name attribute to the grid. 
    } 
} 
0

확실하지 않지만 LinqToXml이 openxml없이 처리 할 수 ​​있다고 생각합니다.

string[] values = XElement.Load("slideMaster1.xml") 
         .Descendants("p:cNvPr") 
         .Select(x => (string)x) 
         .ToArray(); 

내가이 네임 스페이스를 처리 할 수 ​​있습니다 방법을 잘 모르겠어요으로 p:에 기침 할 수있다. XML 샘플을 제공하면 테스트 할 수 있습니다.

+0

내가 압축을 해제하지 않을 PPTX 자신 때문에 OPENXML 않는 저 (내가 그것을 나에게 바보 같은 소리로 들리 겠지만, 알고) 및 그게 내가 SDK를 사용하여 그것을 선호하는 이유입니다 –