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

サマリー

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

使用法

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

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

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

パラメーター

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

変換対象の 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 番目のセルを最初のセルの右に配置する (最初のセルよりも後の列の文字にする) ことはできません。
  • 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 ファイル内の特定のシートの名前。 指定しない場合、ワークブックの最初のシートが使用されます。

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

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

関連トピック