from shapefile import Reader from openpyxl import Workbook def start(): dmxpath = r'D:\4work_now\20241017dm\20241129\dzgq\dmx.shp' outpath = r'D:\4work_now\20241017dm\20241129\dzgq\DZGQzdm.xlsx' list1 = [] max1 = 0 with Reader(dmxpath) as dmx: dmxrec = dmx.records() for dmxr in dmxrec: knum = dmxr.KZ jnum = dmxr.JZ zh = dmxr.ZH_1 if zh == '': gc = -1 else: try: gc = zh.split(' ',-1)[1] except: gc = -1 lista = [] lista.append(knum) lista.append(jnum) lista.append(gc) list1.append(lista) if max1 < knum: max1 = knum wb = Workbook() # 新建工作簿 ws = wb.active mm = 0 nn = 0 ii = 1 while mm <= max1: while nn < 1000: lj = mm * 1000 + nn fn = -1 for re in list1: if re[0] == mm and re[1] == nn: ws.cell(row=ii, column=1, value=ii) ws.cell(row=ii, column=3, value=1000000) ws.cell(row=ii, column=4, value=lj) if ii == 1: ws.cell(row=ii, column=2, value=1) else: ws.cell(row=ii, column=2, value='+') if re[2] == -1: pass else: ws.cell(row=ii, column=5, value=re[2]) print(str(lj)) ii = ii + 1 fn = 1 if fn == -1: ws.cell(row=ii, column=1, value=ii) ws.cell(row=ii, column=3, value=1000000) ws.cell(row=ii, column=4, value=lj) if ii == 1: ws.cell(row=ii, column=2, value=1) else: ws.cell(row=ii, column=2, value='+') ii = ii + 1 nn = nn + 50 mm = mm + 1 nn = 0 wb.save(outpath) if __name__ == '__main__': start()