Excel-Tabelle in ArcPy-Skript lesen?

12

Ich schreibe einen Python-Code, um X, Y-Punkte in Excel in Shapefile umzuwandeln. In diesem Prozess habe ich xy Punkte von shhet1 gelesen. Was ist der Schritt, den ich in meinen Prozess einbeziehen muss, um Daten aus Blatt 1 eines Excel-Arbeitsbuchs (97-2003) zu lesen?
Ich habe einen Code wie folgt geschrieben ..

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

Aber es funktioniert nicht.

Satya Chandra
quelle
Versuchen Sie r "E: \" oder "E: /"
Aaron
ya ich habe es schon versucht.
Satya Chandra
xlrd importieren funktioniert nicht. Der Fehler lautet wie folgt: Kein Modul mit dem Namen xlrd.
Satya Chandra
Ich habe festgestellt, dass openpyxl auch sehr nützlich ist, um Excel-Tabellen in Verbindung mit arcpy einzulesen und zu bearbeiten.
Cindy Jayakumar

Antworten:

28

Es funktioniert nicht, weil Sie die Xlrd-Module nicht aufgerufen haben, um die Excel-Tabelle zu lesen. Implementiere es in etwa so:

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

Auf diese Weise können Sie eine XLS-Datei mit Python lesen. ArcPy liest jedoch XLS ohne Xlrd. Sie können die Excel-Arbeitsmappe als Arbeitsbereich betrachten, der möglicherweise viele Tabellen (Arbeitsblätter) enthält. Sie könnten also etwas tun wie:

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

... oder auf den Punkt gebracht mit:

arcpy.MakeXYEventLayer_management(r'E:\123.xls\Sheet1$',lat,long,layername,SpatialRef)
MappaGnosis
quelle
k, danke dann, wie ich sheet1 in Prozess einschließen kann. Mein Schritt ist wie folgt: arcpy.MakeXYEventLayer_management (input_table, lat, long, layername, SpatialRef). Ich muss dieses sheet1 in input_table einschließen. Wie kann ich?
Satya Chandra
Meine Bearbeitungen anzeigen - Sie können eine XLS- oder XLSX-Datei als Arbeitsbereich behandeln.
MappaGnosis
6
+1 für den Hinweis, dass eine XLS-Tabelle in ArcGIS tatsächlich als WORKSPACE und nicht als Datei betrachtet wird. Ein "Blatt" in einer XLS-Datei kann als analog zu einer "Tabelle" in einer Geodatabase angesehen werden.
RyanKDalton
Ich habe festgestellt, dass die Verwendung des Formats xls=r"E:\123.xls\Sheet1$"ziemlich zweifelhaft ist - manchmal funktioniert es, manchmal nicht (ich habe es an zwei Kopien derselben Arbeitsmappe ausprobiert - es hat für die andere funktioniert, das Skript mit "abgestürzt" existiert nicht " auf dem anderen).
Cindy Jayakumar
6

Sie erwähnen Ihre ArcGIS for Desktop-Version nicht. Wenn es sich jedoch um 10.2 (oder höher) handelt, sollten Sie in der Lage sein, das Excel To Table- Tool zu verwenden, das:

Konvertiert Microsoft Office Excel-Dateien in eine Tabelle.

Ihre Syntax lautet:

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