在ArcPy脚本中阅读Excel工作表?


12

我正在编写一个Python代码,将excel中的X,Y点转换为shapefile。在此过程中,我必须从shhet1中读取xy点。从Excel工作簿(97-2003)的sheet1中读取数据时,我必须包括哪些步骤。
我写了如下代码。

import arcpy  
from arcpy import env  
import Xlrd  
env.workspace="E:\"  
input_table="123.xls\Sheet1" 

但是它不起作用。


尝试r“ E:\”或“ E:/”
亚伦

是的,我已经尝试过了。
萨蒂亚·钱德拉

导入xlrd无法正常工作。错误如下,没有名为xlrd的模块。
萨蒂亚·钱德拉

我发现openpyxl对于与arcpy结合阅读和操作Excel工作表也非常有用。
Cindy Jayakumar

Answers:


28

这是行不通的,因为您尚未调用Xlrd模块来读取Excel电子表格。实现它是这样的:

import xlrd
workbook = xlrd.open_workbook('my_workbook.xls')
worksheet = workbook.sheet_by_name('Sheet1')

这将允许您使用Python读取XLS文件。但是,ArcPy将读取不带Xlrd的XLS。您可以将Excel工作簿视为一个可能包含许多表(工作表)的工作区。因此,您可以执行以下操作:

arcpy.env.workspace = r'E:\123.xls'
input_table = 'Sheet1$'

...或追逐:

arcpy.MakeXYEventLayer_management(r'E:\123.xls\Sheet1$',lat,long,layername,SpatialRef)

k,然后谢谢我们如何在工作中加入sheet1。我的步骤如下arcpy.MakeXYEventLayer_management(input_table,lat,long,layername,SpatialRef)。我必须将该sheet1包含在input_table中。我怎么能?
萨蒂亚·钱德拉

查看我的编辑-您可以将.xls或xlsx视为工作空间。
MappaGnosis

6
+1指出XLS电子表格实际上在ArcGIS中考虑了WORKSPACE,而不是文件。XLS文件中的“工作表”可以被视为类似于地理数据库中的“表”。
RyanKDalton

我发现使用这种格式xls=r"E:\123.xls\Sheet1$"是相当狡猾的-有时可以用,有时不能用(我在同一个工作簿的两个副本上尝试过-在另一个工作簿上也可以使用,脚本崩溃为“不存在“ 在另一)。
Cindy Jayakumar

6

您没有提到ArcGIS for Desktop版本,但是如果是10.2(或更高版本),则应该能够使用Excel To Table工具,该工具具有以下功能:

将Microsoft Office Excel文件转换为表。

其语法为:

ExcelToTable_conversion (Input_Excel_File, Output_Table, {Sheet})
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.