标注 | 说明 | 数据类型 |
输入 Excel 文件 | 要转换的 Excel 文件。 | File |
输出表 | 输出表。 | Table |
工作表或命名区域 (可选) | 要导入的 Excel 文件中特定工作表或命名区域的名称。 如果未指定,则使用工作簿中的第一个工作表。 仅 .xlsx 文件支持命名区域。 仅支持具有单个区域的命名区域(例如 Sheet!A1:B5);不支持具有多个区域的命名区域(例如 Sheet!A1:B5,Sheet!D1:D5)。 | String |
要用作字段名称的行 (可选) | Excel 工作表中包含将用作字段名称的值的行。 默认值为 1。 将记录转换为输出表时,会跳过指定的行。 如果工作表或命名区域参数值为命名区域,则此参数的值将设置为命名区域的最小行号。 该值还将限制为命名区域的最小和最大行号。 为避免将任何行的值用作字段名称,请将此参数设置为 0,从而将使用列字母来命名输出字段(例如,COL_A、COL_B、COL_C)。 如果特定列中的单元格为空,则输出字段名称将基于列字母。 例如,如果输入有三列,并且该行分别在 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 文件中特定工作表或命名区域的名称。 如果未指定,则使用工作簿中的第一个工作表。 仅 .xlsx 文件支持命名区域。 仅支持具有单个区域的命名区域(例如 Sheet!A1:B5);不支持具有多个区域的命名区域(例如 Sheet!A1:B5,Sheet!D1:D5)。 | String |
field_names_row (可选) | Excel 工作表中包含将用作字段名称的值的行。 默认值为 1。 将记录转换为输出表时,会跳过指定的行。 如果 Sheet 参数值为命名区域,则此参数的值将设置为命名区域的最小行号。 该值还将限制为命名区域的最小和最大行号。 为避免将任何行的值用作字段名称,请将此参数设置为 0,从而将使用列字母来命名输出字段(例如,COL_A、COL_B、COL_C)。 如果特定列中的单元格为空,则输出字段名称将基于列字母。 例如,如果输入有三列,并且该行分别在 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 中的值。 以下是有效单元格范围的示例:
以下是无效单元格范围的示例:
仅当 Sheet 参数值为工作表时,才会启用此参数。 | 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')
许可信息
- Basic: 是
- Standard: 是
- Advanced: 是