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.
-
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.
-
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
Erstellen Sie eine interne Datenstruktur, die den Inhalt des Tabellenblatts enthalten soll.
Definieren Sie die Objekte, die jeweils acht Zelle Datensatztypen im Speicher darstellen.
Öffnen Sie die Workbook-Stream und Scan nach der ersten Instanz eines BOF-Datensatzes. Dies ist der Anfang des Globals-Unterdatenstrom.
Lesen Sie die Globals-Unterdatenstrom, BoundSheet8-Datensätze und die SST in den Speicher geladen. Weitere Einzelheiten hierzu finden Sie unter Globals.
Aus dem BoundSheet8-Datensatz, der den Unterdatenstrom, die Sie öffnen entspricht, lesen Sie die ersten 4 Bytes möchten, die lbPlyPos-FilePointer enthält.
Fahren Sie mit der Offset in den Stream durch den lbPlyPos FilePointer angegeben. Dies ist der BOF-Datensatz für das Arbeitsblatt.
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.
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.