Grundlegendes zum Binärdateiformat Excel MS-XLS (maschinell übersetzt)

Wichtig

Dieser Artikel wurde maschinell übersetzt. Bitte beachten Sie den Haftungsausschluss. Die englische Version des Artikels ist als Referenz hier verfügbar: here.

Zusammenfassung: Sie erfahren mehr über das Binärdateiformat MS-XLS, das in früheren Produktversionen von Microsoft Excel verwendet wurde. In diesem Artikel werden auch die grundlegenden Strukturen und zentralen Konzepte für die programmgesteuerte Interaktion mit diesem Dateiformat beschrieben.

Letzte Änderung: Donnerstag, 23. Juni 2011

Gilt für: Excel | Excel 2010 | Office 2007 | Office 2010 | SharePoint Server 2010 | VBA

Inhalt dieses Artikels
Übersicht über MS-XLS-Binärdateiformat
Schlussbemerkung
Weitere Ressourcen

Veröffentlicht:   Februar 2011 | Zur Verfügung gestellt von:   Microsoft Corporation

Inhalt

  • Übersicht über MS-XLS-Binärdateiformat

  • Hauptkomponenten von MS-XLS-Datei-Format

  • Extrahieren von Daten aus Excel-Dateien

  • Schlussbemerkung

  • Weitere Ressourcen

Dieser Artikel beschreibt die Strukturen und einige Verfahren zum Arbeiten mit MS-XLS-Dateien. Es ist der Teil einer Serie von Artikeln, die die binären Dateiformaten wird von Microsoft Office Produkten vorstellen. Diese Artikel sollen verwendet werden, zusammen mit den Office File Format Documents auf MSDN verfügbar.

Übersicht über MS-XLS-Binärdateiformat

Das MS-XLS-Binärdateiformat wird von Microsoft OfficeExcel verwendet 2003, Microsoft Excel 2002, Microsoft Excel 2000, und Microsoft Excel 97. Das Format ist in Streams und einen organisiert. Jedes Arbeitsblatt Kalkulationstabelle wird in einer eigenen Unterdatenstrom gespeichert. Alle Daten sind in Datensätze, die die Kopfzeilen, wurden die Datensatztyp und Länge geben. Zelle-Datensätze, die die tatsächlichen Zellendaten sowie die Formeln enthalten, und Eigenschaften der Zelle, befinden sich in der Tabellenzelle. Werte vom Typ String werden nicht gespeichert, in der Zelle-Datensatz, aber in einer freigegebenen Zeichenfolgen-Tabelle, die Zelle-Datensatz verweist. Zeile Datensätze enthalten Eigenschafteninformationen für Zeilen- und Zellenebene Speicherorte. Nur Zellen, die Daten oder individueller Formatierung enthalten sind in der Unterdatenstrom gespeichert.

Microsoft Office Excel 2007 verwendet die MS-XLSB binary file format. Dieses Format ähnelt dem MS-XLS, aber nicht ausdrücklich in diesem Artikel beschrieben wird.

Hauptkomponenten von MS-XLS-Datei-Format

Das MS-XLS-Dateiformat enthält Streams, einen und records. Alle Datensätze in einem MS-XLS-Dokument beginnen mit einer 2-Byte-Ganzzahl ohne Vorzeichen Eintragstyp und ein weiteres für Datensatzgröße angeben. Ein Datensatz kann nicht 8224 Byte nicht überschreiten. Wenn die Daten des Datensatzes angewendet wird, die größer ist, wird der Rest in einem oder mehreren continue records gespeichert.

Dies sind die wichtigsten Streams, die einen und die Datensätze in einer MS-XLS-Format-Datei.

  • Workbook-stream

    Der Workbook-Stream ist der primäre Stream in eine XLS-Datei. Er enthält mehrere einen, von die jedes mit einem Datensatz Anfang der Datei (BOF) beginnt und endet mit einem Datensatz Dateiende (EOF). Der erste Datenstrom ist immer die Globals-Unterdatenstrom, und der Rest sind sheet einen. Dazu gehören Tabellenblätter, Makroblätter, Diagrammblätter, Dialogblätter und VBA-Modul-Blätter.

  • Globals-Unterdatenstrom

    Globals-Unterdatenstrom gibt die globalen Eigenschaften und Daten in einer Arbeitsmappe. Er enthält außerdem einen BoundSheet8-Datensatz für jede Unterdatenstrom im Stream Workbook.

    • BoundSheet8-Datensatz

      Ein BoundSheet8-Datensatz enthält Informationen über ein Unterdatenstrom Blatt. Dazu gehören Name, Position, Art und Sichtbarkeit. Die ersten 4 Bytes des Datensatzes, gibt der FilePointer lbPlyPos die Position im Stream Workbook, in dem das Blatt Unterdatenstrom beginnt.

  • Worksheet-Unterdatenstrom

    Worksheet-Unterdatenstrom gibt ein Blatt in einer Arbeitsmappe.

    • Cell Table

      In der Zellentabelle ist der Teil eines Blatt-Streams, wo Zellen gespeichert werden. Es enthält eine Reihe von Blöcken, Zeile, von denen jeder hat eine Kapazität von 32 Zeilen von Zellen und sequenziell aufgefüllt werden. Jeder Zeile-Block beginnt mit einer Reihe von Datensätzen für Row , gefolgt von der Zellen, die in den Zeilen zu wechseln und endet mit einem DBCell-Datensatz das Start-Offset der ersten Zelle jeder Zeile im Block zu erhalten.

    • Row-Datensatz

      Ein Row-Datensatz definiert eine Zeile in einem Blatt. Dies ist eine komplexe Struktur, aber nur die ersten 6 Byte für einfachen Abruf von Inhalten erforderlich sind. Diese Elemente ermöglichen den Zeilenindex und den Spalten von Zellen in der ersten und letzten Zellen, die Daten oder eindeutigen Formatierungen in der Zeile enthalten.

    • Zellen

      Alle Zellen in einer Zeile Block werden nach der letzten Zeile im Block gespeichert. Es gibt sieben Arten von Datensätzen, die tatsächliche Zellen in einem Arbeitsblatt darstellen. Die meisten Zelle Datensätze beginnen mit einer 6-Byte-Cell-Struktur. Die ersten 2 dieser Bytes geben die Zeile, die nächsten 2 Bytes Geben Sie die Spalte und die letzten 2 Bytes angeben eines XF-Datensatzes in der Globals-Unterdatenstrom, die Formatierungsinformationen enthält.

      Die folgenden Einträge stellen die verschiedenen Arten von Zellen dar. Sofern nicht anders angegeben, die ersten 6 Bytes sind belegt durch die Struktur der Zelle, und die verbleibenden Bytes enthalten den Wert.

      • Blank Zelle Datensatz

        Ein Blank Zelle Datensatz gibt eine leere Zelle, die keine Formel oder Wert hat. Dieser Datensatztyp wird nur für Zellen verwendet, die enthalten Formatierungstools; Andernfalls werden leere Zellen in MulBlank Datensätze oder gar nicht gespeichert.

      • RK Zelle Datensatz

        Ein RK Zelle Datensatz enthält eine 32-Bit-Zahl. Excel konvertiert automatisch die Zahlen, die in 32 Bits dargestellt oder weniger in dieses Format für die Speicherung als eine Möglichkeit, die Dateigröße reduziert werden können. Statt einer Zelle 6-Byte-Struktur die ersten 2 Bytes geben die Zeile, und geben Sie die Spalte der zweiten 2 Bytes. Die verbleibenden 6 Bytes definieren die Anzahl in einer RkRec-Struktur für die Optimierung der Festplatten- und Arbeitsspeicher.

      • BoolErr Zelle Datensatz

        Ein BoolErr-Zelle-Datensatz enthält eine 2-Byte-Bes-Struktur, die einen booleschen Wert oder einen Fehlercode.

      • Number Zelle Datensatz

        Ein Number-Zelle-Datensatz enthält eine 64-Bit-Gleitkommazahl.

      • LabelSst Zelle Datensatz

        Ein LabelSst-Zelle-Datensatz enthält eine 4-Byte-Ganzzahl, die eine Zeichenfolge in der freigegebenen Zeichenfolgen Tabelle (SST) angibt. Genauer gesagt entspricht die ganze Zahl der Array-Index im Feld "RGB" die SST.

      • Formula Zelle Datensatz

        Ein Formula Zelle-Datensatz enthält die Formel und die resultierenden Daten. Der Wert in der Zelle angezeigt wird in einer FormulaValue-Struktur in der 8 Byte definiert, die die Zelle Struktur folgen. Die nächsten 6 Bytes ignoriert werden kann, und der Rest des Datensatzes ist eine CellParsedFormula-Struktur, die die Formel selbst enthält.

      • MulBlank-Datensatz

        Ein MulBlank-Datensatz gibt eine Reihe von leeren Zellen in einer Zeile.

        Die ersten 2 Bytes geben die Zeile, und die nächsten 2 Bytes geben die Spalte, der an die Reihe von Leerzeichen beginnt. Als Nächstes ein variabler Länge-Array von cell Strukturen folgt Formatierungsinformationen zu speichern und die letzten 2 Bytes anzeigen nach welcher Spalte die Reihe von Leerzeichen endet auf.

      • MulRK-Datensatz

        Ein MulRk-Datensatz ist, wie z. B. eine MulBlank-Datensatz, aber anstelle von leeren Zellen, ein MulRk-Datensatz besteht aus RK Daten in RkRec-Strukturen.

    • Shared String Table (SST)

      Freigegebene Zeichenfolge Tabelle (SST) enthält alle Zeichenfolgenwerte in der Arbeitsmappe. Diese Werte werden im Arbeitsblatt LabelSst Zelle Datensätze verweist. Die ersten 8 Bytes des SST geben die Anzahl der Verweise auf Zeichenfolgen in der Arbeitsmappe und die Anzahl der eindeutigen Zeichenfolgenwerte in die SST. Der Rest ist ein Array von XLUnicodeRichExtendedString-Strukturen, die Zeichenfolgen selbst als Vektoren von Zeichen enthalten. 16-Bit dieser Struktur gibt an, ob die Zeichen 1 Byte oder 2 Bytes sind. Sie können die SST-Struktur und die XLUnicodeRichExtendedString-Struktur erweitern, indem Sie Continue Datensätze verwenden, wenn die Anzahl oder die Länge des Strings ihre Grenzen überschreiten.

Extrahieren von Daten aus Excel-Dateien

Alle MS-XLS-Format-Datei-Inhalt lebt in das Blatt einen. Obwohl jedes Blatt Unterdatenstrom wahllos geladen werden konnte, erhalten Sie mehr Kontrolle und Effizienz mithilfe der BoundSheet8-Datensätze um nur die Blätter zu suchen, die Sie lesen möchten. Das folgende Verfahren veranschaulicht, wie alle Daten aus einem Arbeitsblatt zugreifen.

Hinweis

Analyse von Formeln und Informationen über die Formatierung ist nicht zum Gegenstand dieses Artikels.

Lesen Sie den Inhalt eines Excel-Arbeitsblattes

  1. Erstellen Sie eine interne Datenstruktur, die den Inhalt des Tabellenblatts enthalten soll.

  2. Definieren Sie die Objekte, die jeweils acht Zelle Datensatztypen im Speicher darstellen.

  3. Öffnen Sie die Workbook-Stream und Scan nach der ersten Instanz eines BOF-Datensatzes. Dies ist der Anfang des Globals-Unterdatenstrom.

  4. Lesen Sie die Globals-Unterdatenstrom, BoundSheet8-Datensätze und die SST in den Speicher geladen. Weitere Einzelheiten hierzu finden Sie unter Globals.

  5. Aus dem BoundSheet8-Datensatz, der den Unterdatenstrom, die Sie öffnen entspricht, lesen Sie die ersten 4 Bytes möchten, die lbPlyPos-FilePointer enthält.

  6. Fahren Sie mit der Offset in den Stream durch den lbPlyPos FilePointer angegeben. Dies ist der BOF-Datensatz für das Arbeitsblatt.

  7. Lesen Sie den nächsten Datensatz in der Unterdatenstrom, die den Index-Datensatz ist, und Laden Sie das Array von Zeigern, das um 16 Byte mit der Index-Datensatz beginnt. Jeder Zeiger verweist auf die Position im Stream eines DBCell-Datensatzes.

  8. Für jeden Zeiger im Array:

    • Lesen Sie den entsprechende DBCell-Datensatz.

    • Wechseln Sie zu der durch die Installationsparameter Bytes des Datensatzes DBCell angegebenen Offset und in den Speicher gelesen aller Datensätze Zelle, zu diesem Zeitpunkt beginnt und endet mit dem letzten Byte vor der DBCell.

    • Kopieren Sie die Zelle-Datensätze auf die Objekte, die Sie in Ihrer internen Datenstruktur nach Datensatztyp definiert.

    • Die Zellendaten analysieren.

Schlussbemerkung

Dies ist nur eine Probenahme von MS-XLS-Dateiformat. Mithilfe der Tools, die in diesem Artikel bereitgestellt werden, sollte die einfache Datenwiederherstellung in Ihrer Reichweite. Mit befassen können Sie beginnen, Formeln, Formatierung und andere Metadaten wiederherzustellen. Und schließlich sogar Leseoperationen möglich zu speichern.

Weitere Ressourcen

Weitere Informationen finden Sie in den folgenden Ressourcen:

Hinweis

Haftungsausschluss für maschinelle Übersetzungen: Dieser Artikel wurde mithilfe eines Computersystems und ohne jegliche Bearbeitung durch Personen übersetzt. Microsoft bietet solche maschinellen Übersetzungen als Hilfestellung für Benutzer ohne Englischkenntnisse an, damit Sie von den Informationen zu Produkten, Diensten und Technologien von Microsoft profitieren können. Da es sich bei diesem Artikel um eine maschinelle Übersetzung handelt, enthält er möglicherweise Fehler in Bezug auf (Fach-)Terminologie, Syntax und/oder Grammatik.