Office Logo  Zur Hauptseite

Excel-Dateiformat BIFF

       Allgemeines über das Excel-Dateiformat

       Das Wichtigste kurz zusammengefasst

       Das Structured Storage Format

       Das Excel-Dateiformat BIFF
          Die BIFF-Versionen
          Merkmale des BIFF-Formates

       Die verschiedenen Storages und Streams
          Die Storages
          Die Streams
          BIFF-Dump mit Storages und Streams

       Die Recordtypen des Workbook/Book-Streams
          Recordtypen in BIFF8/BIFF8X
          Neue Recordtypen in BIFF8/BIFF8X
          Entfernte Recordtypen in BIFF8/BIFF8X
          Ein paar interessante Recordtypen

       Die Art und Weise der Informationsspeicherung

       OLE Structured Storage-Dateien und VBA
          Dateizugriff mit VBA
          Öffnen einer OLE Structured Storage-Datei
          Prüfen, ob eine Datei das OLE Structured Storage-Format besitzt

       Welche Dokumentationen existieren zu BIFF?
          Microsoft Excel 97 Developer's Kit
          OpenOffice.org Documentation of the Microsoft Excel File Format
          Microsoft Excel 97 SDK BIFF Viewer

       Artikel in der Microsoft Knowledge-Base

       Links zu weiteren Informationsquellen

       Tools zum Downloaden

       Dokumentation zum BIFF Viewer von Microsoft

 

      Home Zur Hauptseite

To Top

Allgemeines über das Excel-Dateiformat

Microsoft Excel verwendet für Arbeitsmappen, Vorlagen, Add-Ins und Sicherungsdateien ein Dateiformat namens BIFF (Binary Interchange File Format), wobei seit Microsoft Excel Version 97 das Format BIFF8 verwendet wird. Excel 2000 besitzt nur minimale Erweiterungen gegenüber BIFF8 von Excel 97, die kaum erwähnenswert sind. Excel 2002 dagegen führte ein paar neue Recordtypen ein, die zwar die Dateikompatibilität nicht beeinträchtigen, aber insbesondere dann genauer betrachtet werden sollten, wenn eine Mappe mit Excel 2002 erstellt und anschliessend in Excel 97 benutzt wird.

To Top

 


Das Wichtigste kurz zusammengefasst

Für alle die es eilig haben und die vorliegende Seite nicht vollständig durchlesen möchten, hier eine kurze Zusammenfassung der wichtigsten Punkte:

BIFF ist die Abkürzung von Binary Interchange File Format. Die Ziffer 8 in BIFF8 steht für die Nummer der BIFF-Version, also Version 8.

Microsoft Excel 97, 2000, 2002/XP und 2003 sowie die Macintosh Excel-Versionen 98, 2001, v.X und 2004 verwenden alle das gleiche Dateiformat, nämlich BIFF8. Da in Microsoft Excel 2002/XP und 2003 ein paar neue Recordtypen eingeführt wurden, wird das BIFF-Format dieser Excel-Versionen in Fachkreisen BIFF8X genannt.

Arbeitsmappen der oben erwähnten Excel-Versionen sind untereinander grundsätzlich kompatibel - sowohl vorwärts als auch rückwärts. Das bedeutet, dass beispielsweise eine Excel 2002-Mappe mit Excel 97 und eine Excel 2000-Mappe mit Excel 2003 geöffnet werden kann.

Microsoft Pocket Excel 1.0 und 2.0 verwendet ebenfalls das Dateiformat BIFF, allerdings eine abgespeckte Version.

Excel 2000-Dateien besitzen gegenüber Excel 97-Dateien nur kleine Erweiterungen bezüglich Dateiformat. Es wurden dabei keine neuen Recordtypen eingeführt.

Excel 2002- und Excel 2003-Dateien besitzen gegenüber Excel 2000- bzw. Excel 97-Dateien ebenfalls ein paar kleinere Neuerungen. Excel 2002- bzw. Excel 2003-Dateien verwenden dazu neue, zusätzliche Recordtypen, damit die Daten der in Excel 2002/2003 neu eingeführten Funktionen/Features gespeichert werden können. Beispielsweise verwendet der Schutz von Zellbereichen den neuen Recordtyp namens RANGEPROTECTION.

Da die neuen Features von Excel 2002 separate, neu eingeführte Recordtypen verwenden, lassen sich Excel 2002- bzw. Excel 2003-Dateien praktisch problemlos in Excel 97 und Excel 2000 öffnen und bearbeiten.

Weitere Informationen zum Thema Dateikompatibilität erhalten Sie hier:

Weitere Informationen

Fragen und Antworten: Lassen sich mit Excel 2000 gespeicherte Arbeitsmappen problemlos in Excel 97 öffnen?

Fragen und Antworten: Wozu sind duale Dateiformate gut (z.B. "Excel 97 & 5.0/95-Arbeitsmappe")?

Fragen und Antworten: Was bedeutet "round-trip" im Zusammenhang mit Datei öffnen und speichern?

Fragen und Antworten: Lässt sich eine Arbeitsmappe modifizieren, sodass sie nie mehr gespeichert werden kann?

To Top

 


Das Structured Storage Format

Alle Microsoft Office-Programme, ausser Microsoft Access, speichern ihre Daten in Structured Storage-Dateien. Viele Informationen kann man aus diesen strukturiert formatierten Dateien auslesen, unabhängig davon, ob es sich um eine xls-, eine doc- oder eine ppt-Datei handelt. So lassen sich beispielsweise die Dokument-Eigenschaften der Datei (Document Properties) abfragen und auch ändern.

HOWTO: Read Compound Document Properties Directly with VC++
http://support.microsoft.com/default.aspx?scid=kb;EN-US;186898

FILE: DSOFILE.EXE Lets You Read Document Properties w/o Office
http://support.microsoft.com/default.aspx?scid=kb;EN-US;224351

Wie man mit VBA/VB feststellen kann, ob eine Datei das Structured Storage Format besitzt, wird hier gezeigt:
Prüfen, ob eine Datei das OLE Structured Storage Format besitzt

To Top

 


Das Excel-Dateiformat BIFF

Die BIFF-Versionen

Wie einleitend bereits erwähnt wurde, verwenden die Excel-Versionen für Windows ab Microsoft Excel 97 das Dateiformat BIFF8. Die Abkürzung BIFF steht für Binary Interchange File Format, und die Ziffer 8 für die BIFF-Version 8. Es existieren sechs verschiedene BIFF-Versionen: BIFF2, BIFF3, BIFF4, BIFF5, BIFF7 und BIFF8. Das BIFF-Dateiformat existiert bereits seit vielen Jahren. Es wurde mit der Excel-Version 2.0 bzw. 2.1 eingeführt, die im Jahre 1987 veröffentlicht wurde. Die BIFF-Versionen korrespondieren mehrheitlich mit den existierenden Excel-Versionen:

BIFF-Version* Excel-Version
BIFF2 Excel 2.1
BIFF3 Excel 3.0
BIFF4 Excel 4.0
BIFF5 Excel 5.0
BIFF7 Excel 95 (Excel 7.0)
BIFF8 Excel 97, 2000, 2002/XP, 2003

* Anmerkung
Die BIFF-Versionen BIFF2 und BIFF6 existieren nicht, da es nie eine Microsoft Excel-Version 1.0 für Windows gegeben hat. Infolge einer Versionsnummer-Angleichung mit den anderen Microsoft Office-Programmen wie Word und PowerPoint wurde die Excel-Version 6.0 ausgelassen.

To Top


Merkmale des BIFF-Formates

Bis und mit Excel Version 4 wurden BIFF-Dateien (BIFF2, BIFF3, BIFF4) als Stream gespeichert. Das heisst, dass alle Records sequentiell abgelegt sind. Seit Excel Version 5.0 speichert BIFF (BIFF5, BIFF7, BIFF8) alle Daten im sogenannten "OLE2 Storage Format" (oft auch als "Structured Storage" bezeichnet). Das OLE2 Storage Format - eine Datei, die dieses Format verwendet, wird vielfach "OLE2 Compound File" genannt - enthält mehrere Streams für die unterschiedlichen Datentypen.

Seit BIFF5 wird das sogenannte "OLE Structured Storage Format" benutzt. Neben der Bezeichnung OLE Structured Storage wird häufig auch "OLE2 Storage" oder "XLStorage" verwendet. Die Versionen BIFF2 bis BIFF4 waren rein streambasiert, während ab BIFF5 nebst Streams auch Storages verwendet werden.

Eine als OLE Structured Storage gespeicherte BIFF-Datei (d.h. BIFF5 bis BIFF8) enthält verschiedene Storages und Streams. Eine Datei im BIFF2-, BIFF3- oder BIFF4-Format enthält nie Storages sondern ausschliesslich Streams bzw. nur einen einzigen Stream.

Ein Stream einer Excel-Arbeitsmappendatei (xls) ist beispielsweise der Stream für die Daten der Arbeitsmappe. Dieser Stream wird bei BIFF5 und BIFF7 als Book bezeichnet. Bei BIFF8 heisst der Stream Workbook.

Ein Stream ist zwischen 0 und n Bytes lang. Ein Storage besitzt generell eine Datenlänge von 0 Bytes.

Ein OLE2 Storage-File kann man mit einem Verzeichnis auf einer Festplatte vergleichen. Das Verzeichnis kann sowohl Dateien als auch weitere Verzeichnisse (Unterverzeichnisse) enthalten. Die Dateien stellen dabei Streams und die Verzeichnisse Storages dar. Jedes Unterverzeichnis kann ebenfalls Dateien und Verzeichnisse enthalten.

Die meisten Streams enthalten Daten, die in Form von Records abgelegt sind.

To Top

 


Die verschiedenen Storages und Streams

In einer BIFF-Datei, sprich gewöhnlich einer Excel-Arbeitsmappendatei, sind in der Regel mehrere Storages und Streams enthalten. Wenn man in Microsoft Excel 97 oder neuer (bzw. Excel 98 oder neuer für Macintosh) eine neue, leere Arbeitsmappe anlegt und dann speichert, so besitzt die dadurch erstellte xls-Datei lediglich drei Streams: Workbook-Stream, SummaryInformation-Stream und DocumentSummaryInformation-Stream.

Welcher Stream bzw. Storage in welchem anderen Storage vorkommt, ist am besten anhand eines BIFF-Dumps zu erkennen (siehe weiter unten).

Ich habe mehrere Exceldateien untersucht und dabei die in den nachfolgenden Abschnitten vorgestellten Storages und Streams angetroffen.

To Top


Die Storages

Die nachfolgende Tabelle enthält eine Auflistung der Storages (nicht abschliessend):

Storage Name Beschreibung Bemerkung
_SX_DB_CUR Pivot Cache -
_VBA_PROJECT_CUR Visual Basic Projekt Der Storage "_VBA_PROJECT_CUR" für das Visual Basic Projekt besitzt anscheinend immer die Grösse von 0 Bytes.
VBA VBA Der Storage "VBA" besitzt anscheinend immer die Grösse von 0 Bytes.
<UserForm> VBA UserForm Für "<UserForm>" steht jeweils der Name (Codename) des Benutzerformulares.
MBD<X> Embedded Object Dieser Storage enthält ein eingebettetes Dokument (MBD=Embedded).
ObjectPool Object Dieser Storage befindet sich im Storage "MBD<X>".
LNK<X> Linked Object Der Storage "LNK<X>" enthält ein verknüpftes Dokument (LNK=Link).
Macros - Nur in Word-Dokumenten vorhanden.

Anmerkung
Die Software "BIFF-Workbench" enthält eine Liste mit bekannten Storages.

To Top


Die Streams

Diese Liste zeigt die Streams (nicht abschliessend):

Stream Name Beschreibung Bemerkung
Workbook BIFF8 workbook stream Enthält die Daten der Arbeitsmappe und aller Arbeitsblätter einer Excel 97-, Excel 2000-, Excel 2002- oder Excel 2003-Mappe.
Book BIFF5/BIFF7 workbook stream Enthält die Daten der Arbeitsmappe und aller Arbeitsblätter einer Excel 5.0- oder Excel 95 (7.0)-Mappe.
<DieseArbeitsmappe> Workbook object Für "<DieseArbeitsmappe>" steht der Name (Codename) der Arbeitsmappe.
<Blatt> Worksheet object Für "<Blatt>" steht der Name (Codename) des jeweiligen Arbeitsblattes.
SummaryInformation Document settings Enthält Dokument-Eigenschaften, u.a. die Dokument-Vorschaugrafik. Das erste Zeichen des Streamnamens besitzt den ASCII-Code 5.
DocumentSummaryInformation Document settings Enthält Dokument-Eigenschaften, u.a. die benutzerdefinierten Eigenschaften (Custom Properties). Das erste Zeichen des Streamnamens besitzt den ASCII-Code 5.
User Names User names in shared workbooks Enthält die Benutzernamen (nur bei einer freigegebenen Arbeitsmappe). Wird die Freigabe bei einer Mappe aufgehoben, so wird dieser Stream vollständig entfernt.
Revision Log Change tracking log stream Enthält das Änderungsprotokoll (nur bei einer freigegebenen Arbeitsmappe). Wird die Freigabe bei einer Mappe aufgehoben, so bleibt dieser Stream in der Datei bestehen und besitzt dann eine Länge von 390 Bytes!
Ctls Controls Dieser Stream enthält die in einem Arbeitsblatt eingebetteten Formular- und Toolbox-Steuerelemente. Nach dem Löschen sämtlicher eingebetteten Steuerelemente existiert der Stream weiterhin, besitzt jedoch eine Länge von 0 Bytes.
CompObj Compound Object oder Composite Object (?) Dieser Stream kann im Root der Datei vorkommen. Wenn ein VBA-Projekt mit einer UserForm existiert, so kommt der Stream in jedem Fall im UserForm-Storage vor (pro UserForm-Storage genau ein Mal). Das erste Zeichen des Streamnamens besitzt den ASCII-Code 3.
XCB Excel Command Bar Enthält die Daten einer benutzerdefinierten Symbolleiste, die der Exceldatei angefügt ist. Dieser Stream kommt vor dem Workbook-Stream.
_VBA_PROJECT VBA Project Stream im Storage "VBA". Dieser Stream "_VBA_PROJECT" ist nicht zu verwechseln mit dem Storage "_VBA_PROJECT_CUR".
PROJECT - Stream im Storage "_VBA_PROJECT_CUR".
PROJECTlk - Stream im Storage "_VBA_PROJECT_CUR".
PROJECTwm - Stream im Storage "_VBA_PROJECT_CUR".
f - Stream in einem UserForm-Storage. Pro UserForm-Storage kommt dieser Stream nur ein Mal vor.
o - Stream in einem UserForm-Storage. Pro UserForm-Storage kommt dieser Stream nur ein Mal vor.
VBFrame - Stream in einem UserForm-Storage. Pro UserForm-Storage kommt dieser Stream nur ein Mal vor. Das erste Zeichen des Streamnamens besitzt den ASCII-Code 3.
dir - Der "dir"-Stream enthält wahrscheinlich eine Liste der im VBA-Projekt existierenden Komponenten wie "DieseArbeitsmappe", Arbeitsblätter, Benutzerformulare, Module und Klassenmodule. "dir" ist vermutlich die Abkürzung von Directory.
__SRP_<X> Beispiel: "__SRP_7" Diese Streams enthalten vermutlich kompilierten Programmcode. Der Platzhalter "<X>" enthält einen für diesen Stream-Typ fortlaufenden Hex-Wert, beginnend bei 0 (d.h. 0-F, 10-1F, 20-2F, ...).
Data - (Unbekannt)
1Table - Nur in Word-Dokumenten vorhanden.
ObjInfo - Das erste Zeichen des Streamnamens besitzt den ASCII-Code 3.
WordDocument - Nur in Word-Dokumenten vorhanden.

To Top


BIFF-Dump mit Storages und Streams

Die blauen Einträge sind Storages.

 

XLStorage File
  'CompObj', Type: Stream, Size: 104
  'Workbook', Type: Excel Workbook, Size: 6566

  '_VBA_PROJECT_CUR', Type: Storage, Size: 0
    'VBA', Type: Storage, Size: 0
      'dir', Type: Stream, Size: 898
      '__SRP_0', Type: Stream, Size: 2032
      '__SRP_1', Type: Stream, Size: 154
      '__SRP_2', Type: Stream, Size: 398
      '__SRP_3', Type: Stream, Size: 101
      '__SRP_4', Type: Stream, Size: 218
      '__SRP_5', Type: Stream, Size: 64
      'Tabelle1', Type: Stream, Size: 1238
      'Tabelle2', Type: Stream, Size: 1238
      'Tabelle3', Type: Stream, Size: 1238
      'UserForm1', Type: Stream, Size: 1432
      '_VBA_PROJECT', Type: Stream, Size: 3782
      'DieseArbeitsmappe', Type: Stream, Size: 1865
    'PROJECT', Type: Stream, Size: 633
    'PROJECTlk', Type: Stream, Size: 30
    'PROJECTwm', Type: Stream, Size: 167
    'UserForm1', Type: Storage, Size: 0
      'f', Type: Stream, Size: 170
      'o', Type: Stream, Size: 378
      'CompObj', Type: Stream, Size: 97
      'VBFrame', Type: Stream, Size: 291
  'SummaryInformation', Type: Stream, Size: 220
  'DocumentSummaryInformation', Type: Stream, Size: 440

To Top

 


Dumps von BIFF-Dateien

Der wohl beste Weg, das BIFF-Dateiformat kennen zu lernen, führt über das Studium von so genannten BIFF-Dumps. Mit dem Microsoft Utility BIFF-Viewer können Sie auf sehr einfache Art und Weise von jeder beliebigen Arbeitsmappendatei einen BIFF-Dump erstellen. Wenn der vom BIFF-Viewer generierte Dump nicht zu gross ist, kann er sogar am Bildschirm betrachtet werden. Mehr zu diesem Utility erfahren Sie unter Microsoft Excel 97 SDK BIFF Viewer.

 

To Top


Muster einer Excel-Arbeitsmappe mit einem Tabellenblatt (ohne VBA-Projekt)

XLStorage file C:\EINEMAPPE.XLS
  'Workbook', Type: Excel Workbook, Size: 4096
  'SummaryInformation', Type: Stream, Size: 4096
  'DocumentSummaryInformation', Type: Stream, Size: 4096

To Top


Muster einer Excel-Arbeitsmappe mit einem Tabellenblatt (mit VBA-Projekt)

XLStorage file C:\EINEMAPPE.XLS
  'CompObj', Type: Stream, Size: 104
  'Workbook', Type: Excel Workbook, Size: 2754
  '_VBA_PROJECT_CUR', Type: Storage, Size: 0
    'VBA', Type: Storage, Size: 0
      'dir', Type: Stream, Size: 652
      'Tabelle1', Type: Stream, Size: 1011
      '_VBA_PROJECT', Type: Stream, Size: 2756
      'DieseArbeitsmappe', Type: Stream, Size: 1022
    'PROJECT', Type: Stream, Size: 399
    'PROJECTwm', Type: Stream, Size: 83
  'SummaryInformation', Type: Stream, Size: 220
  'DocumentSummaryInformation', Type: Stream, Size: 416

To Top


Muster eines grossen VBA-Projektes in einer Excel-Arbeitsmappe

'_VBA_PROJECT_CUR', Type: Storage, Size: 0
'VBA', Type: Storage, Size: 0
'dir', Type: Stream, Size: 2508
'Modul1', Type: Stream, Size: 1563
'X_Tests', Type: Stream, Size: 9129
'Z_Modul', Type: Stream, Size: 2587
'__SRP_0', Type: Stream, Size: 16511
'__SRP_1', Type: Stream, Size: 1582
'__SRP_2', Type: Stream, Size: 8406
'__SRP_3', Type: Stream, Size: 402
'__SRP_4', Type: Stream, Size: 2634
'__SRP_5', Type: Stream, Size: 647
'__SRP_6', Type: Stream, Size: 654
'__SRP_7', Type: Stream, Size: 101
'__SRP_8', Type: Stream, Size: 10992
'__SRP_9', Type: Stream, Size: 372
'__SRP_a', Type: Stream, Size: 1198
'__SRP_b', Type: Stream, Size: 587
'__SRP_c', Type: Stream, Size: 7200
'__SRP_d', Type: Stream, Size: 878
'__SRP_e', Type: Stream, Size: 3684
'__SRP_f', Type: Stream, Size: 629
'Tabelle2', Type: Stream, Size: 1302
'__SRP_10', Type: Stream, Size: 74
'__SRP_11', Type: Stream, Size: 162
'__SRP_12', Type: Stream, Size: 218
'__SRP_13', Type: Stream, Size: 64
'__SRP_14', Type: Stream, Size: 2362
'__SRP_15', Type: Stream, Size: 1267
'__SRP_16', Type: Stream, Size: 5000
'__SRP_17', Type: Stream, Size: 562
'basSystem', Type: Stream, Size: 18940
'frmFilter', Type: Stream, Size: 1817
'frmPrämie', Type: Stream, Size: 5247
'Tabelle13', Type: Stream, Size: 1303
'Tabelle22', Type: Stream, Size: 1303
'basHostCIF', Type: Stream, Size: 21386
'basHostHDA', Type: Stream, Size: 13258
'basSupport', Type: Stream, Size: 35593
'frmDesktop', Type: Stream, Size: 10519
'basHostBUSY', Type: Stream, Size: 68908
'frmOptionen', Type: Stream, Size: 19688
'frmStatistik', Type: Stream, Size: 5932
'frmUnterhalt', Type: Stream, Size: 9290
'_VBA_PROJECT', Type: Stream, Size: 26970
'basProzeduren', Type: Stream, Size: 63904
'basHostDTAZASY', Type: Stream, Size: 23366
'basHostVarious', Type: Stream, Size: 4884
'basSymbolleiste', Type: Stream, Size: 34118
'frmPostenauszug', Type: Stream, Size: 20561
'frmSplashscreen', Type: Stream, Size: 2473
'basDeklarationen', Type: Stream, Size: 7319
'frmAuftragSuchen', Type: Stream, Size: 26400
'frmAuftragÖffnen', Type: Stream, Size: 28910
'frmSaldonachweis', Type: Stream, Size: 7482
'frmUmsatzdetails', Type: Stream, Size: 43453
'DieseArbeitsmappe', Type: Stream, Size: 24494
'frmBuchungsanzeige', Type: Stream, Size: 49799
'frmBuchungsanzeigePrämieOLD', Type: Stream, Size: 1972
'PROJECT', Type: Stream, Size: 2615
'frmFilter', Type: Storage, Size: 0
'f', Type: Stream, Size: 179
'o', Type: Stream, Size: 112
'CompObj', Type: Stream, Size: 97
'VBFrame', Type: Stream, Size: 289
'frmPrämie', Type: Storage, Size: 0
'f', Type: Stream, Size: 1227
'o', Type: Stream, Size: 1730
'i10', Type: Storage, Size: 0
'f', Type: Stream, Size: 77
'o', Type: Stream, Size: 0
'CompObj', Type: Stream, Size: 112
'i31', Type: Storage, Size: 0
'f', Type: Stream, Size: 345
'o', Type: Stream, Size: 308
'CompObj', Type: Stream, Size: 112
'CompObj', Type: Stream, Size: 97
'VBFrame', Type: Stream, Size: 300
'PROJECTlk', Type: Stream, Size: 102
'PROJECTwm', Type: Stream, Size: 1256
'frmDesktop', Type: Storage, Size: 0
'f', Type: Stream, Size: 2855
'o', Type: Stream, Size: 3960
'CompObj', Type: Stream, Size: 97
'VBFrame', Type: Stream, Size: 309
'frmOptionen', Type: Storage, Size: 0
'f', Type: Stream, Size: 299
'o', Type: Stream, Size: 184
'i30', Type: Storage, Size: 0
'f', Type: Stream, Size: 336
'o', Type: Stream, Size: 440
'x', Type: Stream, Size: 96
'i32', Type: Storage, Size: 0
'f', Type: Stream, Size: 400
'o', Type: Stream, Size: 712
'CompObj', Type: Stream, Size: 110
'i33', Type: Storage, Size: 0
'f', Type: Stream, Size: 696
'o', Type: Stream, Size: 808
'CompObj', Type: Stream, Size: 110
'i38', Type: Storage, Size: 0
'f', Type: Stream, Size: 300
'o', Type: Stream, Size: 448
'CompObj', Type: Stream, Size: 110
'i39', Type: Storage, Size: 0
'f', Type: Stream, Size: 292
'o', Type: Stream, Size: 544
'CompObj', Type: Stream, Size: 110
'i49', Type: Storage, Size: 0
'f', Type: Stream, Size: 404
'o', Type: Stream, Size: 728
'CompObj', Type: Stream, Size: 110
'i67', Type: Storage, Size: 0
'f', Type: Stream, Size: 272
'o', Type: Stream, Size: 460
'CompObj', Type: Stream, Size: 110
'CompObj', Type: Stream, Size: 115
'CompObj', Type: Stream, Size: 97
'VBFrame', Type: Stream, Size: 363
'frmStatistik', Type: Storage, Size: 0
'f', Type: Stream, Size: 1647
'o', Type: Stream, Size: 1880
'i21', Type: Storage, Size: 0
'f', Type: Stream, Size: 77
'o', Type: Stream, Size: 0
'CompObj', Type: Stream, Size: 112
'CompObj', Type: Stream, Size: 97
'VBFrame', Type: Stream, Size: 376
'frmUnterhalt', Type: Storage, Size: 0
'f', Type: Stream, Size: 187
'o', Type: Stream, Size: 60
'i23', Type: Storage, Size: 0
'f', Type: Stream, Size: 216
'o', Type: Stream, Size: 268
'x', Type: Stream, Size: 60
'i25', Type: Storage, Size: 0
'f', Type: Stream, Size: 472
'o', Type: Stream, Size: 900
'CompObj', Type: Stream, Size: 110
'i26', Type: Storage, Size: 0
'f', Type: Stream, Size: 376
'o', Type: Stream, Size: 676
'CompObj', Type: Stream, Size: 110
'i27', Type: Storage, Size: 0
'f', Type: Stream, Size: 188
'o', Type: Stream, Size: 336
'CompObj', Type: Stream, Size: 110
'CompObj', Type: Stream, Size: 115
'CompObj', Type: Stream, Size: 97
'VBFrame', Type: Stream, Size: 371
'frmPostenauszug', Type: Storage, Size: 0
'f', Type: Stream, Size: 1107
'o', Type: Stream, Size: 1677
'CompObj', Type: Stream, Size: 97
'VBFrame', Type: Stream, Size: 311
'frmSplashscreen', Type: Storage, Size: 0
'f', Type: Stream, Size: 271
'o', Type: Stream, Size: 380
'CompObj', Type: Stream, Size: 97
'VBFrame', Type: Stream, Size: 300
'frmAuftragSuchen', Type: Storage, Size: 0
'f', Type: Stream, Size: 1183
'o', Type: Stream, Size: 1628
'i44', Type: Storage, Size: 0
'f', Type: Stream, Size: 177
'o', Type: Stream, Size: 168
'CompObj', Type: Stream, Size: 112
'i47', Type: Storage, Size: 0
'f', Type: Stream, Size: 301
'o', Type: Stream, Size: 476
'CompObj', Type: Stream, Size: 112
'CompObj', Type: Stream, Size: 97
'VBFrame', Type: Stream, Size: 298
'frmAuftragÖffnen', Type: Storage, Size: 0
'f', Type: Stream, Size: 451
'o', Type: Stream, Size: 312
'i14', Type: Storage, Size: 0
'f', Type: Stream, Size: 321
'o', Type: Stream, Size: 408
'CompObj', Type: Stream, Size: 112
'CompObj', Type: Stream, Size: 97
'VBFrame', Type: Stream, Size: 373
'frmSaldonachweis', Type: Storage, Size: 0
'f', Type: Stream, Size: 615
'o', Type: Stream, Size: 896
'CompObj', Type: Stream, Size: 97
'VBFrame', Type: Stream, Size: 318
'frmUmsatzdetails', Type: Storage, Size: 0
'f', Type: Stream, Size: 2075
'o', Type: Stream, Size: 2688
'i41', Type: Storage, Size: 0
'f', Type: Stream, Size: 77
'o', Type: Stream, Size: 0
'CompObj', Type: Stream, Size: 112
'CompObj', Type: Stream, Size: 97
'VBFrame', Type: Stream, Size: 374
'frmBuchungsanzeige', Type: Storage, Size: 0
'f', Type: Stream, Size: 1883
'o', Type: Stream, Size: 2176
'CompObj', Type: Stream, Size: 97
'VBFrame', Type: Stream, Size: 318
'frmBuchungsanzeigePrämieOLD', Type: Storage, Size: 0
'f', Type: Stream, Size: 2531
'o', Type: Stream, Size: 2932
'CompObj', Type: Stream, Size: 97
'VBFrame', Type: Stream, Size: 324

To Top


Ausschnitt eines BIFF-Dumps

Die folgende Abbildung zeige einen Ausschnitt vom Beginn des BIFF-Streams "Workbook" einer Exceldatei als Hex-Dump. Den Dump habe ich mit dem Freeware Utility BIFF Viewer aus dem Microsoft Excel 97 SDK generiert (Anmerkung des Autors: Den BIFF Viewer können Sie auf der Downloadseite kostenlos herunterladen).

Erläuterung Hex-Dump
Position 00000h:
Beginn des ersten Records; Typ-ID 0809h (9dec; BOF). Der Datenteil des Records ist 0010h Byte lang (16 Byte). Der gesamte Record ist somit 14h Byte (20 Byte) lang (2 Byte Typ-ID + 2 Byte Record-Size + 16 Byte Daten = 20 Byte).

Position 00014h:
Beginn des zweiten Records; Typ-ID 00E1h (225dec; INTERFACEHDR). Der Datenteil ist 0002h Byte lang (2 Byte). Die Gesamtlänge beträgt somit 6h Byte (6 Byte).

[...]

Position 00024h:
Beginn des fünften Records; Typ-ID 005Ch (92dec; WRITEACCESS). Der Record enthält Daten von 0070h Byte Länge (112 Byte). Die Gesamt-Recordlänge beträgt 74h Byte (116 Byte).

 

00000: [BOF] (9h 9dec)
00000  09 08 10 00 00 06 05 00 d3 10 cc 07 c9 00 00 00 ........S.L.I...
00010  06 00 00 00 -- -- -- -- -- -- -- -- -- -- -- -- ....
00014: [INTERFACEHDR] (E1h 225dec)
00000  e1 00 02 00 b0 04 -- -- -- -- -- -- -- -- -- -- a...0.
0001A: [MMS] (C1h 193dec)
00000  c1 00 02 00 00 00 -- -- -- -- -- -- -- -- -- -- A.....
00020: [INTERFACEEND] (E2h 226dec)
00000  e2 00 00 00 -- -- -- -- -- -- -- -- -- -- -- -- b...
00024: [WRITEACCESS] (5Ch 92dec)
00000  5c 00 70 00 14 00 00 50 68 69 6c 69 70 70 20 76 \.p....Philipp v
00010  6f 6e 20 57 61 72 74 62 75 72 67 20 20 20 20 20 on Wartburg
00020  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
00030  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
00040  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
00050  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
00060  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
00070  20 20 20 20 -- -- -- -- -- -- -- -- -- -- -- --

To Top


'Book', Type: Excel Workbook, Size: 2458
00000: [BOF] (9h 9dec)
00000  09 08 08 00 00 05 05 00 83 15 cc 07 -- -- -- -- ..........L.
       0809  0008  0500  0005  1583   07cc

       Type  Size  Vers  WGlob BldID BldYear
                               5507d 1996d

 

To Top


XLStorage file D:\NEUEDA~1\DOWNLO~1\D39580.XLS
'Ctls', Type: Stream, Size: 64
'CompObj', Type: Stream, Size: 104
'Workbook', Type: Excel Workbook, Size: 22791
00000: [BOF] (9h 9dec)
00000  09 08 10 00 00 06 05 00 1c 0e cc 07 49 40 00 00 ..........L.I@..

ff     0809  0010  0600  0005  0e1c   07cc
00010  06 00 00 00 -- -- -- -- -- -- -- -- -- -- -- -- ....

 

To Top

 


Die Recordtypen des Workbook/Book-Streams

Jeder Recordtyp des BIFF-Formates besitzt eine eindeutige Kennung (Identifikationsschlüssel; ID). Bei dieser ID handelt es sich um eine ganzzahlige Nummer, die aus technischen Gründen maximal ein vierstelliger Hex-Wert sein darf (sprich FFFF). Der grösste bekannte Hex-Wert ist 1066h (4198dec und wird vom Recordtyp namens GELFRAME verwendet. Jeder Recordtyp besitzt zudem eine Bezeichnung (einen Namen), die allerdings nicht eindeutig sein muss.

Beispiel:
ID: 9h
Name: BOF

To Top


Recordtypen in BIFF8/BIFF8X

Diese Tabelle zeigt eine Liste sämtlicher Recordtypen, die ich jemals angetroffen habe. Die Liste erhebt keinen Anspruch auf Vollständigkeit, da es möglicherweise noch weitere Recordtypen gibt.

Liste der BIFF-Recordtypen

To Top


Neue Recordtypen in BIFF8/BIFF8X

Diese Tabelle zeigt, welche Recordtypen in BIFF8 gegenüber BIFF7 sowie in BIFF8X gegenüber BIFF8 neu hinzugekommen sind. Ein "" bedeutet, dass der Recordtyp neu eingeführt wurde.

ID Bezeichnung BIFF8 BIFF8X
00E5H MERGEDCELLS
00E9H BITMAP
00FCH SST
00FDH LABELSST
00FFH EXTSST
015FH LABELRANGES
0160H USESELFS
0161H DSF
01AEH SUPBOOK
01B0H CONDFMT
01B2H DVAL
01B8H HLINK
01BEH DV
0800H QUICKTIP
0862H SHEETLAYOUT .
0867H SHEETPROTECTION .
0868H RANGEPROTECTION .

To Top


Entfernte Recordtypen in BIFF8/BIFF8X

Diese Tabelle zeigt, welche Recordtypen in BIFF8 bzw. BIFF8X gegenüber BIFF7 nicht mehr vorhanden sind. Ein "" bedeutet, dass der Recordtyp nicht mehr unterstützt wird. Ein "" bedeutet, dass der Recordtyp gelesen werden kann aber nicht mehr geschrieben wird.

ID Bezeichnung BIFF8 BIFF8X
0004H/0204H LABEL
0016H EXTERNCOUNT
00D6H RSTRING

To Top


Ein paar interessante Recordtypen

XF-Record

Index auf einen FONT-Record

00662: [XF] (E0h 224dec)
00000 e0 00 14 00 05 00 00 00 01 00 20 00 00 08 00 00 `......... .....
00010 00 00 00 00 00 00 c0 20 -- -- -- -- -- -- -- -- ......@
0067A: [XF] (E0h 224dec)
00000 e0 00 14 00 06 00 00 00 01 00 20 00 00 08 00 00 `......... .....
00010 00 00 00 00 00 00 c0 20 -- -- -- -- -- -- -- -- ......@
00692: [XF] (E0h 224dec)
00000 e0 00 14 00 07 00 00 00 01 00 20 00 00 08 00 00 `......... .....
00010 00 00 00 00 00 00 c0 20 -- -- -- -- -- -- -- -- ......@

To Top


ROW-Record

01108: [ROW] (8h 8dec)
00000 08 02 10 00 01 00 00 00 21 00 1d 01 00 00 54 30 ........!.....T0
00010 00 01 12 00 -- -- -- -- -- -- -- -- -- -- -- -- ....

01 = Index des ROW-Records
00 = Spalte der ersten Zelle der Zeile
21 = Spalte der letzten Zelle der Zeile (Hex 21 = Dec 33 -> Spalte 33 -> Spalte AG)

To Top

 


Die Art und Weise der Informationsspeicherung

In diesem Abschnit wird kurz vorgestellt, wie Informationen in einer BIFF-Datei abgelegt werden.

Wie weiter oben erwähnt wurde, sind die in einem Stream enthaltenen Daten gewöhnlich als Records gespeichert.

Alle Informationen, die mehr als nur ein Byte beanspruchen, werden mit der Little-Endian Methode in mehreren Bytes gespeichert.

To Top

 

Little-Endian

16-bit-Werte: Low Byte/High Byte

32-bit-Werte: Least significant byte is stored first and the most significant byte last.

Beispiel: 16-bit-integers, 32-bit-integers, floating-point values, Unicode characters

 

8-bit-Werte benötigen nur ein Byte (weil 8 Bits = 1 Byte ist).

Beispiel: ANSI characters (z.B. Buchstabe "A" -> 41h bzw. 65dec)

 

Jeder Record besitzt einen Record-Header und einen Record-Body (der Record-Body ist bei ein paar wenigen Recordtypen 0 Byte lang, u.a. bei den Typen EOF, BEGIN und END).

To Top

 


OLE Structured Storage-Dateien und VBA

Dateizugriff mit VBA

An dieser Stelle möchte ich ein paar Hinweise bezüglich VBA und BIFF geben und zeigen, wie man mit VBA unter anderem eine OLE Structured Storage-Datei lesen kann.

To Top

 


Öffnen einer OLE Structured Storage-Datei

Es ist mir leider nicht bekannt, wie man mit VBA direkt auf einen bestimmten Storage oder Stream einer OLE Structured Storage-Datei zugreifen kann. Es existiert zwar eine Windows-DLL mit entsprechenden API-Funktionen. Ich kenne jedoch keinen Weg, wie diese in einem VBA-Programm verwendet werden (mit C/C++ wäre es dagegen kein Problem).

Der einzige Stream, den man auf einfache Art und Weise mit VBA lesen und schreiben kann, ist der 'DocumentSummaryInformation'-Stream, da es dazu eine spezielle Objektbibliothek namens "OLE Document Properties Object Library" gibt.

Informationen über diese Objektbibliothek erhalten Sie hier:

Weitere Informationen

VBA-Spezialthema "OLE Document Properties (DSOFile.dll)"

Die Objektbibliothek "OLE Document Properties Object Library" können Sie hier herunterladen:

Weitere Informationen

Downloadseite: DSOFile

 

Das Öffnen eines anderen Streams oder Storages ist mit VBA somit nicht möglich. Folglich kann der Workbook- bzw. Book-Stream einer BIFF-Datei nicht direkt angesprochen werden. Es bleibt nur die Möglichkeit, die gesamte Datei zu öffnen. Das ist einfach realisierbar, da man die Datei lediglich mit der Open-Anweisung im Binary-Zugriffsmodus zu lesen braucht:

Open strFile For Binary Access Read Write Lock Read Write As #1
  'VBA-Programmcode...
Close #1

Die Variable strFile enthält den Pfad und Namen der OLE Structured Storage-Datei. Wie im obigen Beispiel zu sehen ist, wird die Datei für den Lese-/Schreibzugriff geöffnet (Access Read Write) und dabei für Lese- und Schreibzugriffe durch andere Anwendungen gesperrt (Lock Read Write). Es ist zwar weder notwendig, die Datei im Schreibzugriff zu öffnen, noch die Datei exklusiv zu sperren. Ich persönlich mache dies jedoch, da ich in meinen Programmen sicher sein will, das während der Dateibenutzung keine andere Anwendung und kein anderer Benutzer auf die Datei zugreift.

To Top

 


Prüfen ob eine Datei das OLE Structured Storage-Format besitzt

Anhand den ersten sechs Bytes einer Datei lässt sich feststellen, ob die Datei das OLE Structured Storage-Format verwendet. Wenn die ersten sechs Bytes die Hex-Werte D0, CF, 11, E0, A1 und B1 beziehungsweise die Dezimalwerte 208, 207, 17, 224, 161 und 177 aufweisen, dann besitzt die Datei das genannte Format.

Die Tabelle zeigt die Werte dieser Bytes:

Byte Hex Value Dec Value Character
1 D0 208 Ð
2 CF 207 Ï
3 11 17 
4 E0 224 à
5 A1 161 ¡
6 B1 177 ±

 

Codebeispiele

Hier ein paar Beispiele, wie Sie mit VBA oder VB überprüfen können, ob eine Datei das OLE Structured Storage-Format besitzt.

 

Beispiel 1: Dateiformat-Kontrolle in einer Sub-Prozedur

Public Sub CheckOLEFileFormat()
  Dim strFile As String
  Dim strContents As String
  strFile = "C:\Daten\EinDokument.doc"
  Open strFile For Binary Access Read Write Lock Read Write As #1
    strContents = Input(6, #1)
    If strContents = "ÐÏࡱ" Then
      MsgBox "Die Datei " & strFile & " besitzt das OLE Structured Storage-Format."

    Else
      MsgBox "Die Datei " & strFile & " besitzt nicht das OLE Structured Storage-Format."
    End If
  Close #1
End Sub

 

Beispiel 2: Dateiformat-Kontrolle als Function-Prozedur

Public Function IsOLEFileFormat(ByVal strFile As String) As Boolean
  Dim strContents As String
  Open strFile For Binary Access Read Write Lock Read Write As #1
    strContents = Input(6, #1)
    If strContents = "ÐÏࡱ" Then
      IsOLEFileFormat = True
    Else
      IsOLEFileFormat = False
    End If
  Close #1
End Function

Public Sub TestCall()
  Dim strFullFilename As String
  strFullFilename = "C:\Daten\EineMappe.xls"
  If IsOLEFileFormat(strFullFilename) Then
    MsgBox "Die Datei " & strFullFilename & " besitzt das OLE Structured Storage-Format."
  Else
    MsgBox "Die Datei " & strFullFilename & " besitzt nicht das OLE Structured Storage-Format."
  End If
End Sub

 

ToDo...

Public Sub CheckOLEFileFormat()
  Dim strFile As String
  Dim lngFileLength As Long
  Dim strContents As String
  strFile = "C:\Daten\EinDokument.doc"
  lngFileLength = FileLen(strFile)
  Open strFile For Binary Access Read Write Lock Read Write As #1

    strContents = Input(lngFileLength, #1)
    For lngCounter = 1 To lngFileLength
      If CheckByte(strContents, lngCounter, "D0") And CheckByte(strContents, lngCounter + 1, "CF") _
          And CheckByte(strContents, lngCounter + 2, "11") And CheckByte(strContents, lngCounter + 3, "E0") _
          And CheckByte(strContents, lngCounter + 4, "A1") And CheckByte(strContents, lngCounter + 5, "B1") Then
        MsgBox "Die Datei besitzt das OLE Structured Storage-Format."
        Exit For
      End If
    Next lngCounter
  Close #1
End Sub

Public Function CheckByte(ByVal strContents As String, ByVal lngPosition As Long, ByVal strResult As String) As Boolean
  If Hex(Asc(Mid$(strContents, lngPosition, 1))) = strResult Then
    CheckByte = True
  Else
    CheckByte = False
  End If
End Function

 

ToDo...

If CheckRecord(varBytes, lngCounter, "9") And CheckRecord(varBytes, lngCounter + 1, "8") Then
  If CheckRecord(varBytes, lngCounter + 2, "10") Then    'RecLength: Hex 10 (bzw. 16 Bytes) bei BIFF8

    MsgBox "Die Datei besitzt das BIFF8-Format."
  ElseIf CheckRecord(varBytes, lngCounter + 2, "8") Then    'RecLength: Hex 8 (bzw. 8 Bytes) bei BIFF5/BIFF7
    MsgBox "Die Datei besitzt das BIFF5/BIFF7-Format."
  End If
End If

To Top

 


Welche Dokumentationen existieren zu BIFF?

Im Jahr 1999 hat Microsoft die Dokumentation des Microsoft Office Binary File Format aus der MSDN genommen. Eine offizielle, öffentlich zugängliche Dokumentation existiert daher nicht mehr.

Microsoft Corporation hat folgenden Hinweis veröffentlicht:

"If you would like to receive this documentation, you can send e-mail to officeff@microsoft.com, or mail to:

  Office File Format Documentation Request
  One Microsoft Way
  Redmond, WA 98052

Requests should contain a detailed description for planned use of this documentation."

To Top


Microsoft Excel 97 Developer's Kit

Die vermutlich beste Literatur ist das Developer's Kit von Microsoft Excel 97:

  "Microsoft Excel 97 Developer's Kit"
  Microsoft Press, ISBN 1-57231-498-2

Es ist die einzige offizielle (d.h. von Microsoft herausgegebene) Dokumentation des BIFF8-Formates, welches von den gängigen Excelversionen verwendet wird. Ausserdem ist es die einzige vollständige Beschreibung überhaupt. Leider ist das Buch vergriffen und wird nicht mehr gedruckt. Über Amazon (www.amazon.com) müsste jedoch ein gebrauchtes Exemplar aufzutreiben sein.

To Top


OpenOffice.org Documentation of the Microsoft Excel File Format

OpenOffice.org (www.OpenOffice.org) hat ebenfalls eine sehr gute Dokumentation herausgegeben, die laufend aktualisiert wird, aber noch nicht vollständig ist:

  "OpenOffice.org's Documentation of the Microsoft Excel File Format"

Es fehlen unter anderem Informationen über AutoFilter, Conditional Formatting, Scenarios, Escher Layer, Stream Encryption und Range Protection. In Bezug auf die Ablage der Daten von Arbeitsblättern und Zellen steht jedoch sehr viel, meistens sogar alles drin.

To Top


Microsoft Excel 97 SDK BIFF Viewer

Im Microsoft Excel 97 SDK (SDK ist die Abkürzung von 'Software Development Kit') ist unter anderem ein Utility namens "BIFF File Viewer" (Version 1.8.0) enthalten, mit dem man Dumps von BIFF-Dateien erstellen und diese in Form einer Baumstruktur ansehen kann. Das Programm ist eigentlich zum Lesen von Excel 5.0 xls-Dateien gedacht, kann jedoch auch eingeschränkt mit anderen Dokumenten benutzt werden, sofern diese im OLE2 Storage-Format gespeichert sind. So funktionieren beispielsweise Word-Dokumente (doc-Dateityp) und PowerPoint-Präsentationen (ppt) recht gut. Zumindest zeigt der BIFF Viewer die verschiedenen Streams und Storages sowie allfällig enthaltene VBA-Projekte. Auch Nicht-Office-Dateien können oft gelesen werden, wie z.B. Reports (rpt), die mit der Software "Crystal Reports" (Hersteller "Crystal Decisions") erstellt wurden, oder Dateien der Management Konsole (msc; Microsoft Management Console), sowie sogar box-Dateien (VBE Toolbox; VBA-Editor Werkzeugsammlung) und pag-Dateien (VBE Toolbox Page; VBA-Editor Werkzeugsammlung-Seite).

Natürlich können nebst Exceldateien der Version 5.0 auch Dateien von Excel 95, Excel 97, Excel 2000, Excel 2002 sowie Excel 2003 praktisch ohne Einschränkung gelesen werden. Mit "praktisch ohne Einschränkung" meine ich, dass es schon mal passieren kann, dass der BIFF Viewer keinen Dump zustande bringt, falls die Exceldatei zu komplex ist. Diese Fälle sind jedoch selten. Die Grösse einer xls-Datei spielt keine Rolle, d.h. auch grössere Dateien können gedumpt werden. Allerdings muss bei derartigen Dateien der BIFF Dump direkt in ein Textfile erfolgen; die Anzeige am Bildschirm ist nicht möglich. Man sollte auch berücksichtigen, dass eine Dump-Datei aufgrund der vielen enthaltenen Informationen wesentlich grösser als die xls-Datei wird. Der Dump einer 2.5 MB Exceldatei kann ohne weiteres 15 MB Speicherplatz auf der Festplatte belegen.

To Top

 


Artikel in der Microsoft Knowledge-Base

How To Determine Which Version of Excel Wrote a Workbook
http://support.microsoft.com/?scid=kb;en-us;225029

How To Determine the Version of a Microsoft Excel Workbook
http://support.microsoft.com/?scid=kb;en-us;178605

How To Distinguish Between Excel 97 and Excel 2000/2002 Files
http://support.microsoft.com/?scid=kb;en-us;269168

Microsoft Excel's Internal Format Table Doc Has Errors
http://support.microsoft.com/?scid=kb;en-us;147942

BIFF8 BOUNDSHEET Record Data for Uncompressed Unicode
http://support.microsoft.com/default.aspx?scid=kb;en-us;187919

BIFF Records Documentation Error in MS Excel 97 Developer's Kit
http://support.microsoft.com/default.aspx?scid=kb;en-us;184647

Excel BIFF8 CONTINUE Record Information Is Incomplete
http://support.microsoft.com/default.aspx?scid=kb;en-us;207475

Excel BIFF8 FORMAT Record Documentation Is Incomplete
http://support.microsoft.com/?kbid=284441

LABEL Doc Error in MS Excel 97 Developer's Kit
http://support.microsoft.com/default.aspx?scid=kb;en-us;195237

XL2002: "Print Cell Errors As" Setting Is Lost When You Open and Save Workbook in Earlier Version
http://support.microsoft.com/?scid=kb;en-us;282406

 

Microsoft Excel 2002: Issues Fixed by the Update: October 4, 2001

Change in Binary File Can Bypass Macro Controls:
An Excel workbook stream can be altered in such a way that the macros in the file will run without prompting a macro warning or being stopped by macro controls.

XL2002: Overview of the Excel 2002 Update: October 4, 2001
http://support.microsoft.com/?scid=kb;EN-US;306606

To Top

 


Links zu weiteren Informationsquellen

Office 97 Resource Kit Chapter 36: Microsoft Excel Architecture
http://www.microsoft.com/office/ork/036/036.htm

Unterhaltsamer Artikel über BIFF von Michael Schwimmer
http://schwimmer.bei.t-online.de/biff.htm

BIFF-Parser von Michael Schwimmer (Download)
http://schwimmer.bei.t-online.de/download/Biff.zip (enthält eine Excel-Arbeitsmappe)

Beschreibung zum BIFF-Dateiformat (Download)
http://195.186.84.74/download/docs/XLS-Format-BIFF8.zip (enthält ein Word-Dokument)
http://195.186.84.74/download/docs/ExcelFileFormatV3.zip (enthält ein PDF-Dokument)
http://195.186.84.74/download/docs/ExcelFileFormatV5.zip (enthält ein PDF-Dokument)

Informationen über die obigen Dateien finden Sie auf der Downloadseite der Website xlam.

Interessanter Artikel zum Thema "Exceldateien lesen und schreiben"
http://www21.brinkster.com/wwwexpert/internet/excel.htm

The Apache Jakarta Project: HSSF
http://jakarta.apache.org/poi/hssf/index.html

Excel Writer
http://excelwriter.softartisans.com/

Chicago Developer Page: BIFF8
http://chicago.sourceforge.net/devel/docs/excel/biff8.html

Microsoft Pocket Excel File Format
http://chicago.sourceforge.net/devel/docs/excel/pkt/index.html

Microsoft Office 97 Drawing File Format (Escher Layer)
http://chicago.sourceforge.net/devel/docs/escher/index.html

Excel File Format Documentation
http://chicago.sourceforge.net/devel/docs/excel/

Apple of Discord: VBA Storage
http://craiu.pcnet.ro/papers/papers/macoffice.html

To Top

 


Tools zum Downloaden

Hier ein paar Tools, die einen Zusammenhang mit dem Thema "BIFF-Dateiformat" besitzen (alphabetische Liste):

BIFF Viewer

BIFF-Dumper

BIFF-Workbench

BIFF8-Parser

EFEX

FileFox

FxEdit

Workbook Font Counter

XLock

XLSFileUsers

 

Alle Tools sind Freeware und können auf der Downloadseite der Website xlam heruntergeladen werden. Dort finden Sie ausserdem ausführliche Produkt-Beschreibungen sowie weitere Programme, Dokumentationen und Musterdateien.

Gehe zur Downloadseite  Hier gehts zur Downloadseite

To Top

 


Dokumentation zum BIFF Viewer von Microsoft

Tipp!
Allgemeine Informationen über den BIFF Viewer finden Sie im Kapitel Microsoft Excel 97 SDK BIFF Viewer.

Der BIFF Viewer

Das Utility "BIFF Viewer" (auch "BIFFView" oder "Microsoft BIFF File Viewer" genannt) ist Bestandteil des Microsoft Excel 97 SDK (SDK ist die Abkürzung von 'Software Development Kit'). Mit diesem Utility kann Dumps von Dateien erstellen, die das BIFF-Dateiformat besitzen. Ein solcher BIFF-Dump kann in Form einer Baumstruktur auf dem Bildschirm angezeigt oder direkt in eine Textdatei gespeichert werden. Die Ausgabe eines Dumps auf dem Bildschirm ist nur bei relativ kleinen Exceldateien möglich.

Natürlich können nebst Exceldateien der Version 5.0 auch Dateien der Versionen Excel 95, Excel 97, Excel 2000 und Excel 2002 praktisch ohne Einschränkung gelesen werden. Mit "praktisch ohne Einschränkung" meine ich, dass es schon mal passieren kann, dass der BIFF Viewer keinen Dump zustande bringt. Dies, wenn die Exceldatei zu komplex ist. Diese Fälle sind jedoch äusserst selten. Die Grösse einer xls-Datei spielt keine Rolle, d.h. auch grössere Dateien können gedumpt werden. Allerdings muss bei derartigen Dateien der BIFF Dump direkt in ein Textfile erfolgen; die Anzeige am Bildschirm ist nicht möglich. Man sollte auch berücksichtigen, dass eine Dump-Datei aufgrund der vielen enthaltenen Informationen wesentlich grösser als die xls-Datei wird. Der Dump einer 2.5 MB Exceldatei kann ohne weiteres 15 MB Speicherplatz auf der Festplatte belegen.

Die Dokumentation zum BIFF Viewer

In Bezug auf Funktionalität ist der BIFF Viewer äusserst sparsam ausgestattet. Man erkennt auf den ersten Blick, dass das Tool nur einen einzigen Zweck besitzt, nämlich das Generieren von BIFF-Dumps. Da es von Herstellerseite (sprich Microsoft Corporation) keine Anleitung zum BIFF Viewer gibt, habe ich selbst eine umfassende Dokumentation verfasst. Die Benutzung der Programmfunktionen ist zwar nicht sonderlich schwierig. Doch es gibt ein paar Programmfehler, Probleme und Spezialitäten, deren Kenntnis von Vorteil wäre. Zudem ist in der Dokumentation beschrieben, welche Informationen ein BIFF-Dump enthält, was man damit anfangen kann, wie man einen Dump analysiert und vieles mehr.

Die Dokumentation mit dem Titel "BIFF-Viewer User's Guide" kann auf der Downloadseite der Website xlam heruntergeladen werden:

Gehe zur Downloadseite  Hier gehts zur Downloadseite

To Top

Haben Sie Fragen, Anregungen oder Hinweise?
Mail senden an: philipp.von.wartburg@bluewin.ch

Zuletzt aktualisiert am 23.04.2005 / 16:30 Uhr
© 2002-2005 by Philipp von Wartburg, CH-8916 Jonen
Alle Rechte vorbehalten