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
Vlad Tepesch schrieb: > das Versionsverwaltungstool aber Dateien als *.tmp > generiert. Wo gibt es denn sowas? Schmeiss es weg und nimm was Vernünftiges.
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.
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)
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.
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 "
am ende in der Datei steht doch was von "Microsoft Office Word-Dokumen" bzw bei Excel was von "Workbook".
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
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/
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. > >
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.