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

Сводка

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

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

  • В качестве входных данных поддерживаются форматы Excel Workbooks (.xlsx) и Microsoft 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})
ParameterОбъяснениеТип данных
Input_Excel_File

Файл Microsoft 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.ExcelToTable_conversion("data.xls", "outgdb.gdb", "Sheet1")
ExcelToTable, пример 2 (автономный скрипт)

Импортирует каждый лист файла Microsoft Excel в отдельную таблицу базы геоданных.

import os
import xlrd
import arcpy
def importallsheets(in_excel, out_gdb):
    workbook = xlrd.open_workbook(in_excel)
    sheets = [sheet.name for sheet in workbook.sheets()]
    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.ExcelToTable_conversion(in_excel, out_table, sheet)
if __name__ == '__main__':
    importallsheets('c:/data/data.xls',
                    'c:/data/outgdb.gdb')

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

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

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