Подпись | Описание | Тип данных |
Входной файл Excel | Файл Excel, который будет конвертирован. | File |
Выходная таблица | Выходная таблица. | Table |
Лист (Дополнительный) | Имя отдельного листа файла Excel для импорта. Если не указано иное, используется первый лист книги. | String |
Строка имен полей (Дополнительный) | Строка листа Excel, в которой содержатся значения, которые будут использоваться в качестве имен полей. Значение по умолчанию равно 1. Заданная строка будет пропущена при конвертации записей в выходную таблицу. Чтобы не использовать какие-то значения в строке в качестве имен полей, задайте для этого параметра значение 0, и для выходных полей будут использоваться имена с буквами соответствующих столбцов (например, COL_A, COL_B, COL_C). Если ячейка в определенном столбце пуста, имя выходного поля будет основаться на букве этого столбца. К примеру, если во входных данных есть три столбца, а значения в строке - "city", "" и "country" в столбцах A, B и C, соответственно, в выходной таблице будут следующие имена полей: city, COL_B и country. | Long |
Диапазон ячеек (Дополнительный) | Обрабатываемый диапазон ячеек. Ячейка - пересечение строки и столбца. Столбцы обозначаются буквами (A, B, C, D), а строки - цифрами (1, 2, 3, 4). У каждой ячейки есть адрес, основанный на строке и столбце. Например, ячейка B9 находится на пересечении столбца B и строки 9. Диапазон ячеек задает прямоугольник - от левой верхней ячейки до нижней правой ячейки, адреса которых разделены двоеточием (:). Диапазоны ячеек включают граничные ячейки, поэтому диапазон A2:C10 будет включать все значения в столбцах от A до C и все значения в строках со 2 по 10. Имена выходных полей являются производными от значений ячеек в строке 1, независимо от строк, указанных в диапазоне. К примеру, если задан диапазон B2:D10, имена полей будут браться из ячеек B1, C1 и D1. Вот некоторые примеры допустимых диапазонов ячеек:
Вот некоторые примеры некорректных диапазонов ячеек:
| String |
Краткая информация
Конвертирует файлы Microsoft Excel в таблицу.
Использование
В качестве входных данных поддерживаются форматы Excel Workbooks (.xlsx) и Excel 5.0/95 Workbook (.xls).
Тип данных в выходном поле зависит от значений и форматирования ячеек во входном столбце. Выходными типами данных могут быть следующие: двойной точности, длинное целое, текст и дата. Если входной столбец содержит более одного типа данных или формата, выходное поле будет текстового типа.
Значение "#N/A" во входных ячейках Excel будет конвертировано в null. Если формат выходной таблицы (например, таблица dBASE) не поддерживает значения null, будет использоваться другое значение (0 для целочисленных полей или пустая строка - для текстовых).
Параметры
arcpy.conversion.ExcelToTable(Input_Excel_File, Output_Table, {Sheet}, {field_names_row}, {cell_range})
Имя | Описание | Тип данных |
Input_Excel_File | Файл Excel, который будет конвертирован. | File |
Output_Table | Выходная таблица. | Table |
Sheet (Дополнительный) | Имя отдельного листа файла Excel для импорта. Если не указано иное, используется первый лист книги. | String |
field_names_row (Дополнительный) | Строка листа Excel, в которой содержатся значения, которые будут использоваться в качестве имен полей. Значение по умолчанию равно 1. Заданная строка будет пропущена при конвертации записей в выходную таблицу. Чтобы не использовать какие-то значения в строке в качестве имен полей, задайте для этого параметра значение 0, и для выходных полей будут использоваться имена с буквами соответствующих столбцов (например, COL_A, COL_B, COL_C). Если ячейка в определенном столбце пуста, имя выходного поля будет основаться на букве этого столбца. К примеру, если во входных данных есть три столбца, а значения в строке - "city", "" и "country" в столбцах A, B и C, соответственно, в выходной таблице будут следующие имена полей: city, COL_B и country. | Long |
cell_range (Дополнительный) | Обрабатываемый диапазон ячеек. Ячейка - пересечение строки и столбца. Столбцы обозначаются буквами (A, B, C, D), а строки - цифрами (1, 2, 3, 4). У каждой ячейки есть адрес, основанный на строке и столбце. Например, ячейка B9 находится на пересечении столбца B и строки 9. Диапазон ячеек задает прямоугольник - от левой верхней ячейки до нижней правой ячейки, адреса которых разделены двоеточием (:). Диапазоны ячеек включают граничные ячейки, поэтому диапазон A2:C10 будет включать все значения в столбцах от A до C и все значения в строках со 2 по 10. Имена выходных полей являются производными от значений ячеек в строке 1, независимо от строк, указанных в диапазоне. К примеру, если задан диапазон B2:D10, имена полей будут браться из ячеек B1, C1 и D1. Вот некоторые примеры допустимых диапазонов ячеек:
Вот некоторые примеры некорректных диапазонов ячеек:
| String |
Пример кода
В следующем скрипте окна Python показано, как используется функция ExcelToTable в режиме прямого запуска.
import arcpy
arcpy.env.workspace = "c:/data"
arcpy.conversion.ExcelToTable("data.xls", "outgdb.gdb", "Sheet1")
Импортирует каждый лист файла Excel в отдельную таблицу базы геоданных.
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')