문제

Word 2007 이상의 DOCX 파일을 내 웹 서버에 업로드하고 목차를 간단한 XML 구조로 변환하고 싶습니다. 전통적인 VBA를 사용하여 데스크탑에서 이것을하는 것은 쉬운 것 같습니다. DOCX 파일을 생성하는 데 사용되는 WordProcessingMl XML 데이터를 보면 혼란 스럽습니다. 객체 지향적 인 방식으로 문서를 탐색 할 수있는 방법이 있습니까?

도움이 되었습니까?

해결책

나는 그것을 조사하는 것이 좋습니다 XML SDK 2.0을 엽니 다. CTP이지만 COM을 전혀 처리하지 않고도 XMLX 파일을 조작하는 데 매우 유용하다는 것을 알았습니다. 문서는 약간 스케치이지만 찾아야 할 핵심 사항은 DocumentFormat.openxml.packaging.wordProcessingDocument 클래스입니다. 확장자 이름을 .zip로 바꾸고 XML 파일을 파는 경우 .docx 문서를 선택할 수 있습니다. 이렇게하면 내용 테이블이 "구조화 된 문서"태그에 포함되어 있으며 제목과 같은 것은 하이퍼 링크에 있습니다. 그것에 대해 조금씩 퍼팅하면서, 나는 이와 같은 것이 효과가 있어야한다는 것을 알았습니다 (또는 적어도 당신에게 출발점을 제공합니다).

WordprocessingDocument wordDoc = WordprocessingDocument.Open(Filename, false);
SdtBlock contents = wordDoc.MainDocumentPart.Document.Descendants<SdtBlock>().First();
List<string> contentList = new List<string>();
foreach (Hyperlink section in contents.Descendants<Hyperlink>())
{
    contentList.Add(section.Descendants<Text>().First().Text);
}

다른 팁

다음은 LINQ에서 XML을 사용하여 열린 XML WordProcessingML 문서 쿼리에 대한 블로그 게시물입니다. 해당 코드를 사용하면 다음과 같이 쿼리를 쓸 수 있습니다.

using (WordprocessingDocument doc =
    WordprocessingDocument.Open(filename, false))
{
    foreach (var p in doc.MainDocumentPart.Paragraphs())
    {
        Console.WriteLine("Style: {0}   Text: >{1}<",
            p.StyleName.PadRight(16), p.Text);
        foreach (var c in p.Comments())
            Console.WriteLine(
              "  Comment Author:{0}  Text:>{1}<",
              c.Author, c.Text);
    }
}

블로그 게시물: XML SDK 및 LINQ를 XML로 엽니 다

-에릭

보다 XML 문서 및 데이터 출발점으로. 특히 LINQ에서 XML을 사용하려고합니다.

일반적으로 .NET 애플리케이션에서 COM을 사용하고 싶지 않습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top