Freigeben über


Lesen von Excel-Dateien

Von Bedeutung

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

Sie können Excel-Dateien mithilfe der integrierten Unterstützung des Excel-Dateiformats für Batch- und Streamingworkloads 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. Siehe Hochladen von Dateien in Azure Databricks.
  • 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 das automatische Laden für strukturiertes 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 zum Erstellen oder Ändern von Tabellen verwenden, um Tabellen aus Excel-Dateien zu erstellen. Beginnen Sie, indem Sie eine Excel-Datei hochladen oder eine Excel-Datei aus einem Volume oder einem externen Speicherort auswählen. 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.

Abfragen von Excel-Dateien

Sie können Ihre Excel-Dateien mit Spark-Batch-APIs (spark.read) und Streaming (spark.readstream)-APIs 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 operation Option auf listSheets setzen.

Excel-Analyseoptionen

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

Datenquellenoption Description
dataAddress Die Adresse des Zellbereichs, der in der 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": Reads only cell A1 from Sheet1.
  • "Sheet1": Liest alle Daten aus Sheet1.
  • "'My Sheet!?>'!D5:G10": Liest D5 bis G10 von My Sheet!?>. Umschließen Sie den Blattnamen mit '.
headerRows Die Anzahl der ersten Zeilen in der Excel-Datei, die als Kopfzeilenzeilen 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 Individuelle Formatzeichenfolge für einen Zeitstempel (als Zeichenfolge in Excel gespeichert) ohne Zeitzone, die dem Datumszeitmusterformat 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 von Excel-Dateien mithilfe des integrierten Connectors Lakeflow Connect.

Excel-Dateien mit Spark-Batch lesen

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 von Excel-Dateien mit SQL

Sie können die read_files Tabellenwertfunktion verwenden, um Excel-Dateien direkt mithilfe von SQL aufzunehmen. 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 mit automatischem Ladeprogramm

Sie können Excel-Dateien mithilfe von Auto Loader streamen, indem Sie die Einstellung cloudFiles.format auf excel setzen. 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>)

Importieren von Excel-Dateien 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 dataAddress Optionen 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 listSheets Vorgangs 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

  • 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, aber Schemaevolution nicht. 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 vor. 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 in die untere rechte nicht leere Zelle. 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 Erfassung von Excel in Auto Loader- und Streamingaufträgen verwenden?

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

Wird kennwortgeschütztes Excel unterstützt?

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