De Excel a tabla (Conversión)

Resumen

Convierte archivos de Microsoft Excel en una tabla.

Uso

  • Se admiten como entrada los formatos Libros de Excel (.xlsx) y Libro de Excel 5.0/95 (.xls).

  • El tipo de datos del campo de salida se basa en los valores y en el formato de las celdas de la columna de entrada. Entre los tipos de datos del campo de salida están: doble, entero largo, texto y fecha. Si una columna de entrada contiene más de un tipo de datos o de formato, el tipo del campo de salida será de texto.

  • El valor "#N/A" en una celda de Excel de entrada se convertirá a nulo. Si el formato de tabla de salida (por ejemplo, tabla de dBASE) no admite valores nulos, se utilizará otro valor (0 para los campos de tipo entero o una cadena vacía para los campos de texto).

Parámetros

EtiquetaExplicaciónTipo de datos
Archivo Excel de entrada

El archivo de Excel a convertir.

File
Tabla de Salida

La tabla de salida.

Table
Hoja
(Opcional)

Nombre de la hoja concreta dentro del archivo Excel que se va a importar. Si no se especifica, se utilizará la primera hoja del libro.

String
Fila a utilizar como nombres de campo
(Opcional)

La fila de la hoja de Excel que contiene los valores que se utilizarán como nombres de campo. El valor predeterminado es 1.

La fila especificada se omitirá al convertir los registros a la tabla de salida.

Para evitar utilizar los valores de cualquier fila como nombres de campo, establezca este parámetro en 0, lo cual nombrará a los campos de salida utilizando la letra de la columna (por ejemplo: COL_A, COL_B, COL_C).

Si la celda de una columna en concreto está vacía, el nombre de campo de salida se basará en la letra de la columna. Por ejemplo, si la entrada tiene tres columnas, y la fila contiene "city", "" y "country" en las columnas A, B y C, respectivamente, los nombres de campo de la tabla de salida serán city, COL_B y country:

Long
Rango de celdas
(Opcional)

El rango de celdas que se incluirá.

Una celda es la intersección de una fila y una columna. Las columnas se identifican mediante letras (A, B, C, D); las filas, mediante números (1, 2, 3, 4). Cada celda tiene una dirección según su columna y su fila. Por ejemplo, la celda B9 es la intersección de la columna B y la fila 9.

Un rango de celdas define un rectángulo utilizando la celda superior izquierda y la celda inferior derecha, separadas por dos puntos (:). Los rangos de celdas son inclusivos, de modo que el rango A2:C10 incluirá todos los valores de las columnas A a C y todos los valores de las filas 2 a 10.

Los nombres de campo de salida se obtienen de los valores de celda de la fila 1, independientemente de las filas especificadas en el rango de celdas. Por ejemplo, si el rango de celdas especificado es B2:D10, los nombres de campo se basarán en los valores de las celdas B1, C1 y D1.

A continuación, se muestran algunos ejemplos de rangos de celdas válidos:

  • A2:C10: los valores de las columnas A a C, de las filas 2 a 10
  • B3:B40: los valores de la columna B, de las filas 3 a 40
  • D5:X5: los valores de las columnas D a X, de la fila 5
  • E200:ALM20000: los valores de las columnas E a ALM (columna n.º 1.000), de las filas 200 a 20.000

A continuación, se muestran algunos ejemplos de rangos de celdas no válidos:

  • A20:C10: la primera celda no puede estar más abajo (tener un número de fila mayor) que la segunda celda.
  • Z3:B5: la segunda celda no puede estar a la derecha (tener una letra de columna mayor) de la primera celda.
  • A5:G: ambas celdas deben tener un identificador de celda válido (una letra y un número).

String

arcpy.conversion.ExcelToTable(Input_Excel_File, Output_Table, {Sheet}, {field_names_row}, {cell_range})
NombreExplicaciónTipo de datos
Input_Excel_File

El archivo de Excel a convertir.

File
Output_Table

La tabla de salida.

Table
Sheet
(Opcional)

Nombre de la hoja concreta dentro del archivo Excel que se va a importar. Si no se especifica, se utilizará la primera hoja del libro.

String
field_names_row
(Opcional)

La fila de la hoja de Excel que contiene los valores que se utilizarán como nombres de campo. El valor predeterminado es 1.

La fila especificada se omitirá al convertir los registros a la tabla de salida.

Para evitar utilizar los valores de cualquier fila como nombres de campo, establezca este parámetro en 0, lo cual nombrará a los campos de salida utilizando la letra de la columna (por ejemplo: COL_A, COL_B, COL_C).

Si la celda de una columna en concreto está vacía, el nombre de campo de salida se basará en la letra de la columna. Por ejemplo, si la entrada tiene tres columnas, y la fila contiene "city", "" y "country" en las columnas A, B y C, respectivamente, los nombres de campo de la tabla de salida serán city, COL_B y country:

Long
cell_range
(Opcional)

El rango de celdas que se incluirá.

Una celda es la intersección de una fila y una columna. Las columnas se identifican mediante letras (A, B, C, D); las filas, mediante números (1, 2, 3, 4). Cada celda tiene una dirección según su columna y su fila. Por ejemplo, la celda B9 es la intersección de la columna B y la fila 9.

Un rango de celdas define un rectángulo utilizando la celda superior izquierda y la celda inferior derecha, separadas por dos puntos (:). Los rangos de celdas son inclusivos, de modo que el rango A2:C10 incluirá todos los valores de las columnas A a C y todos los valores de las filas 2 a 10.

Los nombres de campo de salida se obtienen de los valores de celda de la fila 1, independientemente de las filas especificadas en el rango de celdas. Por ejemplo, si el rango de celdas especificado es B2:D10, los nombres de campo se basarán en los valores de las celdas B1, C1 y D1.

A continuación, se muestran algunos ejemplos de rangos de celdas válidos:

  • A2:C10: los valores de las columnas A a C, de las filas 2 a 10
  • B3:B40: los valores de la columna B, de las filas 3 a 40
  • D5:X5: los valores de las columnas D a X, de la fila 5
  • E200:ALM20000: los valores de las columnas E a ALM (columna n.º 1.000), de las filas 200 a 20.000

A continuación, se muestran algunos ejemplos de rangos de celdas no válidos:

  • A20:C10: la primera celda no puede estar más abajo (tener un número de fila mayor) que la segunda celda.
  • Z3:B5: la segunda celda no puede estar a la derecha (tener una letra de columna mayor) de la primera celda.
  • A5:G: ambas celdas deben tener un identificador de celda válido (una letra y un número).

String

Muestra de código

Ejemplo de ExcelToTable (ventana de Python)

El siguiente script de la ventana de Python demuestra cómo utilizar la función ExcelToTable de modo inmediato.

import arcpy
arcpy.env.workspace = "c:/data"
arcpy.conversion.ExcelToTable("data.xls", "outgdb.gdb", "Sheet1")
Ejemplo 2 de ExcelToTable (secuencia de comandos independiente)

Importar cada hoja de un archivo Excel a tablas individuales en una 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')