MS Office Dateitypen am Inhalt unterscheiden

#1629570
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
#1629759
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.
Gast #1629765
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  "
#1629799
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
#1629909
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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren