python 처리 요소류와 excel 관련 데이터

5827 단어 arcpy
요소류를 excel과 연결시켜야 할 때 제어판을 사용하지 않고arcpy의 방식으로 조작하여 조작을 크게 간소화하고 효율을 높인다.먼저 excel을 조작하여 대응하는 열의 데이터를 읽고list에 저장한 다음에 요소류 QSZ 필드의 데이터를 훑어보고list 안에 있는지 판단하면 됩니다.다음은 코드 세션입니다.
>>> x = "E:/wz.xls"
>>> data = xlrd.open_workbook(x)
>>> table = data.sheet_by_index(0)
>>> nrows = table.nrows
>>>list = []
>>> for row in range(1,nrows):
...     name = table.cell(row,0).value
...     list.append(name)
>>> l = "E:/textdata/wz.gdb/zd"
>>> with arcpy.da.SearchCursor(l,("QSZ")) as cursor:
...     for r in cursor:
...         if (r[0] not in list):
...             print r[0]

결과는 일치하지 않는 QSZ 데이터입니다.
# -*-coding:utf-8 -*-
import arcpy
import xlrd
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
excelFile = arcpy.GetParameterAsText(0)
data = xlrd.open_workbook(excelFile)
list1 = []
list2 = []
table1 = data.sheet_by_index(3)
nrows1 = table1.nrows
table2 = data.sheet_by_index(4)
nrows2 = table2.nrows
table3 = data.sheet_by_index(5)
nrows3 = table3.nrows

zdFile = arcpy.GetParameterAsText(1)
finalFile = arcpy.GetParameterAsText(2)


################ ######################

textFile1 = open(finalFile+"\KuYouBiaoWu.txt","w")
for row1 in range(2,nrows1):
    name1 = table1.cell(row1,15).value 
    list1.append(name1) 
for row2 in range(1,nrows2):
    name2 = table2.cell(row2,15).value
    list1.append(name2)
for row3 in range(1,nrows3):
    name3 = table3.cell(row3,15).value
    list1.append(name3)



with arcpy.da.SearchCursor(zdFile,("QSZ")) as cursor:
    for r in cursor:
        if (r[0] not in list1):
            textFile1.write(r[0]+'
'
) textFile1.close() ################ ###################### textFile2 = open(finalFile+"\BiaoYouKuWu.txt","w") with arcpy.da.SearchCursor(zdFile,("QSZ")) as cursor: for r in cursor: list2.append(r[0]) for row1 in range(2,nrows1): name1 = table1.cell(row1,15).value if(name1 not in list2): textFile2.write(name1+'
'
) for row2 in range(2,nrows2): name2 = table2.cell(row2,15).value if(name2 not in list2): textFile2.write(name2+'
'
) for row3 in range(2,nrows3): name3 = table3.cell(row3,15).value if(name3 not in list2): textFile2.write(name3+'
'
) textFile2.close()

좋은 웹페이지 즐겨찾기