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
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).
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.
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. Wywoływanie programu Word dla konwersji rtf do docx
- 2. Programowo konwertuj Word (docx) na PDF
- 3. Jak dodawać hiperłącza do dokumentu docx programu Word przy użyciu otwartego kodu XML?
- 4. Konwersja dokumentu docx do programu Excel za pomocą OpenXML
- 5. Jak utworzyć dokument programu Word w WinRT
- 6. Jak mogę użyć predefiniowanych formatów w DOCX z POI?
- 7. Jak odczytać grupę kształtów jako obraz z dokumentu programu Word (.doc lub .docx) za pomocą apachePOI?
- 8. Dodaj obraz do Word Docx przy użyciu biblioteki NPOI C#
- 9. Jak wykonać zapytanie INSERT IGNORE za pomocą aplikacji Slick?
- 10. Zastąp tekst w dokumencie programu Word przy użyciu otwartego pliku Xml
- 11. Jak wykonać Cypher w pliku?
- 12. Jak mogę usunąć łamanie się stron z programu Microsoft Word?
- 13. Jak mogę wykonać zapytanie za pomocą klucza obcego w MySQL?
- 14. Ładowanie/zapisywanie dokumentów programu Word z aplikacji sieci Web (asp.net MVC)
- 15. Konwersja dokumentu programu Word do XSL-FO
- 16. Jak skompresować folder WordProcessingML do czytelnego dokumentu docx
- 17. Jak wstawić tabelę do dokumentu programu Word zamiast znacznika tekstowego?
- 18. Wykonywanie programu Word Mail Merge
- 19. Jak wykonać zapytanie indeksów w ElasticSearch?
- 20. Jak wykonać moje zapytanie SQL w CodeIgniter
- 21. django: jak mogę wykonać zapytanie na podstawie pól GenericForeignKey?
- 22. Jak wykonać zapytanie doktrynowe w klasie DataFixture?
- 23. Jak wykonać zapytanie do kolumny CLOB w Oracle
- 24. Jak wykonać negatywne zapytanie łączące w ES
- 25. Jak mogę zwrócić błąd 404 z programu obsługi asp.net?
- 26. Pywin32 zapisz .docx jako pdf
- 27. Nie można pobrać pliku docx za pomocą C#
- 28. Jak wykonać surowe zapytanie sql w strukturze encji?
- 29. Makro programu Word, przechowujące bieżący wybór (VBA)
- 30. Jak mogę wykonać polecenie z wiersza poleceń z programu C++?
czytam twoje posty na temat Open XML - wielkiego dzieła! –