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

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

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

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

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

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

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

Параметры

ПодписьОписаниеТип данных
Входной файл 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.

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

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

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.

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

  • 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

Пример кода

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')