2009-08-18 14 views
5

Chciałbym przesłać plik docx programu Word 2007 lub lepszy na mój serwer sieciowy i przekonwertować spis treści na prostą strukturę xml. Robiąc to na pulpicie z tradycyjnym VBA wydaje się, że byłoby to łatwe. Przeglądanie danych XML WordProcessingML używanych do utworzenia pliku docx jest mylące. Czy istnieje sposób (bez COM) do poruszania się po dokumencie w bardziej zorientowany obiektowo sposób?Jak mogę wykonać zapytanie do pliku docx programu Word w aplikacji ASP.NET?

Odpowiedz

4

Bardzo polecam zajrzeć do Open XML SDK 2.0. To CTP, ale okazało się, że jest to niezwykle użyteczne w manipulowaniu plikami xmlx bez konieczności radzenia sobie z COM. Dokumentacja jest nieco pobieżna, ale kluczową rzeczą, której należy szukać, jest klasa DocumentFormat.OpenXml.Packaging.WordprocessingDocument. Możesz wybrać dokument .docx, jeśli zmienisz nazwę rozszerzenia na .zip i przekopiesz tam pliki XML. Robiąc to, wygląda na to, że Spis treści znajduje się w tagu "Dokument strukturalny", a rzeczy takie jak nagłówki znajdują się w hiperłączu. Zamieszanie z tym trochę, stwierdziłem, że coś takiego powinno działać (lub przynajmniej dać punkt wyjścia).

0

Jako punkt wyjścia patrz XML Documents and Data. W szczególności będziesz chciał użyć LINQ do XML.

Ogólnie rzecz biorąc, nie chcesz używać modelu COM w aplikacji .NET.

3

Oto blog na temat wysyłania zapytań do Open XML WordProcessingML przy użyciu LINQ do XML. Używając tego kodu można napisać kwerendę w następujący sposób:

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); 
    } 
} 

post na blogu: Open XML SDK and LINQ to XML

-Eric

+1

czytam twoje posty na temat Open XML - wielkiego dzieła! –

Powiązane problemy