Excel 转表 (转换)

描述

将 Microsoft Excel 文件转换为表。

使用方法

  • 支持 Excel 工作簿 (.xlsx) 和 Microsoft 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

要转换的 Microsoft Excel 文件。

File
Output_Table

输出表。

Table
Sheet
(可选)

要导入的 Excel 文件中特定工作表的名称。如果未指定,则使用工作簿中的第一个工作表。

String
field_names_row
(可选)

Excel 工作表中包含要用作字段名称的值的行。默认值为 1。

将记录转换为输出表时,会跳过指定的行。

为避免将任何行的值用作字段名称,请将此参数设置为 0,从而将使用列字母来命名输出字段(例如,COL_ACOL_BCOL_C)。

如果特定列中的单元格为空,则输出字段名称将基于列字母。例如,如果输入有三列,并且该行分别在 A、B 和 C 列中包含 "city""""country",则输出表的字段名称将为:cityCOL_Bcountry

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 - 第一个单元格不能比第二个单元格低(具有较大的行号)。
  • Z3:B5 - 第一个单元格不能在第二个单元格的右侧(具有较大的列字母)。
  • A5:G - 两个单元格都必须具有有效的单元格标识符:字母和数字。

String

代码示例

Excel 转表 (ExcelToTable) 示例(Python 窗口)

以下 Python 窗口脚本演示了如何在即时模式下使用 ExcelToTable 函数。

import arcpy
arcpy.env.workspace = "c:/data"
arcpy.ExcelToTable_conversion("data.xls", "outgdb.gdb", "Sheet1")
Excel 转表 (ExcelToTable) 示例 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')

许可信息

  • Basic: 是
  • Standard: 是
  • Advanced: 是

相关主题