mikrocontroller.net

Forum: PC-Programmierung MS Office Dateitypen am Inhalt unterscheiden


Autor: Vlad Tepesch (vlad_tepesch)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
Ich suche einen Weg die (Binär-) Dateitypen von MS-Office zu erkennen, 
ohne auf die Dateiendung zurückzugreifen.

Hintergrund ist, dass mein Lieblingsdiff-Tool die Dateien an ihrer 
Endung erkennt, das Versionsverwaltungstool aber Dateien als *.tmp 
generiert.

Meine Idee ist nun, eine Art Proxy-Programm zu schreiben, was den 
Dateityp erkennt und die Temp-Dateien kopiert/umbennt in eine Datei mit 
der richtigen Endung, dann das Diff-Tool aufruft und nach dessen Beenden 
die Dateien wieder löscht.


Das Problem ist, dass die Office-Files keine (unterschiedlichen) 
Magic-Bytes zu haben scheinen.
DOC und XLS (um die geht es mir hauptsächlichst) fangen mit der 
Hex-Sequenz d0cf11e0a1b11ae100 an.

Die Formate scheinen eine Art Containerformat zu sein.

Leider fehlt mir die Zeit mich durch 350-seitige Format-Spezifikationen 
zu arbeiten und hoffe jemand von euch, hat sowas schon gemacht und hat 
einen guten link auf eine Erklärung oder sogar Implementierung der 
Auswertung dieses Containers.

MfG,
Vlad

Autor: Grrrr (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vlad Tepesch schrieb:
> das Versionsverwaltungstool aber Dateien als *.tmp
> generiert.

Wo gibt es denn sowas? Schmeiss es weg und nimm was Vernünftiges.

Autor: Vlad Tepesch (vlad_tepesch)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Grrrr schrieb:
> Wo gibt es denn sowas? Schmeiss es weg und nimm was Vernünftiges.

Wenn du wüsstest, wie oft ich dass schon gedacht, oder gesagt habe.
Leider treffe ich solche Entscheidungen nicht.

Autor: office (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
schau dir doch einfach die Dateien im Notepad/hex Editor an, da wirst du 
feststellen, dass der Anfang/Header immer gleich ist (zumindest bei ein 
und der selben Version)

Autor: Vlad Tepesch (vlad_tepesch)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
office schrieb:
> schau dir doch einfach die Dateien im Notepad/hex Editor an, da wirst du
> feststellen, dass der Anfang/Header immer gleich ist (zumindest bei ein
> und der selben Version)

wie gesagt:
doc und xls sind beide gleich, dort wo die Unterschiede beginnen, 
unterscheiden sich auch verschiedene Excelfiles.

Autor: uart (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vlad Tepesch schrieb:
> doc und xls sind beide gleich, dort wo die Unterschiede beginnen,
> unterscheiden sich auch verschiedene Excelfiles.

dann schau dir eben das Ende an, da steht dann z.B. "Microsoft 
Word-Dokument
   MSWordDoc    Word.Document.8 ô9²q  "

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
am ende in der Datei steht doch was von "Microsoft Office Word-Dokumen" 
bzw bei Excel was von "Workbook".

Autor: Vlad Tepesch (vlad_tepesch)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
uart schrieb:
> dann schau dir eben das Ende an, da steht dann z.B. "Microsoft
> Word-Dokument
>    MSWordDoc    Word.Document.8 ô9²q  "

Peter schrieb:
> am ende in der Datei steht doch was von "Microsoft Office Word-Dokumen"

hmm, das kann ich irgendwie nicht bestätigen.


Peter schrieb:
> bzw bei Excel was von "Workbook".
das scheint zu stimmen, allerdings scheint der Ort variabel, aber das 
wäre immerhin ein anhaltspunkt

Autor: Hilfs-Sysop (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Beide Formate sind sehr ähnlich, da Word+Excel IIRC beim Speichern nur 
ihre internen OLE-Objekte serialisieren und auf die Platte bannen.

selbst "file" kann die nicht unterscheiden, und erkennt nur ein 
"application/vnd.ms-office"...

vielleicht kann dir die "wv2"-Library weiterhelfen,
http://wvware.sourceforge.net/
http://sourceforge.net/projects/wvware/

Autor: Albrecht H. (alieninside)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vlad Tepesch schrieb:
> ...
>
> Leider fehlt mir die Zeit mich durch 350-seitige Format-Spezifikationen
> zu arbeiten

Ging mir vor einigen Jahren auch so, habs dann auch sein lassen, weils 
nicht so wichtig war, (wollte händisch ein .xls erstellen, das ging aber 
auch einfacher). Aber tatsächlich steht oder stand in der 
Format-Spezifikation drin, wie man durch das Auslesen von einigen über 
Zeiger verketteten Bytes sämtliche Informationen über das Dokument 
erhält, wenn mich nicht alles täuscht waren sogar ein paar Zeilen C++ 
Quellcode dabei.

> und hoffe jemand von euch, hat sowas schon gemacht und hat
> einen guten link auf eine Erklärung oder sogar Implementierung der
> Auswertung dieses Containers.
>

Heute würde ich wahrscheinlich versuchen es mit VB.net oder C# zu 
machen, also einen Verweis auf das installierte Office setzen, da wirds 
dann schon irgend ein Objekt mit einer Property geben aus dem man die 
gewünschten Informationen auslesen kann.
>
>

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.