Freigeben über


Lesen Excel Dateien

Von Bedeutung

Dieses Feature befindet sich in der Betaversion. Arbeitsbereichsadministratoren können den Zugriff auf dieses Feature über die Vorschauseite steuern. Siehe Manage Azure Databricks Previews.

Sie können Excel Dateien für Batch- und Streamingworkloads mithilfe integrierter Excel Dateiformatunterstützung aufnehmen, analysieren und abfragen. Es leitet automatisch Schema- und Datentypen ab, ohne dass externe Bibliotheken oder manuelle Dateikonvertierungen erforderlich sind. Dieses Feature bietet eine nahtlose Aufnahme von lokalen Uploads und Cloudspeicher.

Wichtigste Funktionen

  • Lesen Sie .xls- und .xlsx-Dateien direkt mit Databricks SQL- und Spark-APIs.
  • Laden Sie .xls und .xlsx Dateien direkt mithilfe der Benutzeroberfläche 'Daten hinzufügen' hoch. Weitere Informationen finden Sie unter Erstellen oder Ändern einer Tabelle mithilfe des Dateiuploads.
  • Lesen Sie ein beliebiges Blatt aus einer Mehrblattdatei.
  • Geben Sie genaue Zellgrenzen oder Bereiche an.
  • Automatisches Ableiten von Schema, Headern und Datentypen.
  • Ausgewertete Formeln aufnehmen.
  • Verwenden Sie "Auto Loader" zum strukturierten Streamen von Excel Dateien.

Voraussetzungen

Databricks Runtime 17.1 oder höher.

Erstellen oder Ändern einer Tabelle in der Benutzeroberfläche

Sie können die Benutzeroberfläche Create or modify table verwenden, um Tabellen aus Excel Dateien zu erstellen. Beginnen Sie mit Uploading einer Excel Datei oder Auswahl einer Excel Datei von einem Volume oder einem externen Speicherort. Wählen Sie das Blatt aus, passen Sie die Anzahl der Kopfzeilen an, und geben Sie optional einen Zellbereich an. Die Benutzeroberfläche unterstützt das Erstellen einer einzelnen Tabelle aus der ausgewählten Datei und dem ausgewählten Blatt.

Abfrage von Excel-Dateien

Sie können Ihre Excel Dateien mithilfe von Spark-Batch-APIs (spark.read) und Streaming -APIs (spark.readstream) abfragen. Sie können das Schema automatisch ableiten oder Ihr eigenes Schema angeben, um die Excel Dateien zu analysieren. Standardmäßig liest der Parser alle Zellen, die von der oberen linken Zelle bis zur unteren rechten nicht leeren Zelle im ersten Blatt beginnen. Verwenden Sie die dataAddress Option, um ein anderes Blatt oder einen anderen Zellbereich zu lesen.

Sie können die Liste der Blätter in einer Excel Datei abfragen, indem Sie die Option operation auf listSheets festlegen.

Excel Analyseoptionen

Die folgenden Optionen stehen zum Analysieren Excel Dateien zur Verfügung:

Datenquellenoption Description
dataAddress Die Adresse des Zellbereichs, der in Excel-Syntax gelesen werden soll. Wenn nicht angegeben, liest der Parser alle gültigen Zellen aus dem ersten Blatt.
  • "" oder ausgelassen: Liest alle Daten aus dem ersten Blatt.
  • "MySheet!C5:H10": Liest den Bereich C5H10 aus dem Blatt mit dem Namen MySheet.
  • "C5:H10": Liest den Bereich C5H10 vom ersten Blatt aus.
  • "Sheet1!A1:A1": Liest nur Zelle A1 aus Sheet1.
  • "Sheet1": Liest alle Daten aus Sheet1.
  • "My Sheet!?>!D5:G10": Liest D5 bis G10 von My Sheet!?>.
headerRows Die Anzahl der Anfangszeilen in der Excel-Datei, die als Kopfzeilen behandelt und als Spaltennamen gelesen werden sollen. Wenn dataAddress angegeben, headerRows gilt für die Kopfzeilen innerhalb dieses Zellbereichs. Unterstützte Werte sind 0 und 1. Der Standardwert ist 0, in diesem Fall werden Spaltennamen automatisch generiert, indem die Spaltennummer an _c angefügt wird (z. B.: _c1, _c2, _c3...).
Beispiele
  • dataAddress: "A2:D5", headerRows: "0": Leitet Spaltennamen als _c1..._c4ab. Liest die erste Datenzeile aus Zeile 2: A2 bis D2.
  • dataAddress: "A2:D5", headerRows: "1": Legt Spaltennamen als Zellwerte in Zeile 2 fest: A2 auf D2. Liest die erste Datenzeile von Zeile 3: A3 bis D3.
operation Gibt den Vorgang an, der für die Excel Arbeitsmappe ausgeführt werden soll. Der Standardwert ist readSheet, der Daten aus einem Blatt liest. Der andere unterstützte Vorgang ist listSheets, der die Liste der Blätter in der Arbeitsmappe zurückgibt. Für den listSheets Vorgang ist das zurückgegebene Schema ein struct mit den folgenden Feldern:
  • sheetIndex: lang
  • sheetName: Zeichenfolge
timestampNTZFormat Benutzerdefinierte Formatzeichenfolge für einen Zeitstempelwert (als Zeichenfolge in Excel gespeichert) ohne Zeitzone, die dem Datetime-Musterformat folgt. Dies gilt für Zeichenfolgenwerte, die als TimestampNTZTypegelesen werden. Standardwert: yyyy-MM-dd'T'HH:mm:ss[.SSS].
dateFormat Benutzerdefinierte Datumsformatzeichenfolge, die dem Datetime-Musterformat folgt. Dies gilt für Zeichenfolgenwerte, die als Dategelesen werden. Standardwert: yyyy-MM-dd.

Examples

Hier finden Sie Codebeispiele zum Lesen Excel Dateien mithilfe des integrierten Connectors Lakeflow Connect.

Lesen Sie die Excel-Dateien mittels eines Spark-Batch-Lesevorgangs.

Sie können eine Excel Datei aus dem Cloudspeicher (z. B. S3, ADLS) mithilfe von spark.read.excel lesen. Beispiel:

# Read the first sheet from a single Excel file or from multiple Excel files in a directory
df = (spark.read.excel(<path to excel directory or file>))

# Infer schema field name from the header row
df = (spark.read
       .option("headerRows", 1)
       .excel(<path to excel directory or file>))

# Read a specific sheet and range
df = (spark.read
       .option("headerRows", 1)
       .option("dataAddress", "Sheet1!A1:E10")
       .excel(<path to excel directory or file>))

Lesen Excel Dateien mit SQL

Sie können die Tabellenwertfunktion read_files verwenden, um Excel-Dateien direkt mithilfe von SQL zu importieren. Beispiel:

-- Read an entire Excel file
CREATE TABLE my_table AS
SELECT * FROM read_files(
  "<path to excel directory or file>",
  schemaEvolutionMode => "none"
);

-- Read a specific sheet and range
CREATE TABLE my_sheet_table AS
SELECT * FROM read_files(
  "<path to excel directory or file>",
  format => "excel",
  headerRows => 1,
  dataAddress => "Sheet1!A2:D10",
  schemaEvolutionMode => "none"
);

Streamen von Excel-Dateien mithilfe des Auto-Loaders

Sie können Excel Dateien mithilfe des automatischen Ladeprogramms streamen, indem Sie cloudFiles.format auf excel festlegen. Beispiel:

df = (
  spark
    .readStream
    .format("cloudFiles")
    .option("cloudFiles.format", "excel")
    .option("cloudFiles.inferColumnTypes", True)
    .option("headerRows", 1)
    .option("cloudFiles.schemaLocation", "<path to schema location dir>")
    .option("cloudFiles.schemaEvolutionMode", "none")
    .load(<path to excel directory or file>)
)
df.writeStream
  .format("delta")
  .option("mergeSchema", "true")
  .option("checkpointLocation", "<path to checkpoint location dir>")
  .table(<table name>)

Excel-Dateien importieren mithilfe von COPY INTO

CREATE TABLE IF NOT EXISTS excel_demo_table;

COPY INTO excel_demo_table
FROM "<path to excel directory or file>"
FILEFORMAT = EXCEL
FORMAT_OPTIONS ('mergeSchema' = 'true')
COPY_OPTIONS ('mergeSchema' = 'true');

Analysieren komplexer nicht strukturierter Excel Blätter

Für komplexe, nicht strukturierte Excel Blätter (z. B. mehrere Tabellen pro Blatt, Dateninseln) empfiehlt Databricks, die Zellbereiche zu extrahieren, die Sie zum Erstellen Von Spark DataFrames mit den Optionen dataAddress benötigen. Beispiel:

df = (spark.read.format("excel")
       .option("headerRows", 1)
       .option("dataAddress", "Sheet1!A1:E10")
       .load(<path to excel directory or file>))

Blätter auflisten

Sie können die Blätter in einer Excel Datei mithilfe des Vorgangs listSheets auflisten. Das zurückgegebene Schema ist ein struct Mit den folgenden Feldern:

  • sheetIndex: lang
  • sheetName: Zeichenfolge

Beispiel:

Python

# List the name of the Sheets in an Excel file
df = (spark.read.format("excel")
       .option("operation", "listSheets")
       .load(<path to excel directory or file>))

SQL

SELECT * FROM read_files("<path to excel directory or file>",
  schemaEvolutionMode => "none",
  operation => "listSheets"
)

Einschränkungen

  • Das Schreiben von DataFrames in Excel Format wird nicht unterstützt. Sie können Daten in andere Formate wie CSV oder Parkett exportieren.
  • Kennwortgeschützte Dateien werden nicht unterstützt.
  • Es wird nur eine Kopfzeile unterstützt.
  • Zusammengeführte Zellwerte füllen nur die obere linke Zelle auf. Verbleibende untergeordnete Zellen werden auf NULL gesetzt.
  • Das Streamen von Excel-Dateien mit Auto Loader wird unterstützt, jedoch nicht die Schemaanpassung. Sie müssen schemaEvolutionMode="None" explizit festlegen.
  • "Strict Open XML Spreadsheet (Strict OOXML)" wird nicht unterstützt.
  • Die Makroausführung in .xlsm Dateien wird nicht unterstützt.
  • Die Option ignoreCorruptFiles wird nicht unterstützt.

Häufig gestellte Fragen

Hier finden Sie Antworten auf häufig gestellte Fragen zum Excel Connector in Lakeflow Connect.

Kann ich alle Blätter gleichzeitig lesen?

Der Parser liest jeweils nur ein Blatt aus einer Excel Datei. Standardmäßig liest es das erste Blatt. Sie können ein anderes Blatt mithilfe der dataAddress Option angeben. Um mehrere Blätter zu verarbeiten, rufen Sie zuerst die Liste der Blätter ab, indem Sie die operation Option auf listSheetsfestlegen, dann die Blattnamen durchlaufen und die einzelnen Blätter lesen, indem Sie ihren Namen in der dataAddress Option angeben.

Kann ich Excel Dateien mit komplexen Layouts oder mehreren Tabellen pro Blatt aufnehmen?

Standardmäßig liest der Parser alle Excel Zellen aus der oberen linken Zelle bis zur nicht leeren Zelle unten rechts. Sie können einen anderen Zellbereich mithilfe der dataAddress Option angeben.

Wie werden Formeln und verbundene Zellen behandelt?

Formeln werden als berechnete Werte aufgenommen. Bei verbundenen Zellen wird nur der obere linke Wert beibehalten (untergeordnete Zellen sind NULL).

Kann ich die Excel-Datenaufnahme in Auto Loader- und Streaming-Aufträgen verwenden?

Ja, Sie können Excel Dateien mithilfe von cloudFiles.format = "excel" streamen. Die Schemaentwicklung wird jedoch nicht unterstützt, daher müssen Sie "schemaEvolutionMode" auf "None" festlegen.

Kann ich DataFrames in Excel Format schreiben?

Nein. Der integrierte Excel Connector unterstützt nur das Lesen. Verwenden Sie zum Exportieren von Daten ein unterstütztes Schreibformat wie CSV oder Parkett.

Wird kennwortgeschütztes Excel unterstützt?

Nein. Wenn diese Funktionalität für Ihre Workflows wichtig ist, wenden Sie sich an Ihren Databricks-Kontovertreter.