Membaca lembar Excel dalam skrip ArcPy?

12

Saya sedang menulis kode python untuk mengkonversi X, Y menunjuk pada excel ke shapefile. Dalam proses ini saya punya toread xy poin dari shhet1. Apa langkah yang harus saya sertakan dalam proses saya untuk membaca data dari sheet1 buku kerja excel (97-2003).
Saya menulis kode sebagai berikut ..

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

Tapi itu tidak berfungsi.

Satya Chandra
sumber
Coba r "E: \" atau "E: /"
Aaron
ya saya sudah mencoba.
Satya Chandra
impor xlrd tidak berfungsi. Kesalahan sebagai berikut tidak ada modul bernama xlrd.
Satya Chandra
Saya telah menemukan openpyxl sangat berguna juga untuk membaca dan memanipulasi lembar Excel bersamaan dengan arcpy.
Cindy Jayakumar

Jawaban:

28

Ini tidak berfungsi karena Anda belum memanggil modul Xlrd untuk membaca lembar bentang Excel. Implementasikan sesuatu seperti ini:

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

Ini memungkinkan Anda membaca file XLS dengan Python. Namun, ArcPy akan membaca XLS tanpa Xlrd. Anda bisa mempertimbangkan buku kerja Excel sebagai ruang kerja yang berpotensi berisi banyak tabel (lembar kerja). Jadi Anda bisa melakukan sesuatu seperti:

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

... atau potong saat pengejaran dengan:

arcpy.MakeXYEventLayer_management(r'E:\123.xls\Sheet1$',lat,long,layername,SpatialRef)
MappaGnosis
sumber
k, terima kasih lalu bagaimana kita saya bisa memasukkan sheet1 dalam proses. Langkah saya adalah ikuti arcpy.MakeXYEventLayer_management (input_table, lat, long, layername, SpatialRef). Saya harus memasukkan sheet1 ke dalam input_table. Bagaimana saya bisa?
Satya Chandra
Lihat hasil edit saya - Anda dapat memperlakukan .xls atau xlsx sebagai ruang kerja.
MappaGnosis
6
+1 untuk menunjukkan bahwa spreadsheet XLS sebenarnya dianggap sebagai WORKSPACE di ArcGIS, bukan file. "Lembar" dalam file XLS dapat dianggap analog dengan "tabel" dalam geodatabase.
RyanKDalton
Saya menemukan menggunakan format yang xls=r"E:\123.xls\Sheet1$"cukup cerdik - kadang-kadang berfungsi, kadang tidak (saya sudah mencobanya di dua salinan dari buku kerja yang sama - itu bekerja untuk yang lain, skrip crash dengan "tidak ada "di sisi lain).
Cindy Jayakumar
6

Anda tidak menyebutkan ArcGIS untuk versi Desktop, tetapi jika versi 10.2 (atau lebih baru) maka Anda harus dapat menggunakan alat Excel To Table yang:

Mengubah file Microsoft Office Excel menjadi tabel.

Sintaksnya adalah:

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