ArcPyスクリプトでExcelシートを読み取りますか?


12

私はExcelのX、Yポイントをシェープファイルに変換するPythonコードを書いています。このプロセスでは、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シートを読み込んで操作するのにも非常に役立つことがわかりました。
シンディジャヤクマー

回答:


28

Excelスプレッドシートを読み取るためにXlrdモジュールを呼び出していないため、機能しません。次のように実装します。

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
XLSスプレッドシートがファイルではなく、ArcGISのWORKSPACEを実際に考慮したことを指摘して+1。XLSファイル内の「シート」は、ジオデータベース内の「テーブル」に類似していると考えることができます。
RyanKDalton

このフォーマットxls=r"E:\123.xls\Sheet1$"を使用するとかなり危険であることがわかりました-時には機能する、時には機能しない(同じワークブックの2つのコピーで試してみました-他のワークブックでは機能しましたが、スクリプトは「存在しません」でクラッシュしました" もう一方の)。
シンディジャヤクマー

6

ArcGIS for Desktopのバージョンについては言及しませんが、10.2(またはそれ以降)の場合は、Excel To Tableツールを使用できるはずです。

Microsoft Office Excelファイルをテーブルに変換します。

構文は次のとおりです。

ExcelToTable_conversion (Input_Excel_File, Output_Table, {Sheet})
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.