내 웹 서버에 Word 2007 이상의 docx 파일을 업로드하고 목차를 간단한 xml 구조로 변환하고 싶습니다. 전통적인 VBA로 데스크톱에서이 작업을 수행하는 것이 쉬운 것처럼 보입니다. WordprocessingML을 보면 docx 파일을 만드는 데 사용 된 XML 데이터가 혼란 스럽습니다. 객체 지향적 인 방식으로 문서를 탐색하는 방법 (COM이없는)이 있습니까?ASP.NET 응용 프로그램에서 Word docx를 어떻게 쿼리 할 수 있습니까?
5
A
답변
4
Open XML SDK 2.0을 살펴볼 것을 적극 권장합니다. 그것은 CTP지만 COM을 전혀 다루지 않고도 xmlx 파일을 조작하는 데 매우 유용하다는 것을 알았습니다. 문서는 약간 개략적이지만, 중요한 것은 DocumentFormat.OpenXml.Packaging.WordprocessingDocument 클래스입니다. 확장명을 .zip으로 바꾸고 거기에서 XML 파일을 파 놓으면 .docx 문서를 골라 낼 수 있습니다. 그렇게함으로써, 목차가 "Structured Document"태그에 포함되어 있고 표제와 같은 것이 하이퍼 링크에있는 것처럼 보입니다. 조금만 둘러 보면, 나는 이것과 같은 것이 작동해야한다는 것을 발견했다. (또는 최소한 시작점을 준다.)
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);
}
0
시작 지점으로 XML Documents and Data을 참조하십시오. 특히 LINQ to XML을 사용하고자 할 것입니다.
일반적으로 .NET 응용 프로그램에서 COM을 사용하지 않으려합니다.
3
다음은 LINQ to XML을 사용하여 Open 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);
}
}
블로그 게시물 : Open XML SDK and LINQ to XML
-Eric
관련 문제
- 1. ASP.NET 응용 프로그램에서 XBAP를 사용할 수 있습니까?
- 2. ASP.NET 응용 프로그램에서 원격 데이터 저장소 쿼리
- 3. ASP.NET MVC 응용 프로그램에서 "진짜"HttpContext를 어떻게 얻을 수 있습니까?
- 4. asp.net mvc3에서 페이징을 어떻게 할 수 있습니까?
- 5. ASP.NET MVC 응용 프로그램에서 Authorize 특성을 어떻게 사용할 수 있습니까?
- 6. ASP.NET 응용 프로그램에서 워드 문서 열기
- 7. asp.net 웹 응용 프로그램에서 GPS 시스템을 통합 할 수 있습니까?
- 8. 모바일 응용 프로그램에서 수화를 어떻게 인식 할 수 있습니까?
- 9. 어떻게 안드로이드 응용 프로그램에서 페이팔을 통합 할 수 있습니까?
- 10. iPhone 응용 프로그램에서 어떻게 이러한 리소스를 해제 할 수 있습니까?
- 11. 어떻게 .net 응용 프로그램에서 파티션을 포맷 할 수 있습니까?
- 12. System.Data.SQLite.DLL을 사용하는 응용 프로그램에서 어떻게 업데이트 할 수 있습니까?
- 13. 실행중인 .NET 응용 프로그램에서 속성을 어떻게 조작 할 수 있습니까?
- 14. 어떻게 코어 수를 쿼리 할 수 있습니까?
- 15. 컴파일 된 iPhone 응용 프로그램에서 리소스를 추출 할 수 있습니까? 그렇다면 어떻게 확보 할 수 있습니까?
- 16. 지리 데이터를 어떻게 안드로이드 데이터베이스에 저장하고 쿼리 할 수 있습니까?
- 17. 날카로운 응용 프로그램에서 Word 문서 열기
- 18. 서버에서 즉시 doc/docx를 rtf/pdf로 변환 할 수 있습니까?
- 19. 웹 응용 프로그램에서 Word 문서 내보내기
- 20. linq 쿼리 실행 시간은 어떻게 측정 할 수 있습니까?
- 21. asp.net mvc에서 어떻게 구성 할 수 있습니까?
- 22. ASP.NET v3.5 응용 프로그램에서 Silverlight로 어떻게 그래프합니까?
- 23. 어떻게 perfmon (windows server 2008) 원시 데이터를 ASP.NET 웹 응용 프로그램에서 수집 할 수 있습니까?
- 24. BackgroundWorker ASP.Net 응용 프로그램에서
- 25. ASP.NET 응용 프로그램에서 TimeZone.CurrentTimeZone
- 26. 응용 프로그램에서 IIS 압축을 해제 할 수 있습니까?
- 27. ASP.NET 웹 응용 프로그램에서 웹 서버 로그에 액세스 할 수 있습니까?
- 28. 어떻게 asp.net mvc 라우팅이 할 수 있습니까?
- 29. ASP.NET 웹 응용 프로그램에서 .NET 어셈블리를 호출 할 때 메모리가 어떻게 사용되고 대역폭과 어떻게 관련되어 있습니까?
- 30. ASP.NET 응용 프로그램에서 코드 숨기기
내가 오픈 XML에 대한 글 읽기 - 위대한 일을! –