Word - Tabellen Infos abfragen ...

Einbindung von Office-Komponenten wie Word, Excel usw.

Moderator: Moderatoren

Antworten
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15695
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Word - Tabellen Infos abfragen ...

Beitrag von brandelh »

Hi,

ich bin gerade dabei Informationen aus Word Tabellen zu extrahieren und dabei fiel mir auf, dass der Textstring immer mit chr(13)+chr(7) endet.
Ist das normal ?
Hier mal mein Programm, das insoweit zu funktionieren scheint:

Code: Alles auswählen

#include "activex.ch"

PROCEDURE main
  LOCAL cDir,cFile,t,nZei,nSpa, cTxt
  LOCAL oWord,oDoc,oTable,oCell,nAnzTables,nAnzColumns, nAnzRows

  cls

  cDir := CurDrive()+":\"+CurDir()
  cFile := cDir +"\Test.doc"

  // Erzeugen einer ActiveX-Komponente
  oWord := CreateObject("Word.Application")
  IF Empty( oWord )
    MsgBox( "Microsoft Word ist nicht installiert" )
  ENDIF

  oWord:visible := .f.

  oWord:documents:open( cFile )
  oDoc := oWord:ActiveDocument

  set alternate to WordInfo.txt
  set alternate on

  ? "Dokument Info"
  ?
  ? "Datei: "+cFile
  ? "oDoc:  "
    ?? oDoc
  ? "Anzahl der Tabellen ermitteln ... "
  nAnzTables := oDoc:tables:count
  ? "Es gibt",nAnzTables,"Tabellen"
  for t := 1 to nAnzTables
      oTable := oDoc:tables(t)
      ? "Infos über Tabelle",t
      nAnzColumns := oTable:columns:count
      nAnzRows    := oTable:rows:count
      ? "Anzahl der Spalten:",nAnzColumns
      ? "Anzahl der Zeilen: ",nAnzRows
      for nZei := 1 to nAnzRows
          for nSpa := 1 to nAnzColumns
              ? "Zeile"+str(nZei,2)+" Spalte"+str(nSpa,2)+" Inhalt: "
              oCell := oTable:Cell(nZei,nSpa):range
              cTxt := oCell:text
              cTxt := strTran(cTxt,chr(13),"|")
              cTxt := strTran(cTxt,chr(7),"~")
              ?? cTxt  // -> "Zeile x, Spalte y |~"
          next
      next
  next

  oDoc:close()
  oWord:Quit()
  oWord:destroy()

  inkey(10)

RETURN
Gruß
Hubert
Benutzeravatar
Herbert
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1991
Registriert: Do, 14. Aug 2008 0:22
Wohnort: Gmunden am Traunsee, Österreich
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: Word - Tabellen Infos abfragen ...

Beitrag von Herbert »

Hallo Hubert
Jede Zelle in einer Tabelle enthält mindestens CHR(13)+CHR(7)!
Grüsse Herbert
Immer in Bewegung...
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16508
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Re: Word - Tabellen Infos abfragen ...

Beitrag von Martin Altmann »

Moin,
da chr( 7 ) die TAB-Taste darstellt und man mit der TAB-Taste von einer Zelle zur nächsten hüpft und chr( 13 ) das Return (also Absatzende ) ist und eine Zelle auch als Absatz gilt und Absatzformatierungen enthalten kann, wird das wohl normal sein.

Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15695
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Word - Tabellen Infos abfragen ...

Beitrag von brandelh »

Hallo Martin,

die Tab-Taste ist nicht chr(7) sondern chr(9), chr(7) ist BELL und bei meiner ersten Ausgabe von ? cZellenText hat es gewaltig "gebellt" (beep...)
Ich entferne die Zeichen bei mir und gut ist ;-)
Gruß
Hubert
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16508
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Re: Word - Tabellen Infos abfragen ...

Beitrag von Martin Altmann »

:oops: - hast Recht. Die haue ich immer durcheinander...

Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Antworten