Lendo a planilha do Excel no script ArcPy?

12

Estou escrevendo um código python para converter pontos X, Y no excel para shapefile. Nesse processo, eu tenho que ler pontos xy do shhet1. Qual é a etapa que tenho que incluir no meu processo para ler os dados da planilha1 de um livro de trabalho do Excel (97-2003).
Eu escrevi um código da seguinte maneira ..

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

Mas não está funcionando.

Satya Chandra
fonte
Tente r "E: \" ou "E: /"
Aaron
ya eu já tentei.
Satya Chandra
O xlrd de importação não está funcionando. O erro da seguinte forma: nenhum módulo chamado xlrd.
Satya Chandra
Eu descobri que o openpyxl é muito útil também para ler e manipular planilhas do Excel em conjunto com o arcpy.
Cindy Jayakumar

Respostas:

28

Não funciona porque você não chamou os módulos Xlrd para ler a planilha do Excel. Implemente algo como isto:

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

Isso permitirá que você leia um arquivo XLS com Python. No entanto, o ArcPy lerá XLS sem Xlrd. Você pode considerar a pasta de trabalho do Excel como uma área de trabalho que contém potencialmente muitas tabelas (planilhas). Então você pode fazer algo como:

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

... ou direto ao assunto com:

arcpy.MakeXYEventLayer_management(r'E:\123.xls\Sheet1$',lat,long,layername,SpatialRef)
MappaGnosis
fonte
k, obrigado então como podemos incluir a planilha1 em processo. Minha etapa é a seguinte: arcpy.MakeXYEventLayer_management (input_table, lat, long, layername, SpatialRef). Eu tenho que incluir essa planilha1 em input_table. Como eu posso?
Satya Chandra
Veja minhas edições - você pode tratar um .xls ou xlsx como um espaço de trabalho.
MappaGnosis
6
+1 por apontar que uma planilha XLS realmente considerou um ESPAÇO DE TRABALHO no ArcGIS, em vez de um arquivo. Uma "planilha" em um arquivo XLS pode ser considerada análoga a uma "tabela" em um geodatabase.
precisa saber é o seguinte
Descobri que usar o formato xls=r"E:\123.xls\Sheet1$"é bastante desonesto - às vezes funciona, às vezes não (tentei em duas cópias da mesma pasta de trabalho - funcionou para a outra, o script travou com "não existe " no outro).
Cindy Jayakumar
6

Você não menciona sua versão do ArcGIS for Desktop, mas se for 10.2 (ou posterior), poderá usar a ferramenta Excel To Table que:

Converte arquivos do Microsoft Office Excel em uma tabela.

Sua sintaxe é:

ExcelToTable_conversion (Input_Excel_File, Output_Table, {Sheet})
PolyGeo
fonte