Etiqueta | Explicación | Tipo 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) | 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:
A continuación, se muestran algunos ejemplos de rangos de celdas no válidos:
| String |
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
arcpy.conversion.ExcelToTable(Input_Excel_File, Output_Table, {Sheet}, {field_names_row}, {cell_range})
Nombre | Explicación | Tipo 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) | 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:
A continuación, se muestran algunos ejemplos de rangos de celdas no válidos:
| String |
Muestra de código
La siguiente secuencia de comandos de la ventana de Python muestra 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")
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')