Excel в таблицу (Конвертация)

Краткая информация

Конвертирует файлы Microsoft Excel в таблицу.

Использование

  • В качестве входных данных поддерживаются форматы Excel Workbooks (.xlsx) и Excel 5.0/95 Workbook (.xls).

  • Тип данных в выходном поле зависит от значений и форматирования ячеек во входном столбце. Выходными типами данных могут быть следующие: двойной точности, длинное целое, текст и дата. Если входной столбец содержит более одного типа данных или формата, выходное поле будет текстового типа.

  • Значение "#N/A" во входных ячейках Excel будет конвертировано в null. Если формат выходной таблицы (например, таблица dBASE) не поддерживает значения null, будет использоваться другое значение (0 для целочисленных полей или пустая строка - для текстовых).

Параметры

ПодписьОписаниеТип данных
Входной файл Excel

Файл Excel, который необходимо конвертировать.

File
Выходная таблица

Выходная таблица.

Table
Лист или именованный диапазон
(Дополнительный)

Имя отдельного листа или именованного диапазона в файле Excel, который будет импортироваться. Если не указано иное, используется первый лист книги.

Именованные диапазоны поддерживаются только для файлов .xlsx. Поддерживаются только именованные диапазоны с одним диапазоном (например, Sheet!A1:B5); именованные диапазоны с несколькими диапазонами - нет (например, Sheet!A1:B5,Sheet!D1:D5).

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.

Вот некоторые примеры допустимых диапазонов ячеек:

  • A2:C10 - значения в столбцах от A до C, а в строках - от 2 до 10
  • B3:B40 - значения в столбце B, в строках от 3 до 40
  • D5:X5 - значения в столбцах от D до X, в строке 5
  • E200:ALM20000 - значения в столбцах от E до ALM (1000-й столбец), в строках - от 200 до 20000

Вот некоторые примеры некорректных диапазонов ячеек:

  • A20:C10 - первая ячейка не может находиться ниже второй (т.е. у нее не может быть большее значение).
  • Z3:B5 - вторая ячейка не может находиться левее (то есть с буквой ближе к началу алфавита), чем первая.
  • A5:G - у обеих ячеек должно быть буквенно-цифровое обозначение.

Этот параметр активен только в том случае, если значением параметра Лист или именованный диапазон является лист.

String

arcpy.conversion.ExcelToTable(Input_Excel_File, Output_Table, {Sheet}, {field_names_row}, {cell_range})
ИмяОписаниеТип данных
Input_Excel_File

Файл Excel, который необходимо конвертировать.

File
Output_Table

Выходная таблица.

Table
Sheet
(Дополнительный)

Имя отдельного листа или именованного диапазона в файле Excel, который будет импортироваться. Если не указано иное, используется первый лист книги.

Именованные диапазоны поддерживаются только для файлов .xlsx. Поддерживаются только именованные диапазоны с одним диапазоном (например, Sheet!A1:B5); именованные диапазоны с несколькими диапазонами - нет (например, Sheet!A1:B5,Sheet!D1:D5).

String
field_names_row
(Дополнительный)

Строка листа Excel, в которой содержатся значения, используемые в качестве имен полей. Значение по умолчанию равно 1.

Заданная строка будет пропущена при конвертации записей в выходную таблицу.

Если значением параметра Sheet является именованный диапазон, значение этого параметра будет равно минимальной строке именованного диапазона. Это значение также будет ограничено минимальным и максимальным номерами строк в именованном диапазоне.

Чтобы не использовать какие-то значения в строке в качестве имен полей, задайте для этого параметра значение 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.

Вот некоторые примеры допустимых диапазонов ячеек:

  • A2:C10 - значения в столбцах от A до C, а в строках - от 2 до 10
  • B3:B40 - значения в столбце B, в строках от 3 до 40
  • D5:X5 - значения в столбцах от D до X, в строке 5
  • E200:ALM20000 - значения в столбцах от E до ALM (1000-й столбец), в строках - от 200 до 20000

Вот некоторые примеры некорректных диапазонов ячеек:

  • A20:C10 - первая ячейка не может находиться ниже второй (т.е. у нее не может быть большее значение).
  • Z3:B5 - вторая ячейка не может находиться левее (то есть с буквой ближе к началу алфавита), чем первая.
  • A5:G - у обеих ячеек должно быть буквенно-цифровое обозначение.

Этот параметр включается только тогда, когда для параметра Sheet выбран лист.

String

Пример кода

ExcelToTable, пример (окно Python)

Пример скрипта окна Python для использования функции ExcelToTable в режиме прямого запуска.

import arcpy
arcpy.env.workspace = "c:/data"
arcpy.conversion.ExcelToTable("data.xls", "outgdb.gdb", "Sheet1")
ExcelToTable, пример 2 (автономный скрипт)

Импортирует каждый лист файла 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')

Информация о лицензиях

  • Basic: Да
  • Standard: Да
  • Advanced: Да

Связанные разделы