Excel → テーブル (Excel To Table) (変換)

サマリー

Microsoft Excel ファイルをテーブルに変換します。

使用法

  • Excel ワークブック (*.xlsx) 形式および Excel 5.0/95 ワークブック (*.xls) 形式を入力形式として使用できます。

  • 出力フィールドのデータ タイプは、入力列内の値とセルの書式設定に基づきます。 出力フィールドのデータ タイプには、double、long integer、text、date などがあります。 入力列に複数のデータまたは書式設定のタイプがある場合、出力フィールドのタイプはテキストになります。

  • 入力 Excel セル内の値 "#N/A" は NULL に変換されます。 出力テーブル形式 (dBASE テーブルなど) が NULL に対応していない場合は、別の値が使用されます (整数フィールドの場合は 0、テキスト フィールドの場合は空の文字列)。

パラメーター

ラベル説明データ タイプ
入力 Excel ファイル

変換される Excel ファイル。

File
出力テーブル

出力テーブル。

Table
シートまたは指定範囲
(オプション)

インポートされる Excel ファイル内の特定のシートまたは指定範囲の名前。 指定しない場合、ワークブックの最初のシートが使用されます。

指定範囲は .xlsx ファイルでのみサポートされます。 1 つの範囲を持つ指定範囲のみがサポートされます (Sheet!A1:B5 など)。複数の範囲を持つ指定範囲はサポートされません (Sheet!A1:B5,Sheet!D1:D5 など)。

String
フィールド名として使用する行
(オプション)

フィールド名として使用される値が含まれている Excel シート内の行。 デフォルト値は 1 です。

指定された行は、レコードを出力テーブルに変換する処理でスキップされます。

[シートまたは指定範囲] パラメーターの値が指定範囲である場合、このパラメーターの値は指定範囲の最小行に設定されます。 さらに、この値は、指定範囲の最小行と最大行に制限されます。

どの行の値もフィールド名として使用しないようにするには、このパラメーターを 0 に設定します。この場合には、出力フィールド名として列の文字が使用されます (例: COL_ACOL_BCOL_C など)。

特定の列に含まれるセルが空の場合は、列の文字に基づいて出力フィールド名が決定されます。 たとえば、3 つの入力列があり、列 A、B、および C で行の値がそれぞれ "city"、""、および "country" の場合、出力テーブルのフィールド名はそれぞれ cityCOL_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 - 最初のセルを 2 番目のセルよりも小さくする (2 番目のセルよりも大きい行番号にする) ことはできません。
  • Z3:B5 - 2 番目のセルを最初のセルの左に配置する (最初のセルよりも前の列の文字にする) ことはできません。
  • A5:G - どちらのセルにも有効なセル ID (文字と数字) が必要です。

このパラメーターは、[シートまたは指定範囲] パラメーターの値がシートの場合にのみ有効です。

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 ファイルでのみサポートされます。 1 つの範囲を持つ指定範囲のみがサポートされます (Sheet!A1:B5 など)。複数の範囲を持つ指定範囲はサポートされません (Sheet!A1:B5,Sheet!D1:D5 など)。

String
field_names_row
(オプション)

フィールド名として使用される値が含まれている Excel シート内の行。 デフォルト値は 1 です。

指定された行は、レコードを出力テーブルに変換する処理でスキップされます。

パラメーター Sheet の値が指定範囲である場合、このパラメーターの値は指定範囲の最小行に設定されます。 さらに、この値は、指定範囲の最小行と最大行に制限されます。

どの行の値もフィールド名として使用しないようにするには、このパラメーターを 0 に設定します。この場合には、出力フィールド名として列の文字が使用されます (例: COL_ACOL_BCOL_C など)。

特定の列に含まれるセルが空の場合は、列の文字に基づいて出力フィールド名が決定されます。 たとえば、3 つの入力列があり、列 A、B、および C で行の値がそれぞれ "city"、""、および "country" の場合、出力テーブルのフィールド名はそれぞれ cityCOL_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 - 最初のセルを 2 番目のセルよりも小さくする (2 番目のセルよりも大きい行番号にする) ことはできません。
  • Z3:B5 - 2 番目のセルを最初のセルの左に配置する (最初のセルよりも前の列の文字にする) ことはできません。
  • A5:G - どちらのセルにも有効なセル ID (文字と数字) が必要です。

このパラメーターは、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: Yes
  • Standard: Yes
  • Advanced: Yes

関連トピック