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

サマリー

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

使用法

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

  • 出力フィールドのデータ タイプは、入力列内の値とセルの書式設定に基づきます。出力フィールドのデータ タイプには、倍精度浮動小数点数、長整数、テキスト、日付などがあります。入力列に複数のデータまたは書式設定のタイプがある場合、出力フィールドのタイプはテキストになります。

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

パラメーター

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

変換する Microsoft Excel。

File
出力テーブル

出力テーブル。

Table
シート
(オプション)

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

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 番目のセルの右に配置する (2 番目のセルよりも後の列の文字にする) ことはできません。
  • A5:G - どちらのセルにも有効なセル ID (文字と数字) が必要です。

String

arcpy.conversion.ExcelToTable(Input_Excel_File, Output_Table, {Sheet}, {field_names_row}, {cell_range})
名前説明データ タイプ
Input_Excel_File

変換する Microsoft Excel。

File
Output_Table

出力テーブル。

Table
Sheet
(オプション)

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

String
field_names_row
(オプション)

フィールド名として使用する値を含む Excel シート内の行。デフォルト値は 1 です。

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

どの行の値もフィールド名として使用しないようにするには、このパラメーターを 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 番目のセルの右に配置する (2 番目のセルよりも後の列の文字にする) ことはできません。
  • A5:G - どちらのセルにも有効なセル ID (文字と数字) が必要です。

String

コードのサンプル

ExcelToTable (Excel → テーブル) の例 (Python ウィンドウ)

次の Python ウィンドウ スクリプトは、イミディエイト モードで ExcelToTable 関数を使用する方法を示しています。

import arcpy
arcpy.env.workspace = "c:/data"
arcpy.ExcelToTable_conversion("data.xls", "outgdb.gdb", "Sheet1")
ExcelToTable (Excel → テーブル) の例 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')

関連トピック