none
Zugriff auf headings im Dokument RRS feed

  • Frage

  • Hallo,

    in VSTO würde ich gerne alle Überschriften innerhalb eines Word 2003 Dokumentes auslesen.
    Bisher gelang mir dies nur über einen Umweg :
    Über das Style object, Zeile für Zeile :
    for (int i = 1; i < this.Sections[1].Range.Paragraphs.Count+1 ; i++)
                {
                    Word.Style style = (Word.Style)this.Sections[1].Range.Paragraphs[i].get_Style();
    
                    if (style.NameLocal == "Überschrift 1")
                        MessageBox.Show(this.Sections[i].Range.Paragraphs[i].Range.Text.ToString());
    
     }

    1. Frage :"Geht das auch einfacher ? "
    2. Frage :"Wie funktioniert dies in verschiedenen Sprach-Versionen ? " (wegen "Überschrift 1")
    Dienstag, 10. November 2009 12:10

Antworten

  • Hallo oba_knecht,

    grundsätzlich musst du die Paragraphs schon durchlaufen, allerdings geht es schneller mit foreach, siehe auch hier http://social.msdn.microsoft.com/Forums/de-DE/visualbasicde/thread/4167b1d9-f8d0-48df-a003-91318aacb031.

    Das mit den Sprach-Versionen habe ich leider auch noch nicht herausgefunden. Schaut man sich das XML innerhalb eines docx als zip an (Word 2007 bzw Open XML-Dateiformat, die Datei heißt styles.xml), sind die Formate in englischer Sprache hinterlegt und sie gehören zu "latentStyles". Schaut man weiter unten im XML nach, sieht man, dass "berschrift1" - ohne "Ü" und ohne Leerzeichen - "heading 1" zugeordnet wird.
    Die Eigenschaft heißt "name", in VSTO gibt es aber nur "NameLocal". Ich bin an der Stelle auch noch nicht weitergekommen, außer man würde zuvor das XML auseinandernehmen. Das halte ich aber für nicht sehr elegant.
    Die Frage ist auch, was du mit dem Auslesen der Formatierungen erreichen möchtest? Denn diese werden ja mit dem Dokument oder der Vorlage gespeichert und können vom Anwender ja geändert werden. Um auf eine einheitliche Formatierung zu überprüfen bzw. eine solche zu erreichen, ist das wohl eh kein sicherer Weg...

    Ich hoffe, ich konnte dir ein wenig weiterhelfen.

    Viele Grüße
    Jan
    Mittwoch, 11. November 2009 14:49

Alle Antworten

  • Hallo oba_knecht,

    grundsätzlich musst du die Paragraphs schon durchlaufen, allerdings geht es schneller mit foreach, siehe auch hier http://social.msdn.microsoft.com/Forums/de-DE/visualbasicde/thread/4167b1d9-f8d0-48df-a003-91318aacb031.

    Das mit den Sprach-Versionen habe ich leider auch noch nicht herausgefunden. Schaut man sich das XML innerhalb eines docx als zip an (Word 2007 bzw Open XML-Dateiformat, die Datei heißt styles.xml), sind die Formate in englischer Sprache hinterlegt und sie gehören zu "latentStyles". Schaut man weiter unten im XML nach, sieht man, dass "berschrift1" - ohne "Ü" und ohne Leerzeichen - "heading 1" zugeordnet wird.
    Die Eigenschaft heißt "name", in VSTO gibt es aber nur "NameLocal". Ich bin an der Stelle auch noch nicht weitergekommen, außer man würde zuvor das XML auseinandernehmen. Das halte ich aber für nicht sehr elegant.
    Die Frage ist auch, was du mit dem Auslesen der Formatierungen erreichen möchtest? Denn diese werden ja mit dem Dokument oder der Vorlage gespeichert und können vom Anwender ja geändert werden. Um auf eine einheitliche Formatierung zu überprüfen bzw. eine solche zu erreichen, ist das wohl eh kein sicherer Weg...

    Ich hoffe, ich konnte dir ein wenig weiterhelfen.

    Viele Grüße
    Jan
    Mittwoch, 11. November 2009 14:49
  • Foreach ist wirklich um einiges schneller !
    Besten Dank
    Freitag, 4. Dezember 2009 14:06