ラベル | 説明 | データ タイプ |
入力 Excel ファイル | 変換対象の Excel ファイル。 | File |
出力テーブル | 出力テーブル。 | Table |
シート (オプション) | インポートする Excel ファイル内の特定のシートの名前。 指定しない場合、ワークブックの最初のシートが使用されます。 | String |
フィールド名として使用する行 (オプション) | フィールド名として使用する値を含む Excel シート内の行。 デフォルト値は 1 です。 指定された行は、レコードを出力テーブルに変換する処理でスキップされます。 どの行の値もフィールド名として使用しないようにするには、このパラメーターを 0 に設定します。この場合には、出力フィールド名として列の文字が使用されます (例: COL_A、COL_B、COL_C など)。 特定の列に含まれるセルが空の場合は、列の文字に基づいて出力フィールド名が決定されます。 たとえば、3 つの入力列があり、列 A、B、および C で行の値がそれぞれ "city"、""、および "country" の場合、出力テーブルのフィールド名はそれぞれ 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 の値に基づいてフィールド名が決定されます。 有効なセル範囲の例を次に示します。
無効なセル範囲の例を次に示します。
| String |
サマリー
Microsoft Excel ファイルをテーブルに変換します。
使用法
Excel ワークブック (*.xlsx) 形式および Excel 5.0/95 ワークブック (*.xls) 形式を入力形式として使用できます。
出力フィールドのデータ タイプは、入力列内の値とセルの書式設定に基づきます。 出力フィールドのデータ タイプには、倍精度浮動小数点数、長整数、テキスト、日付などがあります。 入力列に複数のデータまたは書式設定のタイプがある場合、出力フィールドのタイプはテキストになります。
入力 Excel セル内の値 "#N/A" は NULL に変換されます。 出力テーブル形式 (dBASE テーブルなど) が NULL に対応していない場合は、別の値が使用されます (整数フィールドの場合は 0、テキスト フィールドの場合は空の文字列)。
パラメーター
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 など)。 特定の列に含まれるセルが空の場合は、列の文字に基づいて出力フィールド名が決定されます。 たとえば、3 つの入力列があり、列 A、B、および C で行の値がそれぞれ "city"、""、および "country" の場合、出力テーブルのフィールド名はそれぞれ 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 の値に基づいてフィールド名が決定されます。 有効なセル範囲の例を次に示します。
無効なセル範囲の例を次に示します。
| String |
コードのサンプル
次の Python ウィンドウ スクリプトは、イミディエイト モードで ExcelToTable 関数を使用する方法を示しています。
import arcpy
arcpy.env.workspace = "c:/data"
arcpy.conversion.ExcelToTable("data.xls", "outgdb.gdb", "Sheet1")
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')