Excel in Tabelle (Konvertierung)

Zusammenfassung

Konvertiert Microsoft Excel-Dateien in eine Tabelle.

Verwendung

  • Excel-Arbeitsmappen (.xlsx) und Excel 5.0/95-Arbeitsmappenformate (.xls) werden als Eingabe unterstützt.

  • Der Datentyp des Ausgabefeldes basiert auf den Werten und der Zellenformatierung in der Eingabespalte. Die Datentypen der Ausgabefelder sind "Double", "Long Integer", "Text" und "Datum". Wenn eine Eingabespalte mehrere Daten- oder Formatierungstypen enthält, ist das Ausgabefeld vom Typ "Text".

  • Der Wert "#N/A" in einer Excel-Eingabezelle wird in NULL konvertiert. Wenn das Format der Ausgabetabelle (zum Beispiel einer dBASE-Tabelle) den Wert NULL nicht unterstützt, wird ein anderer Wert (0 für ganzzahlige Felder oder eine leere Zeichenfolge für Textfelder) verwendet.

Parameter

BeschriftungErläuterungDatentyp
Eingabe-Excel-Datei

Die zu konvertierende Excel-Datei.

File
Ausgabetabelle

Dies ist die Ausgabetabelle.

Table
Tabellenblatt
(optional)

Der Name des Tabellenblatts in der zu importierenden Excel-Datei. Falls keine Angabe erfolgt ist, wird das erste Tabellenblatt in der Arbeitsmappe verwendet.

String
Zeile, die als Feldnamen verwendet werden soll
(optional)

Die Zeile in der Excel-Tabelle, in der die Werte, die als Feldnamen verwendet werden sollen, enthalten sind. Der Standardwert ist 1.

Die angegebene Zeile wird beim Konvertieren der Datensätze in die Ausgabetabelle übersprungen.

Um zu verhindern, dass Werte einer Zeile als Feldnamen verwendet werden, legen Sie diesen Parameter auf 0 fest. Dadurch erhalten die Ausgabefelder ihren Namen unter Verwendung des Spaltenbuchstabens (zum Beispiel: COL_A, COL_B, COL_C).

Wenn eine Zelle in einer bestimmten Spalte leer ist, basiert der Ausgabefeldname auf dem Spaltenbuchstaben. Wenn zum Beispiel die Eingabe drei Spalten enthält und die Zeile die Werte "city", "" und "country" in den Spalten A, B bzw. C enthält, dann erhalten die Felder der Ausgabetabelle die folgenden Namen: city, COL_B und country.

Long
Zellenbereich
(optional)

Der zu berücksichtigende Zellenbereich.

Eine Zelle ist der Schnittpunkt einer Zeile und einer Spalte. Spalten werden mit Buchstaben (A, B, C, D) und Zeilen mit Zahlen (1, 2, 3, 4) angegeben. Die Adresse jeder Zelle basiert auf ihrer Spalte und ihrer Zeile. Zum Beispiel ist die Zelle B9 der Schnittpunkt aus Spalte B und Zeile 9.

Ein Zellenbereich definiert ein Rechteck unter Angabe der Zelle links oben und der Zelle rechts unten, die durch einen Doppelpunkt (:) getrennt werden. Zellenbereiche sind einschließlich, das heißt, der Bereich A2:C10 beinhaltet alle Werte in den Spalten A bis C und alle Werte in den Zeilen 2 bis 10.

Die Ausgabefeldnamen werden ungeachtet der Zeilen, die im Zellenbereich angegeben sind, von den Zellenwerten in Zeile 1 abgeleitet. Wenn zum Beispiel B2:D10 als Zellenbereich angegeben wurde, basieren die Feldnamen auf den Werten in den Zellen B1, C1 und D1.

Nachfolgend finden Sie Beispiele für gültige Zellenbereiche:

  • A2:C10: Zellenbereich mit den Werten in den Spalten A bis C der Zeilen 2 bis 10
  • B3:B40: Zellenbereich mit den Werten in Spalte B der Zeilen 3 bis 40
  • D5:X5: Zellenbereich mit den Werten in den Spalten D bis X der Zeile 5
  • E200:ALM20000: Zellenbereich mit den Werten in den Spalten E bis ALM (die 1000. Spalte) der Zeilen 200 bis 20000

Nachfolgend finden Sie Beispiele für ungültige Zellenbereiche:

  • A20:C10: Die erste Zelle darf nicht weiter unten liegen (eine größere Zeilennummer haben) als die zweite Zelle.
  • Z3:B5: Die erste Zelle darf nicht weiter rechts liegen (einen größeren Spaltenbuchstaben haben) als die zweite Zelle.
  • A5:G: Beide Zellen müssen eine gültige Zellenkennung besitzen, das heißt, einen Buchstaben und eine Zahl.

String

arcpy.conversion.ExcelToTable(Input_Excel_File, Output_Table, {Sheet}, {field_names_row}, {cell_range})
NameErläuterungDatentyp
Input_Excel_File

Die zu konvertierende Excel-Datei.

File
Output_Table

Dies ist die Ausgabetabelle.

Table
Sheet
(optional)

Der Name des Tabellenblatts in der zu importierenden Excel-Datei. Falls keine Angabe erfolgt ist, wird das erste Tabellenblatt in der Arbeitsmappe verwendet.

String
field_names_row
(optional)

Die Zeile in der Excel-Tabelle, in der die Werte, die als Feldnamen verwendet werden sollen, enthalten sind. Der Standardwert ist 1.

Die angegebene Zeile wird beim Konvertieren der Datensätze in die Ausgabetabelle übersprungen.

Um zu verhindern, dass Werte einer Zeile als Feldnamen verwendet werden, legen Sie diesen Parameter auf 0 fest. Dadurch erhalten die Ausgabefelder ihren Namen unter Verwendung des Spaltenbuchstabens (zum Beispiel: COL_A, COL_B, COL_C).

Wenn eine Zelle in einer bestimmten Spalte leer ist, basiert der Ausgabefeldname auf dem Spaltenbuchstaben. Wenn zum Beispiel die Eingabe drei Spalten enthält und die Zeile die Werte "city", "" und "country" in den Spalten A, B bzw. C enthält, dann erhalten die Felder der Ausgabetabelle die folgenden Namen: city, COL_B und country.

Long
cell_range
(optional)

Der zu berücksichtigende Zellenbereich.

Eine Zelle ist der Schnittpunkt einer Zeile und einer Spalte. Spalten werden mit Buchstaben (A, B, C, D) und Zeilen mit Zahlen (1, 2, 3, 4) angegeben. Die Adresse jeder Zelle basiert auf ihrer Spalte und ihrer Zeile. Zum Beispiel ist die Zelle B9 der Schnittpunkt aus Spalte B und Zeile 9.

Ein Zellenbereich definiert ein Rechteck unter Angabe der Zelle links oben und der Zelle rechts unten, die durch einen Doppelpunkt (:) getrennt werden. Zellenbereiche sind einschließlich, das heißt, der Bereich A2:C10 beinhaltet alle Werte in den Spalten A bis C und alle Werte in den Zeilen 2 bis 10.

Die Ausgabefeldnamen werden ungeachtet der Zeilen, die im Zellenbereich angegeben sind, von den Zellenwerten in Zeile 1 abgeleitet. Wenn zum Beispiel B2:D10 als Zellenbereich angegeben wurde, basieren die Feldnamen auf den Werten in den Zellen B1, C1 und D1.

Nachfolgend finden Sie Beispiele für gültige Zellenbereiche:

  • A2:C10: Zellenbereich mit den Werten in den Spalten A bis C der Zeilen 2 bis 10
  • B3:B40: Zellenbereich mit den Werten in Spalte B der Zeilen 3 bis 40
  • D5:X5: Zellenbereich mit den Werten in den Spalten D bis X der Zeile 5
  • E200:ALM20000: Zellenbereich mit den Werten in den Spalten E bis ALM (die 1000. Spalte) der Zeilen 200 bis 20000

Nachfolgend finden Sie Beispiele für ungültige Zellenbereiche:

  • A20:C10: Die erste Zelle darf nicht weiter unten liegen (eine größere Zeilennummer haben) als die zweite Zelle.
  • Z3:B5: Die erste Zelle darf nicht weiter rechts liegen (einen größeren Spaltenbuchstaben haben) als die zweite Zelle.
  • A5:G: Beide Zellen müssen eine gültige Zellenkennung besitzen, das heißt, einen Buchstaben und eine Zahl.

String

Codebeispiel

ExcelToTable – Beispiel (Python-Fenster)

Das folgende Skript für das Python-Fenster veranschaulicht, wie die Funktion ExcelToTable im unmittelbaren Modus verwendet wird.

import arcpy
arcpy.env.workspace = "c:/data"
arcpy.conversion.ExcelToTable("data.xls", "outgdb.gdb", "Sheet1")
ExcelToTable – Beispiel 2 (eigenständiges Skript)

Importiert jede Tabelle aus einer Excel-Datei in einzelne Tabellen in einer Geodatabase.

import os
import xlrd
import openpyxl
import arcpy

def importallsheets(in_excel, out_gdb):
    if in_excel.endswith(".xlsx"):
        workbook = openpyxl.load_workbook(in_excel)
        sheets = workbook.sheetnames
    elif in_excel.endswith(".xls"):
        workbook = xlrd.open_workbook(in_excel)
        sheets = [sheet.name for sheet in workbook.sheets()]
    else:
        print("An Excel Workbook of format .xls or .xlsx is required.")
        return

    print('{} sheets found: {}'.format(len(sheets), ','.join(sheets)))
    for sheet in sheets:
        # The out_table is based on the input Excel file name
        # an underscore (_) separator followed by the sheet name
        out_table = os.path.join(
            out_gdb,
            arcpy.ValidateTableName(
                "{0}_{1}".format(os.path.basename(in_excel), sheet),
                out_gdb))

        print('Converting {} to {}'.format(sheet, out_table))

        # Perform the conversion
        arcpy.conversion.ExcelToTable(in_excel, out_table, sheet)

if __name__ == '__main__':
    importallsheets('c:/data/data.xls',
                    'c:/data/outgdb.gdb')