import bdb from ctypes.wintypes import LONG import os import tkinter as tk from tkinter import N, filedialog as tkFileDialog from tkinter import messagebox from xmlrpc.client import NOT_WELLFORMED_ERROR import docx import shapefile import xlrd from docx.oxml.ns import qn from docx.shared import Pt from docx.enum.text import WD_PARAGRAPH_ALIGNMENT import math import random from docx.enum.text import WD_PARAGRAPH_ALIGNMENT from copy import deepcopy def start(): #region [add] # docpath1 = r'D:\01yyj\林权模板最终版\林权调查表模板1.docx' docpath1 = r'D:\2022林权\红庙村YYJ\林权模板最终版\林权调查表模板1.docx' docpath2 = r'D:\2022林权\红庙村YYJ\林权模板最终版\林权调查表模板2.docx' docpath3 = r'D:\2022林权\红庙村YYJ\林权模板最终版\林权调查表模板3.docx' docpath4 = r'D:\2022林权\红庙村YYJ\林权模板最终版\林权调查表模板4.docx' shppath = r'D:\2022林权\三四组\宗地图斑\元坝镇中梁村三四组(原中梁村四五组)宗地合并.shp' hjpath = r'D:\20221112LQ\20221123\元坝镇中梁村三四组(原四五组)1123\元坝镇中梁村三四组户籍表.xls' jtcypath = r'D:\20221112LQ\20221123\元坝镇中梁村三四组(原四五组)1123\元坝镇中梁村三四组家庭成员信息表.xls' tfpath = r'D:\20221112LQ\20221123\TF.txt' jzdpath = r'D:\2022林权\三四组\JZD.shp' outpath = r'D:\20221112LQ\20221123\Result' szpath = r'D:\20221112LQ\20221123\LZD_gc.txt' pcpath = r'D:\20221112LQ\20221123\JZpointCount.txt' szdpath = r'D:\20221112LQ\20221123\SZpoint.txt' #endregion #region [读取] # 读取 doc1 = docx.Document(docpath1) doc2 = docx.Document(docpath2) doc3 = docx.Document(docpath3) doc4 = docx.Document(docpath4) # 读取shpfile,保存成list方便使用 try: shpfile = shapefile.Reader(shppath) except: shpfile = shapefile.Reader(shppath, encoding="gbk") # 读取jzdpath,保存成list方便使用 try: jzdfile = shapefile.Reader(jzdpath) except: jzdfile = shapefile.Reader(jzdpath, encoding="gbk") shplist = shpfile.records() jzdlist = jzdfile.records() # 读取户籍 hjfile = xlrd.open_workbook(hjpath) hjt = hjfile.sheets()[0] # 读取成员 jtcyfile = xlrd.open_workbook(jtcypath) jtcyt = jtcyfile.sheets()[0] #读取图幅 tflist = [] with open(tfpath, 'r') as tff: for tfl in tff: szzd2 = tfl.split(':', -1)[0] tf = tfl.split(':', -1)[1] tfhlist = [] tfhlist.append(szzd2) tfhlist.append(tf) tflist.append(tfhlist) #邻宗地 szlist = [] with open(szpath, 'r') as szf: for szl in szf: szzd1 = szl.split(':', -1)[0] # str3 = szl.split(':', -1)[1] szplist = [] szplist.append(szzd1) #排除最后一个是换行符 # szplist.append(str3.split(";",-1)) szplist.append(szl.split(";",-1)) szlist.append(szplist) #总点数 # # 读取界址点数txt,转化为list pclist = [] with open(pcpath, 'r') as pcf: for pcl in pcf: szzd1 = pcl.split(':', -1)[0] # str3 = szl.split(':', -1)[1] pcplist = [] pcplist.append(szzd1) str11 = pcl.split(':', -1)[1] try: pc = int(str11.replace('\n','')) except: pc = 0 print('pclist Error') pcplist.append(pc) pclist.append(pcplist) #读取四至点位 szdlist = [] with open(szdpath, 'r') as szdf: for szdl in szdf: szzd1 = szdl.split(':', -1)[0] # str3 = szl.split(':', -1)[1] szsdlist = [] szsdlist.append(szzd1) str11 = szdl.split(':', -1)[1] szd1 = str11.split(',',-1)[0] szd2 = str11.split(',',-1)[1] szd3 = str11.split(',',-1)[2] szds = str11.split(',',-1)[3] szd4 = szds.replace('\n','') szsdlist.append(szd1) szsdlist.append(szd2) szsdlist.append(szd3) szsdlist.append(szd4) szdlist.append(szsdlist) #endregion ii = 0 #家庭成员是list4 #邻宗地信息是list6 #邻宗地人员信息是list10 kk3 = 0 dw1 = '' dg = '' skk3 = 0 while ii < len(shplist): #region [关键词] list1 = shplist[ii] #宗地编号 zdh = list1['宗地编号'] #户编码 hbm = list1["户编号"] #权利人 qlr = list1['权利人'] # 组合成名字 docname = zdh + '-' + qlr + '林权调查表.docx' out_docpath = outpath + '/' + docname #endregion if os.path.exists(out_docpath): print(zdh + ' exists') else: #region [数据] # try: # 四至 shp_szb = list1['四至北'] shp_szd = list1['四至东'] shp_szn = list1['四至南'] shp_szx = list1['四至西'] #总点数 zz = 0 pcount =0 while zz < len(pclist): if pclist[zz][0] == zdh: pcount = pclist[zz][1] break else: zz = zz + 1 #先把有判断因素的东西弄出来 # 联动对应家庭成员表(户编码) mm2 = 0 list4 = [] while mm2 < jtcyt.nrows: str1 = jtcyt.cell(mm2, 0).value if str1 == hbm: # 先把个人信息存入list slist = [] nn2 = 0 while nn2 < 5: slist.append(jtcyt.cell(mm2, nn2).value) nn2 = nn2 + 1 # 保证第一个是权利人 if jtcyt.cell(mm2, 2).value == qlr: list4.insert(0, slist) else: list4.append(slist) mm2 = mm2 + 1 #家庭成员人数 cys = len(list4) #邻宗地 # 联动读取四至 mm4 = 0 list6 = [] while mm4 < len(szlist): zddm3 = szlist[mm4][0] if zddm3 == zdh: nn4 = 0 szlist1 = szlist[mm4][1] while nn4 < len(szlist1) - 1: if nn4 == 0: lzdstr = szlist1[0].split(':',-1)[1] lzdname = lzdstr.split(',',-1)[0] else: lzdname = szlist1[nn4].split(',',-1)[0] if 'JE' in lzdname: #匹配找到对应人的身份信息 nn5 = 0 while nn5 < hjt.nrows: str4 = hjt.cell(nn5, 14).value if str4== lzdname: try: lzdqrl = hjt.cell(nn5, 3).value except: lzdqrl = hjt.cell(nn5, 3) lzdstr1 = lzdqrl + '(' + lzdname + ')' slist6 = [] slist6.append(lzdstr1) #整个排下序 num0 = szlist1[nn4].split(',',-1)[1] num1 = szlist1[nn4].split(',',-1)[2] xhnum = int(num0.replace('J','')) slist6.append(num0) slist6.append(num1) slist6.append(lzdname) slist6.append(xhnum) list6.append(slist6) break else: nn5 = nn5 + 1 if 'LAKE' in lzdname: slist6 = [] slist6.append('乔木林地') # sznum= -1 num0 = szlist1[nn4].split(',',-1)[1] num1 = szlist1[nn4].split(',',-1)[2] xhnum = int(num0.replace('J','')) slist6.append(num0) slist6.append(num1) slist6.append('') slist6.append(xhnum) # slist6.append(sznum) list6.append(slist6) if 'SZB' in lzdname: slist6 = [] if 'JE' in shp_szb: pass else: slist6.append(shp_szb) num0 = szlist1[nn4].split(',',-1)[1] num1 = szlist1[nn4].split(',',-1)[2] xhnum = int(num0.replace('J','')) slist6.append(num0) slist6.append(num1) slist6.append('') slist6.append(xhnum) list6.append(slist6) if 'SZD' in lzdname: slist6 = [] if 'JE' in shp_szd: pass else: slist6.append(shp_szd) sznum = 0 num0 = szlist1[nn4].split(',',-1)[1] num1 = szlist1[nn4].split(',',-1)[2] xhnum = int(num0.replace('J','')) slist6.append(num0) slist6.append(num1) slist6.append('') slist6.append(xhnum) list6.append(slist6) if 'SZN' in lzdname: slist6 = [] if 'JE' in shp_szn: pass else: slist6.append(shp_szn) sznum = 0 num0 = szlist1[nn4].split(',',-1)[1] num1 = szlist1[nn4].split(',',-1)[2] xhnum = int(num0.replace('J','')) slist6.append(num0) slist6.append(num1) slist6.append('') slist6.append(xhnum) list6.append(slist6) if 'SZX' in lzdname: slist6 = [] if 'JE' in shp_szx: pass else: slist6.append(shp_szx) sznum = 0 num0 = szlist1[nn4].split(',',-1)[1] num1 = szlist1[nn4].split(',',-1)[2] xhnum = int(num0.replace('J','')) slist6.append(num0) slist6.append(num1) slist6.append('') slist6.append(xhnum) list6.append(slist6) nn4 = nn4 + 1 break else: mm4 = mm4 + 1 list6.sort(key=takesixth) list61 = [] list61 = chsf(list6,pcount) list6 = [] if len(list61) == 1: slist6 = [] slist6.append(list61[0][0]) slist6.append('J1') slist6.append('J' +str(pcount)) list6.append(slist6) slist6 = [] slist6.append(list61[0][0]) slist6.append('J' +str(pcount)) slist6.append('J1') list6.append(slist6) else: list6 = list61 kk1 = 0 pd1 = 0 list8 = [] list10 = [] qlrname = [] while kk1 < len(list6): try: str5 = list6[kk1][0].value qlrna = str5.split('(',-1)[0] except: str5 = list6[kk1][0] qlrna = str5.split('(',-1)[0] #除重 if qlrna in qlrname: pass else: qlrname.append(qlrna) ii2 = 0 while ii2 < len(shplist): list7 = shplist[ii2] slist8 = [] if list7['权利人'] == qlrna: slist8.append(qlrna) zdbdh = list7['电话'] slist8.append(zdbdh) list8.append(slist8) pd1 = 1 break ii2 = ii2 + 1 if pd1 == 0: slist8.append(qlrna) slist8.append('') list8.append(slist8) ii3 = 0 while ii3 < hjt.nrows: str6 = hjt.cell(ii3, 3).value if str6 == qlrna: slist10 = [] slist10.append(qlrna) #把上面读的电话读进来 kk2 = 0 while kk2 < len(list8): if list8[kk2][0] == qlrna: slist10.append(list8[kk2][1]) break else: kk2 = kk2 + 1 slist10.append(hjt.cell(ii3, 9).value) list10.append(slist10) break ii3 = ii3 + 1 kk1 = kk1 + 1 #读到四至点 aa2 = 0 bdd = '' dnd = '' nxd = '' xbd = '' while aa2 < len(szdlist): zdbh2 = szdlist[aa2][0] if zdbh2 == zdh: xbd = szdlist[aa2][1] bdd = szdlist[aa2][2] dnd = szdlist[aa2][3] nxd = szdlist[aa2][4] break else: aa2 = aa2 + 1 bddh = int(bdd.replace('J','')) dndh = int(dnd.replace('J','')) nxdh = int(nxd.replace('J','')) xbdh = int(xbd.replace('J','')) zds = len(list6) qlrs = len(list10) if cys < 7: if qlrs >= 7 or zds > 10: doc = doc2 else: doc = doc1 else: if qlrs >= 7 or zds > 10: doc = doc4 else: doc = doc3 #把其他内容补齐 #lx为1则为集体,0是个人 lx = 0 if '集体' in qlr: lx = 1 # 获取调查时间 # dcsj = str(list1['调查日期']) # 拆分成年月日 # try: # dcyear = dcsj.split('-', -1)[0] # dcmonth = dcsj.split('-', -1)[1] # dcday = dcsj.split('-', -1)[2] # except: # try: # dcyear = dcsj.split('/', -1)[0] # dcmonth = dcsj.split('/', -1)[1] # dcdays = dcsj.split('/', -1)[2] # dcday = dcdays.replace('\n','') # except: # dcyear = dcsj[0:4] # dcmonth = dcsj[4:6] # dcday = dcsj[6:8] # dc_nyr = dcyear + '年 ' + dcmonth + '月 ' + dcday + '日' dc_nyr = '2022年8月25日' # 调查员 dcy = list1['调查员'] # 坐落 # 如果包含括号去掉括号部分 zl = list1['坐落'] if "(" in zl: zl_1 = zl.split('(', -1)[0] elif "(" in zl: zl_1 = zl.split('(', -1)[0] else: zl_1 = zl # 权属来源 qsly = list1['权属来源'] # 来源编号 lybh = list1['来源编号'] # 现面积()保留两位 now_area = str(round(float(list1['面积']), 2)) # 转换成亩()保留两位 now_area_m = str(round((float(list1['面积']) * 0.0015), 2)) # 终止日期(如果为空,则为‘长期’) zz_date = str(list1['终止日期']) qs_date = str(list1['起始日期']) # if zz_date == 'None' or zz_date == '长期' or zz_date == None: # # 则为长期 # zz_nyr = '长期' # else: # zzyear = zz_date.split('-', -1)[0] # zzmonth = zz_date.split('-', -1)[1] # zzday = zz_date.split('-', -1)[2] # zz_nyr = zzyear + '年 ' + zzmonth + '月 ' + zzday + '日止' zz_nyr = '长期' # 权利人电话 qlrtel = list1["电话"] # 造林年度 zlnd = list1['造林年度'] # 小地名 xdm = list1['小地名'] # 林班 lb = list1["林班"] # 小班 xb = list1["小班"] # 起源 qy = list1["起源"] # 株数 zs = list1["株数"] # 主要树种 zysz = list1["主要树种"] # 林种 lz = list1['林种'] # 证载面积 zzmj = str(list1['证载面积']) # 证载四至 zzb = list1['证四至北'] zzd = list1['证四至东'] zzn = list1['证四至南'] zzx = list1['证四至西'] #法人信息 frxm = list1['法人'] frzjlx = list1['法人证件'] frzjh = list1['法人证号'] frdh = list1['法人电话'] #所有权(后期新增) syq = list1['所有权'] #备注相关 # yzqlr = list1['原证权利人'] yzqlr = list1['原证权'] bz = list1['备注1'] bzstr = '' if bz == '已故': bzstr = '原证载权利人' + yzqlr + '已故,由' + qlr + '继承' + ';' elif bz == '变更': bzstr = '原证载权利人' + yzqlr + '户籍户主已变更,更改为' + qlr + ';' else: bzstr = '' # 联动对应户籍表数据 mm = 0 list2 = [] while mm < hjt.nrows: str1 = hjt.cell(mm, 4).value if str1 == hbm: nn = 0 while nn < 13: # 把那一行的数据读出来 list2.append(hjt.cell(mm, nn).value) nn = nn + 1 break else: mm = mm + 1 # 联动界址点shp mm3 = 0 list5 = [] while mm3 < len(jzdlist): plist = jzdlist[mm3] zddm = plist['ZDBH'] if zddm == zdh: slist5 = [] slist5.append(plist['JZDH']) slist5.append(plist['xx']) slist5.append(plist['yy']) list5.append(slist5) mm3 = mm3 + 1 else: mm3 = mm3 + 1 # 联动读取图幅号 mm5 = 0 tfh = '' while mm5 < len(tflist): zddm4 = tflist[mm5][0] if zddm4 == zdh: tfhs = tflist[mm5][1] tfh = tfhs.replace('\n','') break else: mm5 = mm5 + 1 #endregion #region [第一张表] #开始写 for paragraph in doc.paragraphs: parstr = paragraph.text if '不动产权籍调查表' in parstr: for paragraph in doc.paragraphs: for run in paragraph.runs: if '不动产权籍调查表' in run.text: run.font.size = Pt(26) run.font.name = "黑体" # 设置像黑体这样的中文字体,必须添加下面 2 行代码 r = run._element.rPr.rFonts r.set(qn("w:eastAsia"), "黑体") if '宗海代码' in parstr: paragraph.text = '宗 地/宗海代码:' + zdh for paragraph in doc.paragraphs: for run in paragraph.runs: if '宗海代码' in run.text: run.font.size = Pt(16) run.font.name = "黑体" # 设置像黑体这样的中文字体,必须添加下面 2 行代码 r = run._element.rPr.rFonts r.set(qn("w:eastAsia"), "黑体") if '调查时间' in parstr: # paragraph.text = '调查时间:' + dc_nyr paragraph.text = '调查时间:' + dc_nyr for paragraph in doc.paragraphs: for run in paragraph.runs: if '调查时间' in run.text: run.font.size = Pt(15) run.font.name = "黑体" # 设置像黑体这样的中文字体,必须添加下面 2 行代码 r = run._element.rPr.rFonts r.set(qn("w:eastAsia"), "黑体") if '调查员' in parstr: paragraph.text = '调查员:' + dcy + '\t\t\t\t\t\t\t\t\t\t\t\t\t' + '日期:' + dc_nyr # paragraph.text = '调查员:' + dcy + '\t\t\t\t\t\t\t\t\t\t\t\t\t' + '日期:2022年11月25日' # paragraph.text = '调查员:李阳\t\t\t\t\t\t\t\t\t\t\t\t\t' + '日期:2022年8月25日' paragraph.style.font.name = '宋体' paragraph.style.font.size = Pt(10.5) table1 = doc.tables[0] # 这里自动清空内容 # 所有权 table1.cell(1, 3).paragraphs[0].text = '' run = table1.cell(1,3).paragraphs[0].add_run(syq) run.font.name = '仿宋' run.font.size = Pt(10.5) r = run._element r.rPr.rFonts.set(qn('w:eastAsia'), '仿宋') # 权利人 table1.cell(2, 3).paragraphs[0].text = '' run = table1.cell(2, 3).paragraphs[0].add_run(qlr) run.font.name = '仿宋' run.font.size = Pt(10.5) r = run._element r.rPr.rFonts.set(qn('w:eastAsia'), '仿宋') if lx == 1: #集体 #权力性质 table1.cell(6, 10).paragraphs[0].text = '' run = table1.cell(6, 10).paragraphs[0].add_run('其他方式承包') run.font.name = '仿宋' run.font.size = Pt(10.5) r = run._element r.rPr.rFonts.set(qn('w:eastAsia'), '仿宋') #法人信息 table1.cell(9,5).paragraphs[0].text = '' run = table1.cell(9, 5).paragraphs[0].add_run(frxm) run.font.name = '仿宋' run.font.size = Pt(10.5) r = run._element r.rPr.rFonts.set(qn('w:eastAsia'), '仿宋') table1.cell(8, 10).paragraphs[0].text = '' run = table1.cell(8, 10).paragraphs[0].add_run(frzjlx) run.font.name = '仿宋' run.font.size = Pt(10.5) r = run._element r.rPr.rFonts.set(qn('w:eastAsia'), '仿宋') table1.cell(9,10).paragraphs[0].text = '' run = table1.cell(9, 10).paragraphs[0].add_run(frzjh) run.font.name = '仿宋' run.font.size = Pt(10.5) r = run._element r.rPr.rFonts.set(qn('w:eastAsia'), '仿宋') table1.cell(9, 17).paragraphs[0].text = '' run = table1.cell(9, 17).paragraphs[0].add_run(frdh) run.font.name = '仿宋' run.font.size = Pt(10.5) r = run._element r.rPr.rFonts.set(qn('w:eastAsia'), '仿宋') else: #权力性质 table1.cell(6, 10).paragraphs[0].text = '' run = table1.cell(6, 10).paragraphs[0].add_run('家庭承包') run.font.name = '仿宋' run.font.size = Pt(10.5) r = run._element r.rPr.rFonts.set(qn('w:eastAsia'), '仿宋') #法人信息 table1.cell(9,5).paragraphs[0].text = '' run = table1.cell(9, 5).paragraphs[0].add_run('/') run.font.name = '仿宋' run.font.size = Pt(10.5) r = run._element r.rPr.rFonts.set(qn('w:eastAsia'), '仿宋') table1.cell(8, 10).paragraphs[0].text = '' run = table1.cell(8, 10).paragraphs[0].add_run('/') run.font.name = '仿宋' run.font.size = Pt(10.5) r = run._element r.rPr.rFonts.set(qn('w:eastAsia'), '仿宋') table1.cell(9,10).paragraphs[0].text = '' run = table1.cell(9, 10).paragraphs[0].add_run('/') run.font.name = '仿宋' run.font.size = Pt(10.5) r = run._element r.rPr.rFonts.set(qn('w:eastAsia'), '仿宋') table1.cell(9, 17).paragraphs[0].text = '' run = table1.cell(9, 17).paragraphs[0].add_run('/') run.font.name = '仿宋' run.font.size = Pt(10.5) r = run._element r.rPr.rFonts.set(qn('w:eastAsia'), '仿宋') # 土地权属来源证明材料 table1.cell(6, 15).paragraphs[0].text = '' run = table1.cell(6, 15).paragraphs[0].add_run(qsly + '\n' + lybh) run.font.name = '仿宋' run.font.size = Pt(10.5) r = run._element r.rPr.rFonts.set(qn('w:eastAsia'), '仿宋') # 土地坐落 table1.cell(7, 3).paragraphs[0].text = '' run = table1.cell(7, 3).paragraphs[0].add_run(zl) run.font.name = '仿宋' run.font.size = Pt(10.5) r = run._element r.rPr.rFonts.set(qn('w:eastAsia'), '仿宋') # 宗地代码 table1.cell(14, 15).paragraphs[0].text = '' run = table1.cell(14, 15).paragraphs[0].add_run(zdh) run.font.name = '仿宋' run.font.size = Pt(10.5) r = run._element r.rPr.rFonts.set(qn('w:eastAsia'), '仿宋') # 图幅号 table1.cell(17, 10).paragraphs[0].text = '' run = table1.cell(17, 10).paragraphs[0].add_run(tfh) run.font.name = '仿宋' run.font.size = Pt(10.5) r = run._element r.rPr.rFonts.set(qn('w:eastAsia'), '仿宋') # 比例尺 table1.cell(16, 10).paragraphs[0].text = '' run = table1.cell(16, 10).paragraphs[0].add_run("1:2000") run.font.name = '仿宋' run.font.size = Pt(10.5) r = run._element r.rPr.rFonts.set(qn('w:eastAsia'), '仿宋') # 新四至 table1.cell(18, 5).paragraphs[0].text = '' run = table1.cell(18, 5).paragraphs[0].add_run("北:" + shp_szb) run.font.name = '仿宋' run.font.size = Pt(10.5) r = run._element r.rPr.rFonts.set(qn('w:eastAsia'), '仿宋') table1.cell(19, 5).paragraphs[0].text = '' run = table1.cell(19, 5).paragraphs[0].add_run("东:" + shp_szd) run.font.name = '仿宋' run.font.size = Pt(10.5) r = run._element r.rPr.rFonts.set(qn('w:eastAsia'), '仿宋') table1.cell(20, 5).paragraphs[0].text = '' run = table1.cell(20, 5).paragraphs[0].add_run("南:" + shp_szn) run.font.name = '仿宋' run.font.size = Pt(10.5) r = run._element r.rPr.rFonts.set(qn('w:eastAsia'), '仿宋') table1.cell(21, 5).paragraphs[0].text = '' run = table1.cell(21, 5).paragraphs[0].add_run("西:" + shp_szx) run.font.name = '仿宋' run.font.size = Pt(10.5) r = run._element r.rPr.rFonts.set(qn('w:eastAsia'), '仿宋') # 现宗地面积 table1.cell(25, 10).paragraphs[0].text = '' run = table1.cell(25, 10).paragraphs[0].add_run(now_area) run.font.name = '仿宋' run.font.size = Pt(10.5) r = run._element r.rPr.rFonts.set(qn('w:eastAsia'), '仿宋') # 土地使用期限 table1.cell(27, 10).paragraphs[0].text = '' run = table1.cell(27, 10).paragraphs[0].add_run(zz_nyr) run.font.name = '仿宋' run.font.size = Pt(10.5) r = run._element r.rPr.rFonts.set(qn('w:eastAsia'), '仿宋') #清空家庭成员表 if doc == doc1 or doc == doc3: xx0 = 0 try: while xx0 < 5: table1.cell((30+xx0), 4).paragraphs[0].text = '' table1.cell((30+xx0), 5).paragraphs[0].text = '' table1.cell((30+xx0), 17).paragraphs[0].text = '' xx0 = xx0 + 1 except: pass else: table1.cell(30, 5).paragraphs[0].text = '' # 如果没有匹配上的,不影响其他运行 if list2 == []: print(hbm + ' 无户籍数据对应,请检查。') else: if lx == 0: # 权利人类型 table1.cell(2, 13).paragraphs[0].text = '' run = table1.cell(2, 13).paragraphs[0].add_run('个人') run.font.name = '仿宋' run.font.size = Pt(10.5) r = run._element r.rPr.rFonts.set(qn('w:eastAsia'), '仿宋') # 证件类型 table1.cell(3, 13).paragraphs[0].text = '' run = table1.cell(3, 13).paragraphs[0].add_run('身份证') run.font.name = '仿宋' run.font.size = Pt(10.5) r = run._element r.rPr.rFonts.set(qn('w:eastAsia'), '仿宋') # 证件号 table1.cell(4, 13).paragraphs[0].text = '' run = table1.cell(4, 13).paragraphs[0].add_run(list2[9]) run.font.name = '仿宋' run.font.size = Pt(10.5) r = run._element r.rPr.rFonts.set(qn('w:eastAsia'), '仿宋') # 通讯地址(户口所在地) table1.cell(5, 13).paragraphs[0].text = '' run = table1.cell(5, 13).paragraphs[0].add_run(list2[10]) run.font.name = '仿宋' run.font.size = Pt(10.5) r = run._element r.rPr.rFonts.set(qn('w:eastAsia'), '仿宋') else: # 权利人类型 table1.cell(2, 13).paragraphs[0].text = '' run = table1.cell(2, 13).paragraphs[0].add_run('其他') run.font.name = '仿宋' run.font.size = Pt(10.5) r = run._element r.rPr.rFonts.set(qn('w:eastAsia'), '仿宋') # 证件类型 table1.cell(3, 13).paragraphs[0].text = '' run = table1.cell(3, 13).paragraphs[0].add_run('/') run.font.name = '仿宋' run.font.size = Pt(10.5) r = run._element r.rPr.rFonts.set(qn('w:eastAsia'), '仿宋') # 证件号 table1.cell(4, 13).paragraphs[0].text = '' run = table1.cell(4, 13).paragraphs[0].add_run('/') run.font.name = '仿宋' run.font.size = Pt(10.5) r = run._element r.rPr.rFonts.set(qn('w:eastAsia'), '仿宋') # 通讯地址(户口所在地) try: table1.cell(5, 13).paragraphs[0].text = '' run = table1.cell(5, 13).paragraphs[0].add_run(list2[10]) run.font.name = '仿宋' run.font.size = Pt(10.5) r = run._element r.rPr.rFonts.set(qn('w:eastAsia'), '仿宋') except: print(zdh + 'address Error') if doc == doc1 or doc == doc2: #6个人及以下 if zzb ==''and zzd=='' and zzn =='' and zzx == '': table1.cell(35, 5).paragraphs[0].text = '' run = table1.cell(35, 5).paragraphs[0].add_run('') run.font.name = '仿宋' run.font.size = Pt(10.5) r = run._element r.rPr.rFonts.set(qn('w:eastAsia'), '仿宋') else: table1.cell(35, 5).paragraphs[0].text = '' run = table1.cell(35, 5).paragraphs[0].add_run(bzstr + '该户原林权证证载宗地四至是' + \ ";东:" + zzd + ";南:" + zzn + ";西:" + zzx + "。原林权证证载面积" + zzmj + "亩。") run.font.name = '仿宋' run.font.size = Pt(10.5) r = run._element r.rPr.rFonts.set(qn('w:eastAsia'), '仿宋') if list4 == []: print(hbm + ' 无家庭成员数据对应,请检查。') elif len(list4) == 1: # 只有户主一个人的,不填写 pass else: pp = 1 while pp < len(list4): run = table1.cell((29 + pp), 4).paragraphs[0].add_run(list4[(pp)][2]) run.font.name = '仿宋' run.font.size = Pt(10.5) r = run._element r.rPr.rFonts.set(qn('w:eastAsia'), '仿宋') run = table1.cell((29 + pp), 5).paragraphs[0].add_run(list4[(pp)][4]) run.font.name = '仿宋' run.font.size = Pt(10.5) r = run._element r.rPr.rFonts.set(qn('w:eastAsia'), '仿宋') try: run = table1.cell((29 + pp), 17).paragraphs[0].add_run(list4[(pp)][3]) run.font.name = '仿宋' run.font.size = Pt(10.5) r = run._element r.rPr.rFonts.set(qn('w:eastAsia'), '仿宋') except: table1.cell((29 + pp), 17).paragraphs[0].text = '' pp = pp + 1 else: #6个人以上 if zzb ==''and zzd=='' and zzn =='' and zzx == '': table1.cell(30, 5).paragraphs[0].text = '' else: table1.cell(30, 5).paragraphs[0].text = '' run = table1.cell(30, 5).paragraphs[0].add_run(bzstr + '该户原林权证证载宗地四至是' + "北:" + zzb + \ ";东:" + zzd + ";南:" + zzn + ";西:" + zzx + "。原林权证证载面积" + zzmj + "亩。") run.font.name = '仿宋' run.font.size = Pt(10.5) r = run._element r.rPr.rFonts.set(qn('w:eastAsia'), '仿宋') jtcystr = '' pp = 1 while pp < len(list4): str2 = list4[(pp)][2] + ',' + list4[(pp)][3] + ',' + list4[(pp)][4] + ';\n' jtcystr = jtcystr + str2 pp = pp + 1 table1.cell(29, 5).paragraphs[0].text = jtcystr #endregion #region [第二张表] #这里开始都不能固定 listc5 = len(list5) kk3 = 0 kk5 = listc5 // 21 kk4 = listc5 % 21 if kk4 == 0: kk3 = kk5 else: kk3 = kk5 + 1 if kk3 < 2: table2 = doc.tables[1] dg = table2.cell(3, 5).paragraphs[0].text if skk3 < 2: #只是清空 bb0 = 0 table2 = doc.tables[1] while bb0 < 21: try: table2.cell(((bb0 * 2) + 3), 0).paragraphs[0].text = '' table2.cell(((bb0 * 2) + 3), 5).paragraphs[0].text = '' table2.cell(((bb0 * 2) + 4), 7).paragraphs[0].text = '' table2.cell(((bb0 * 2) + 4), 14).paragraphs[0].text = '' table2.cell(((bb0 * 2) + 4), 16).paragraphs[0].text = '' table2.cell(((bb0 * 2) + 4), 17).paragraphs[0].text = '' table2.cell(((bb0 * 2) + 4), 18).paragraphs[0].text = '' bb0 = bb0 + 1 except: bb0 = bb0 + 1 #记得最后一行特殊的也要删除 table2.cell(44, 0).paragraphs[0].text = '' table2.cell(44, 5).paragraphs[0].text = '' table2.cell(43, 7).paragraphs[0].text = '' table2.cell(43, 14).paragraphs[0].text = '' table2.cell(43, 16).paragraphs[0].text = '' table2.cell(43, 17).paragraphs[0].text = '' table2.cell(43, 18).paragraphs[0].text = '' else: #删的只剩一个表 nn3 = 1 while nn3 < skk3: paragraph = doc.paragraphs[31] tables = doc.tables[2] tables._element.getparent().remove(tables._element) p = paragraph._element p.getparent().remove(p) nn3 = nn3 + 1 doc.save(out_docpath) #清空表 table2 = doc.tables[1] bb0 = 0 while bb0 < 21: try: table2.cell(((bb0 * 2) + 3), 0).paragraphs[0].text = '' table2.cell(((bb0 * 2) + 3), 5).paragraphs[0].text = '' table2.cell(((bb0 * 2) + 4), 7).paragraphs[0].text = '' table2.cell(((bb0 * 2) + 4), 14).paragraphs[0].text = '' table2.cell(((bb0 * 2) + 4), 16).paragraphs[0].text = '' table2.cell(((bb0 * 2) + 4), 17).paragraphs[0].text = '' table2.cell(((bb0 * 2) + 4), 18).paragraphs[0].text = '' bb0 = bb0 + 1 except: bb0 = bb0 + 1 #记得最后一行特殊的也要删除 table2.cell(44, 0).paragraphs[0].text = '' table2.cell(44, 5).paragraphs[0].text = '' table2.cell(43, 7).paragraphs[0].text = '' table2.cell(43, 14).paragraphs[0].text = '' table2.cell(43, 16).paragraphs[0].text = '' table2.cell(43, 17).paragraphs[0].text = '' table2.cell(43, 18).paragraphs[0].text = '' skk3 = kk3 aa = 0 while aa < len(list5): try: run = table2.cell(((aa * 2) + 3), 0).paragraphs[0].add_run(str(list5[aa][0])) run.font.name = '仿宋' run.font.size = Pt(10.5) r = run._element r.rPr.rFonts.set(qn('w:eastAsia'), '仿宋') if aa == len(list5) - 1: run = table2.cell(((aa * 2) + 3), 5).paragraphs[0].add_run(dg) run.font.name = '仿宋' run.font.size = Pt(10.5) r = run._element r.rPr.rFonts.set(qn('w:eastAsia'), '仿宋') else: #计算间距 xc = abs(list5[aa+1][1] - list5[aa][1]) yc = abs(list5[aa+1][2] - list5[aa][2]) xxc = xc * xc yyc = yc * yc dis = round(math.sqrt(xxc + yyc),2) run = table2.cell(((aa * 2) + 3), 5).paragraphs[0].add_run(dg) run.font.name = '仿宋' run.font.size = Pt(10.5) r = run._element r.rPr.rFonts.set(qn('w:eastAsia'), '仿宋') run = table2.cell(((aa * 2) + 4), 7).paragraphs[0].add_run(str(dis)) run.font.name = '仿宋' run.font.size = Pt(10.5) r = run._element r.rPr.rFonts.set(qn('w:eastAsia'), '仿宋') run = table2.cell(((aa * 2) + 4), 14).paragraphs[0].add_run(dg) run.font.name = '仿宋' run.font.size = Pt(10.5) r = run._element r.rPr.rFonts.set(qn('w:eastAsia'), '仿宋') run = table2.cell(((aa * 2) + 4), 17).paragraphs[0].add_run(dg) run.font.name = '仿宋' run.font.size = Pt(10.5) r = run._element r.rPr.rFonts.set(qn('w:eastAsia'), '仿宋') aa = aa + 1 except: aa = aa + 1 try: run = table2.cell(((aa * 2) + 3), 0).paragraphs[0].add_run(str(list5[0][0])) run.font.name = '仿宋' run.font.size = Pt(10.5) r = run._element r.rPr.rFonts.set(qn('w:eastAsia'), '仿宋') #计算间距 xc = abs(list5[len(list5)-1][1] - list5[0][1]) yc = abs(list5[len(list5)-1][2] - list5[0][2]) xxc = xc * xc yyc = yc * yc dis = round(math.sqrt(xxc + yyc),2) run = table2.cell(((aa * 2) + 3), 5).paragraphs[0].add_run(dg) run.font.name = '仿宋' run.font.size = Pt(10.5) r = run._element r.rPr.rFonts.set(qn('w:eastAsia'), '仿宋') run = table2.cell(((aa * 2) + 2), 7).paragraphs[0].add_run(str(dis)) run.font.name = '仿宋' run.font.size = Pt(10.5) r = run._element r.rPr.rFonts.set(qn('w:eastAsia'), '仿宋') run = table2.cell(((aa * 2) + 2), 14).paragraphs[0].add_run(dg) run.font.name = '仿宋' run.font.size = Pt(10.5) r = run._element r.rPr.rFonts.set(qn('w:eastAsia'), '仿宋') run = table2.cell(((aa * 2) + 2), 17).paragraphs[0].add_run(dg) run.font.name = '仿宋' run.font.size = Pt(10.5) r = run._element r.rPr.rFonts.set(qn('w:eastAsia'), '仿宋') except: #刚好是在最后一行的那个(固定位置) run = table2.cell(44, 0).paragraphs[0].add_run(str(list5[0][0])) run.font.name = '仿宋' run.font.size = Pt(10.5) r = run._element r.rPr.rFonts.set(qn('w:eastAsia'), '仿宋') #计算间距 xc = abs(list5[len(list5)-1][1] - list5[0][1]) yc = abs(list5[len(list5)-1][2] - list5[0][2]) xxc = xc * xc yyc = yc * yc dis = round(math.sqrt(xxc + yyc),2) run = table2.cell(44, 5).paragraphs[0].add_run(dg) run.font.name = '仿宋' run.font.size = Pt(10.5) r = run._element r.rPr.rFonts.set(qn('w:eastAsia'), '仿宋') run = table2.cell(43, 7).paragraphs[0].add_run(str(dis)) run.font.name = '仿宋' run.font.size = Pt(10.5) r = run._element r.rPr.rFonts.set(qn('w:eastAsia'), '仿宋') run = table2.cell(43, 14).paragraphs[0].add_run(dg) run.font.name = '仿宋' run.font.size = Pt(10.5) r = run._element r.rPr.rFonts.set(qn('w:eastAsia'), '仿宋') run = table2.cell(43, 17).paragraphs[0].add_run(dg) run.font.name = '仿宋' run.font.size = Pt(10.5) r = run._element r.rPr.rFonts.set(qn('w:eastAsia'), '仿宋') else: table2 = doc.tables[1] dg = table2.cell(3, 5).paragraphs[0].text if skk3 < 2: #只是清空 bb0 = 0 table2 = doc.tables[1] while bb0 < 21: try: table2.cell(((bb0 * 2) + 3), 0).paragraphs[0].text = '' table2.cell(((bb0 * 2) + 3), 5).paragraphs[0].text = '' table2.cell(((bb0 * 2) + 4), 7).paragraphs[0].text = '' table2.cell(((bb0 * 2) + 4), 14).paragraphs[0].text = '' table2.cell(((bb0 * 2) + 4), 16).paragraphs[0].text = '' table2.cell(((bb0 * 2) + 4), 17).paragraphs[0].text = '' table2.cell(((bb0 * 2) + 4), 18).paragraphs[0].text = '' bb0 = bb0 + 1 except: bb0 = bb0 + 1 #记得最后一行特殊的也要删除 table2.cell(44, 0).paragraphs[0].text = '' table2.cell(44, 5).paragraphs[0].text = '' table2.cell(43, 7).paragraphs[0].text = '' table2.cell(43, 14).paragraphs[0].text = '' table2.cell(43, 16).paragraphs[0].text = '' table2.cell(43, 17).paragraphs[0].text = '' table2.cell(43, 18).paragraphs[0].text = '' else: #删的只剩一个表 nn3 = 1 while nn3 < skk3: paragraph = doc.paragraphs[31] tables = doc.tables[2] tables._element.getparent().remove(tables._element) p = paragraph._element p.getparent().remove(p) nn3 = nn3 + 1 doc.save(out_docpath) #清空表 table2 = doc.tables[1] bb0 = 0 while bb0 < 21: try: table2.cell(((bb0 * 2) + 3), 0).paragraphs[0].text = '' table2.cell(((bb0 * 2) + 3), 5).paragraphs[0].text = '' table2.cell(((bb0 * 2) + 4), 7).paragraphs[0].text = '' table2.cell(((bb0 * 2) + 4), 14).paragraphs[0].text = '' table2.cell(((bb0 * 2) + 4), 16).paragraphs[0].text = '' table2.cell(((bb0 * 2) + 4), 17).paragraphs[0].text = '' table2.cell(((bb0 * 2) + 4), 18).paragraphs[0].text = '' bb0 = bb0 + 1 except: bb0 = bb0 + 1 #记得最后一行特殊的也要删除 table2.cell(44, 0).paragraphs[0].text = '' table2.cell(44, 5).paragraphs[0].text = '' table2.cell(43, 7).paragraphs[0].text = '' table2.cell(43, 14).paragraphs[0].text = '' table2.cell(43, 16).paragraphs[0].text = '' table2.cell(43, 17).paragraphs[0].text = '' table2.cell(43, 18).paragraphs[0].text = '' skk3 = kk3 #先加table aa0 = 1 while aa0 < kk3: table2 = doc.tables[1] new_t = deepcopy(table2) paragraph = doc.paragraphs[31] paragraph.insert_paragraph_before(text=None,style=None) paragraph._p.addnext(new_t._element) aa0 = aa0 + 1 #分批次把内容加上 aa = 0 a21 = 21 aa1 = 0 while aa < len(list5): if a21 == 21: try: if aa == 0: pass else: #写在前一张表上 run = table2.cell(44, 0).paragraphs[0].add_run(str(list5[aa][0])) run.font.name = '仿宋' run.font.size = Pt(10.5) r = run._element r.rPr.rFonts.set(qn('w:eastAsia'), '仿宋') run = table2.cell(44, 5).paragraphs[0].add_run(dg) run.font.name = '仿宋' run.font.size = Pt(10.5) r = run._element r.rPr.rFonts.set(qn('w:eastAsia'), '仿宋') #下一张表 a21 = 0 table2 = doc.tables[1 + aa1] aa1 = aa1 + 1 run = table2.cell(((a21 * 2) + 3), 0).paragraphs[0].add_run(str(list5[aa][0])) run.font.name = '仿宋' run.font.size = Pt(10.5) r = run._element r.rPr.rFonts.set(qn('w:eastAsia'), '仿宋') if aa == len(list5) - 1: run = table2.cell(((a21 * 2) + 3), 5).paragraphs[0].add_run(dg) run.font.name = '仿宋' run.font.size = Pt(10.5) r = run._element r.rPr.rFonts.set(qn('w:eastAsia'), '仿宋') else: #计算间距 xc = abs(list5[aa+1][1] - list5[aa][1]) yc = abs(list5[aa+1][2] - list5[aa][2]) xxc = xc * xc yyc = yc * yc dis = round(math.sqrt(xxc + yyc),2) run = table2.cell(((a21 * 2) + 3), 5).paragraphs[0].add_run(dg) run.font.name = '仿宋' run.font.size = Pt(10.5) r = run._element r.rPr.rFonts.set(qn('w:eastAsia'), '仿宋') run = table2.cell(((a21 * 2) + 4), 7).paragraphs[0].add_run(str(dis)) run.font.name = '仿宋' run.font.size = Pt(10.5) r = run._element r.rPr.rFonts.set(qn('w:eastAsia'), '仿宋') run = table2.cell(((a21 * 2) + 4), 14).paragraphs[0].add_run(dg) run.font.name = '仿宋' run.font.size = Pt(10.5) r = run._element r.rPr.rFonts.set(qn('w:eastAsia'), '仿宋') run = table2.cell(((a21 * 2) + 4), 17).paragraphs[0].add_run(dg) run.font.name = '仿宋' run.font.size = Pt(10.5) r = run._element r.rPr.rFonts.set(qn('w:eastAsia'), '仿宋') aa = aa + 1 except: aa = aa + 1 else: try: run = table2.cell(((a21 * 2) + 3), 0).paragraphs[0].add_run(str(list5[aa][0])) run.font.name = '仿宋' run.font.size = Pt(10.5) r = run._element r.rPr.rFonts.set(qn('w:eastAsia'), '仿宋') if aa == len(list5) - 1: run = table2.cell(((a21 * 2) + 3), 5).paragraphs[0].add_run(dg) run.font.name = '仿宋' run.font.size = Pt(10.5) r = run._element r.rPr.rFonts.set(qn('w:eastAsia'), '仿宋') else: #计算间距 xc = abs(list5[aa+1][1] - list5[aa][1]) yc = abs(list5[aa+1][2] - list5[aa][2]) xxc = xc * xc yyc = yc * yc dis = round(math.sqrt(xxc + yyc),2) run = table2.cell(((a21 * 2) + 3), 5).paragraphs[0].add_run(dg) run.font.name = '仿宋' run.font.size = Pt(10.5) r = run._element r.rPr.rFonts.set(qn('w:eastAsia'), '仿宋') run = table2.cell(((a21 * 2) + 4), 7).paragraphs[0].add_run(str(dis)) run.font.name = '仿宋' run.font.size = Pt(10.5) r = run._element r.rPr.rFonts.set(qn('w:eastAsia'), '仿宋') run = table2.cell(((a21 * 2) + 4), 14).paragraphs[0].add_run(dg) run.font.name = '仿宋' run.font.size = Pt(10.5) r = run._element r.rPr.rFonts.set(qn('w:eastAsia'), '仿宋') run = table2.cell(((a21 * 2) + 4), 17).paragraphs[0].add_run(dg) run.font.name = '仿宋' run.font.size = Pt(10.5) r = run._element r.rPr.rFonts.set(qn('w:eastAsia'), '仿宋') aa = aa + 1 except: aa = aa + 1 a21 = a21 + 1 doc.save(out_docpath) try: run = table2.cell(((a21 * 2) + 3), 0).paragraphs[0].add_run(str(list5[0][0])) run.font.name = '仿宋' run.font.size = Pt(10.5) r = run._element r.rPr.rFonts.set(qn('w:eastAsia'), '仿宋') #计算间距 xc = abs(list5[len(list5)-1][1] - list5[0][1]) yc = abs(list5[len(list5)-1][2] - list5[0][2]) xxc = xc * xc yyc = yc * yc dis = round(math.sqrt(xxc + yyc),2) run = table2.cell(((a21 * 2) + 3), 5).paragraphs[0].add_run(dg) run.font.name = '仿宋' run.font.size = Pt(10.5) r = run._element r.rPr.rFonts.set(qn('w:eastAsia'), '仿宋') run = table2.cell(((a21 * 2) + 2), 7).paragraphs[0].add_run(str(dis)) run.font.name = '仿宋' run.font.size = Pt(10.5) r = run._element r.rPr.rFonts.set(qn('w:eastAsia'), '仿宋') run = table2.cell(((a21 * 2) + 2), 14).paragraphs[0].add_run(dg) run.font.name = '仿宋' run.font.size = Pt(10.5) r = run._element r.rPr.rFonts.set(qn('w:eastAsia'), '仿宋') run = table2.cell(((a21 * 2) + 2), 17).paragraphs[0].add_run(dg) run.font.name = '仿宋' run.font.size = Pt(10.5) r = run._element r.rPr.rFonts.set(qn('w:eastAsia'), '仿宋') except: #刚好是在最后一行的那个(固定位置) run = table2.cell(44, 0).paragraphs[0].add_run(str(list5[0][0])) run.font.name = '仿宋' run.font.size = Pt(10.5) r = run._element r.rPr.rFonts.set(qn('w:eastAsia'), '仿宋') #计算间距 xc = abs(list5[len(list5)-1][1] - list5[0][1]) yc = abs(list5[len(list5)-1][2] - list5[0][2]) xxc = xc * xc yyc = yc * yc dis = round(math.sqrt(xxc + yyc),2) run = table2.cell(44, 5).paragraphs[0].add_run(dg) run.font.name = '仿宋' run.font.size = Pt(10.5) r = run._element r.rPr.rFonts.set(qn('w:eastAsia'), '仿宋') run = table2.cell(43, 7).paragraphs[0].add_run(str(dis)) run.font.name = '仿宋' run.font.size = Pt(10.5) r = run._element r.rPr.rFonts.set(qn('w:eastAsia'), '仿宋') run = table2.cell(43, 14).paragraphs[0].add_run(dg) run.font.name = '仿宋' run.font.size = Pt(10.5) r = run._element r.rPr.rFonts.set(qn('w:eastAsia'), '仿宋') run = table2.cell(43, 17).paragraphs[0].add_run(dg) run.font.name = '仿宋' run.font.size = Pt(10.5) r = run._element r.rPr.rFonts.set(qn('w:eastAsia'), '仿宋') #endregion if kk3 < 2: #邻宗地 table3 = doc.tables[2] #信息表 table4 = doc.tables[3] #界址点描述 table5 = doc.tables[4] #调查表 table6 = doc.tables[6] else: kk3 = kk3 - 1 #邻宗地 table3 = doc.tables[2 + kk3] #信息表 table4 = doc.tables[3 + kk3] #界址点描述 table5 = doc.tables[4 + kk3] #调查表 table6 = doc.tables[6 + kk3] #region [三表] #先清空 kk0 = 3 while kk0 < 21: try: table3.cell(kk0, 0).paragraphs[0].text = '' table3.cell(kk0, 1).paragraphs[0].text = '' table3.cell(kk0, 2).paragraphs[0].text = '' table3.cell(kk0, 3).paragraphs[0].text = '' except: pass kk0 = kk0 + 1 bb3 = 0 while bb3 < len(list6): if list6[bb3][1] == list6[bb3][2]: pass else: run = table3.cell(bb3+3, 0).paragraphs[0].add_run(list6[bb3][1]) run.font.name = '仿宋' run.font.size = Pt(10.5) r = run._element r.rPr.rFonts.set(qn('w:eastAsia'), '仿宋') run = table3.cell(bb3+3, 2).paragraphs[0].add_run(list6[bb3][2]) run.font.name = '仿宋' run.font.size = Pt(10.5) r = run._element r.rPr.rFonts.set(qn('w:eastAsia'), '仿宋') #中心点需要算 str10 = '' str10 = zjd(list6[bb3][1],list6[bb3][2],pcount) run = table3.cell(bb3+3, 1).paragraphs[0].add_run(str10) run.font.name = '仿宋' run.font.size = Pt(10.5) r = run._element r.rPr.rFonts.set(qn('w:eastAsia'), '仿宋') try: text1 = list6[bb3][0] str5 = text1.value except: str5 = text1 # if list6[kk3][3] != '': # str51 = str5 # else: # str51 = str5 run = table3.cell(bb3+3, 3).paragraphs[0].add_run(str5) run.font.name = '仿宋' run.font.size = Pt(10.5) r = run._element r.rPr.rFonts.set(qn('w:eastAsia'), '仿宋') bb3 = bb3 + 1 xx1 = 0 while xx1 < 16: try: table4.cell(2, 1 + (xx1 * 5)).paragraphs[0].text = '' table4.cell(2, 2 + (xx1 * 5)).paragraphs[0].text = '' table4.cell(2, 3 + (xx1 * 5)).paragraphs[0].text = '' except: pass xx1 = xx1 + 1 list8 = [] kk1 = 0 pd1 = 0 kk4 = 0 lname = [] aa4 = 0 while kk4 < len(list10): if list10[kk4][0] in lname: pass else: lname.append(list10[kk4][0]) try: run = table4.cell(2, 1 + (aa4 * 5)).paragraphs[0].add_run(list10[kk4][0]) run.font.name = '仿宋' run.font.size = Pt(10.5) r = run._element except: print(zdh + ' LZD Error') try: r.rPr.rFonts.set(qn('w:eastAsia'), '仿宋') run = table4.cell(2, 2 + (aa4 * 5)).paragraphs[0].add_run(list10[kk4][2]) run.font.name = '仿宋' run.font.size = Pt(10.5) r = run._element r.rPr.rFonts.set(qn('w:eastAsia'), '仿宋') except: print(zdh + ' LZD Error') try: run = table4.cell(2, 3 + (aa4 * 5)).paragraphs[0].add_run(list10[kk4][1]) run.font.name = '仿宋' run.font.size = Pt(10.5) r = run._element r.rPr.rFonts.set(qn('w:eastAsia'), '仿宋') except: print(zdh + ' LZD Error') aa4 = aa4 + 1 kk4 = kk4 + 1 #endregion #region [四五六表] table5.cell(1, 1).paragraphs[0].text = '' table5.cell(2, 1).text = '' #根据邻宗地来写(list6) str2 = '' dd = 0 while dd < len(list6): name2 = list6[dd][0] if '(' in name2: #这个是个人名 zdname = name2.split('(',-1)[0] + '林地' else: zdname = name2 qsd = list6[dd][1] qsdh = int(qsd.replace('J','')) zzd = list6[dd][2] zzdh = int(zzd.replace('J','')) if abs(qsdh - zzdh) == 0: str2 = str2 + qsd + '位于' + zdname + '的交界处;\n\t' else: str2 = str2 + qsd +'至'+ zzd + '位于' + zdname + '的交界处;\n\t' dd = dd + 1 str3 = '' dd = 0 while dd < len(list6): name2 = list6[dd][0] if '(' in name2: #这个是个人名 zdname = name2.split('(',-1)[0] + '林地' else: zdname = name2 qsd = list6[dd][1] qsdh = int(qsd.replace('J','')) zzd = list6[dd][2] zzdh = int(zzd.replace('J','')) if zzdh - qsdh == 0: pass elif zzdh - qsdh == 1: str3 = str3 + qsd +'沿着' + zdname + '的边界,走向' + zzd + ';\n\t' elif zzdh - qsdh == 2: str3 = str3 + qsd +'沿着' + zdname + '的边界,途径J'+str(qsdh+1)+',走向' + zzd + ';\n\t' elif zzdh - qsdh < 0: if qsdh == pcount: str3 = str3 + qsd +'沿着' + zdname + '的边界' +',走向' + zzd + ';\n\t' elif qsdh + 1 == pcount: tjqsd = 'J' + str(qsdh + 1) str3 = str3 + qsd +'沿着' + zdname + '的边界' +',途径' +tjqsd +',走向' + zzd + ';\n\t' else: tjqsd = 'J' + str(qsdh + 1) str3 = str3 + qsd +'沿着' + zdname + '的边界' +',途径' +tjqsd+ '-J' +str(pcount) +',走向' + zzd + ';\n\t' else: tjqsd = 'J' + str(qsdh + 1) tjzzd = 'J' + str(zzdh - 1) if tjzzd == 'J0': if qsdh == pcount: str3 = str3 + qsd +'沿着' + zdname + '的边界' +',走向' + zzd + ';\n\t' else: if (qsdh + 1) == (zzdh - 1): str3 = str3 + qsd +'沿着' + zdname + '的边界,途径J'+str(qsdh+1)+',走向' + zzd + ';\n\t' else: str3 = str3 + qsd +'沿着' + zdname + '的边界' +',途径' +tjqsd+ '-J' +str(pcount) +',走向' + zzd + ';\n\t' else: if (zzdh - 1) <= (qsdh + 1): str3 = str3 + qsd +'沿着' + zdname + '的边界' +',途径' +tjzzd+ ',走向' + zzd + ';\n\t' else: str3 = str3 + qsd +'沿着' + zdname + '的边界' +',途径' +tjqsd+ '-' +tjzzd + ',走向' + zzd + ';\n\t' dd = dd + 1 run = table5.cell(1, 1).paragraphs[0].add_run('\t' + str2) run.font.name = '仿宋' run.font.size = Pt(10.5) r = run._element r.rPr.rFonts.set(qn('w:eastAsia'), '仿宋') run = table5.cell(2, 1).paragraphs[0].add_run(str3) run.font.name = '仿宋' run.font.size = Pt(10.5) r = run._element r.rPr.rFonts.set(qn('w:eastAsia'), '仿宋') if ii == 0: #平方米的符号 dw1 = table6.rows[12].cells[1].text table6.cell(0, 1).paragraphs[0].text = '' table6.cell(1, 1).paragraphs[0].text = '' table6.cell(3, 3).paragraphs[0].text = '' table6.cell(2, 8).paragraphs[0].text = '' # table6.cell(4, 8).paragraphs[0].text = '' # table6.cell(4, 13).paragraphs[0].text = '' # table6.cell(5, 13).paragraphs[0].text = '' table6.cell(7, 1).paragraphs[0].text = '' table6.cell(8, 1).paragraphs[0].text = '' table6.cell(9, 1).paragraphs[0].text = '' table6.cell(10, 1).paragraphs[0].text = '' table6.cell(11, 1).paragraphs[0].text = '' table6.cell(11, 6).paragraphs[0].text = '' table6.cell(12, 1).paragraphs[0].text = '' table6.cell(12, 6).paragraphs[0].text = '' table6.cell(13, 1).paragraphs[0].text = '' table6.cell(13, 6).paragraphs[0].text = '' table6.cell(19, 4).paragraphs[0].text = '' # 宗地号 run = table6.cell(0,1).paragraphs[0].add_run(zdh) run.font.name = '仿宋' run.font.size = Pt(10.5) r = run._element r.rPr.rFonts.set(qn('w:eastAsia'), '仿宋') # 所有人 qq = 0 namestr = '' sfzstr = '' while qq < len(list4): if qq == len(list4) - 1: # 姓名 name1 = list4[qq][2] namestr = namestr + name1 # 身份证号 sfz1 = list4[qq][4] sfzstr = sfzstr + sfz1 qq = qq + 1 else: # 姓名 name1 = list4[qq][2] namestr = namestr + name1 + '\n' # 身份证号 sfz1 = list4[qq][4] sfzstr = sfzstr + sfz1 + '\n' qq = qq + 1 if len(list4) < 8: run = table6.cell(1,1).paragraphs[0].add_run(namestr) run.font.name = '仿宋' run.font.size = Pt(10.5) r = run._element r.rPr.rFonts.set(qn('w:eastAsia'), '仿宋') run = table6.cell(2,8).paragraphs[0].add_run(sfzstr) run.font.name = '仿宋' run.font.size = Pt(10.5) r = run._element r.rPr.rFonts.set(qn('w:eastAsia'), '仿宋') else: #缩小字号 run = table6.cell(1,1).paragraphs[0].add_run(namestr) run.font.name = '仿宋' run.font.size = Pt(7.5) r = run._element r.rPr.rFonts.set(qn('w:eastAsia'), '仿宋') run = table6.cell(2,8).paragraphs[0].add_run(sfzstr) run.font.name = '仿宋' run.font.size = Pt(7.5) r = run._element r.rPr.rFonts.set(qn('w:eastAsia'), '仿宋') # 权利人类型 if lx == 1: run = table6.cell(7,1).paragraphs[0].add_run('其他') run.font.name = '仿宋' run.font.size = Pt(10.5) r = run._element r.rPr.rFonts.set(qn('w:eastAsia'), '仿宋') else: run = table6.cell(7,1).paragraphs[0].add_run('个人') run.font.name = '仿宋' run.font.size = Pt(10.5) r = run._element r.rPr.rFonts.set(qn('w:eastAsia'), '仿宋') # 坐落 run = table6.cell(8,1).paragraphs[0].add_run(zl) run.font.name = '仿宋' run.font.size = Pt(10.5) r = run._element r.rPr.rFonts.set(qn('w:eastAsia'), '仿宋') # 造林年度 if zlnd == ' ' or zlnd == None or zlnd == '': run = table6.cell(9,1).paragraphs[0].add_run('1998年') run.font.name = '仿宋' run.font.size = Pt(10.5) r = run._element r.rPr.rFonts.set(qn('w:eastAsia'), '仿宋') else: run = table6.cell(9,1).paragraphs[0].add_run(zlnd + '年') run.font.name = '仿宋' run.font.size = Pt(10.5) r = run._element r.rPr.rFonts.set(qn('w:eastAsia'), '仿宋') # 小地名 run = table6.cell(10,1).paragraphs[0].add_run(xdm) run.font.name = '仿宋' run.font.size = Pt(10.5) r = run._element r.rPr.rFonts.set(qn('w:eastAsia'), '仿宋') # 林班 run = table6.cell(11,1).paragraphs[0].add_run(lb) run.font.name = '仿宋' run.font.size = Pt(10.5) r = run._element r.rPr.rFonts.set(qn('w:eastAsia'), '仿宋') # 小班 run = table6.cell(11,6).paragraphs[0].add_run(xb) run.font.name = '仿宋' run.font.size = Pt(10.5) r = run._element r.rPr.rFonts.set(qn('w:eastAsia'), '仿宋') str2 = now_area + '㎡/ ' + now_area_m + '亩' run = table6.cell(12,1).paragraphs[0].add_run(str2) run.font.name = '仿宋' run.font.size = Pt(10.5) r = run._element r.rPr.rFonts.set(qn('w:eastAsia'), '仿宋') # 起源 run = table6.cell(12,6).paragraphs[0].add_run(qy) run.font.name = '仿宋' run.font.size = Pt(10.5) r = run._element r.rPr.rFonts.set(qn('w:eastAsia'), '仿宋') # 株树 run = table6.cell(13,1).paragraphs[0].add_run(str(zs)) run.font.name = '仿宋' run.font.size = Pt(10.5) r = run._element r.rPr.rFonts.set(qn('w:eastAsia'), '仿宋') # 主要树种 run = table6.cell(13,6).paragraphs[0].add_run(zysz) run.font.name = '仿宋' run.font.size = Pt(10.5) r = run._element r.rPr.rFonts.set(qn('w:eastAsia'), '仿宋') # 第六个表格的备注 run = table6.cell(19,4).paragraphs[0].add_run('该户原林权证证载面积' +zzmj+'亩,株数'+str(zs)+'株。') run.font.name = '仿宋' run.font.size = Pt(10.5) r = run._element r.rPr.rFonts.set(qn('w:eastAsia'), '仿宋') #endregion print(zdh + ' finish') # except: # print(zdh + ' error') doc.save(out_docpath) ii= ii + 1 # def chsf(list1,pcount): # ii = 0 # list2 = [] # aa = 0 # num0 = 0 # num1 = 0 # while ii < len(list1): # if list2 == []: # slist2 = [] # slist2.append(list1[ii][0]) # slist2.append('J1') # slist2.append(list1[ii][2]) # list2.append(slist2) # num0 = int(list1[ii][2].replace('J','')) # num1 = 1 # ii = ii + 1 # elif list2[aa][0] == list1[ii][0]: # if num0 <= int(int(list1[ii][1].replace('J',''))) and num1 <= int(list1[ii][1].replace('J','')): # list2[aa][2] = list1[ii][2] # num0 = int(list2[aa][2].replace('J','')) # num1 = int(list2[aa][1].replace('J','')) # else: # if int(list1[ii][1].replace('J','')) > int(list1[ii][2].replace('J','')): # pass # #这里不合 # # list2[aa][2] = list1[ii][2] # # num0 = int(list2[aa][2].replace('J','')) # # num1 = int(list2[aa][1].replace('J','')) # ii = ii + 1 # else: # if num0 <= int(list1[ii][2].replace('J','')) and num1 <= int(list1[ii][1].replace('J','')): # #检查和上一个是否连接 # if num0 != int(list1[ii][1].replace('J','')): # if num0 == pcount: # list2[aa][2] = 'J' + str(pcount - 1) # slist2 = [] # slist2.append(list1[ii][0]) # slist2.append('J' + str(pcount - 1)) # slist2.append(list1[ii][2]) # list2.append(slist2) # else: # slist2 = [] # slist2.append(list1[ii][0]) # slist2.append('J'+ str(num0)) # slist2.append(list1[ii][2]) # list2.append(slist2) # else: # slist2 = [] # slist2.append(list1[ii][0]) # slist2.append(list1[ii][1]) # slist2.append(list1[ii][2]) # list2.append(slist2) # aa = aa + 1 # num0 = int(list2[aa][2].replace('J','')) # num1 = int(list2[aa][1].replace('J','')) # elif num0 == 1: # #检查和上一个是否连接 # if num0 != int(list1[ii][1].replace('J','')): # if num0 == pcount: # list2[aa][2] = 'J' + str(pcount - 1) # slist2 = [] # slist2.append(list1[ii][0]) # slist2.append('J' + str(pcount - 1)) # slist2.append(list1[ii][2]) # list2.append(slist2) # else: # slist2 = [] # slist2.append(list1[ii][0]) # slist2.append('J'+ str(num0)) # slist2.append(list1[ii][2]) # list2.append(slist2) # else: # slist2 = [] # slist2.append(list1[ii][0]) # slist2.append(list1[ii][1]) # slist2.append(list1[ii][2]) # list2.append(slist2) # aa = aa + 1 # num0 = int(list2[aa][2].replace('J','')) # num1 = int(list2[aa][1].replace('J','')) # else: # if int(list1[ii][1].replace('J','')) > int(list1[ii][2].replace('J','')): # if list1[ii][2] == 'J1': # #应该是这里,拆成两个 # slist2 = [] # slist2.append(list1[ii][0]) # slist2.append(list1[ii][1]) # slist2.append('J1') # list2.append(slist2) # else: # #应该是这里,拆成两个 # slist2 = [] # slist2.append(list1[ii][0]) # slist2.append(list1[ii][1]) # slist2.append('J1') # list2.append(slist2) # slist2 = [] # slist2.append(list1[ii][0]) # slist2.append('J1') # slist2.append(list1[ii][2]) # list2.append(slist2) # aa = aa + 1 # num0 = int(list2[aa][2].replace('J','')) # num1 = int(list2[aa][1].replace('J','')) # ii =ii + 1 # bb = 0 # while bb < len(list2): # if bb != len(list2) - 1: # if list2[bb][2] == list2[bb + 1][1]: # pass # else: # #优先保带JE的 # if 'JE' in list2[bb][0]: # list2[bb + 1][1] = list2[bb][2] # else: # list2[bb][2] = list2[bb + 1][1] # else: # if list2[bb-1][2] == list2[bb][1]: # pass # else: # #优先保带JE的 # if 'JE' in list2[bb-1][0]: # list2[bb][1] = list2[bb-1][2] # else: # list2[bb-1][2] = list2[bb][1] # if list2[bb][2] !='J1' and bb == len(list2) - 1: # if len(list2) != 1: # list2[bb][2] = 'J1' # else: # slist2 = [] # slist2.append(list2[bb][0]) # slist2.append(list2[bb][2]) # slist2.append(list2[bb][1]) # list2.append(slist2) # break # # elif list2[bb][2] == 'J' + str(pcount) and bb == len(list2) - 1: # # slist2 = [] # # slist2.append(list2[bb][0]) # # slist2.append('J' + str(pcount)) # # slist2.append('J1') # # list2.append(slist2) # # break # if list2[bb][1] == list2[bb][2]: # try: # if abs(int(list2[bb+1][1].replace('J','')) - int(list2[bb+1][2].replace('J',''))) == 1: # list2[bb][2] = 'J' + str(int(list2[bb][2].replace('J','')) + 1) # else: # list2[bb][2] = 'J' + str(int(list2[bb][2].replace('J','')) + 1) # list2[bb+1][1] = 'J' + str(int(list2[bb][2].replace('J','')) + 1) # except: # pass # bb =bb + 1 # return list2 def chsf(list1,pcount): ii = 0 list2 = [] aa = 0 num0 = 0 num1 = 0 while ii < len(list1): if list2 == []: slist2 = [] slist2.append(list1[ii][0]) slist2.append('J1') slist2.append(list1[ii][2]) list2.append(slist2) num0 = int(list1[ii][2].replace('J','')) num1 = 1 ii = ii + 1 elif list2[aa][0] == list1[ii][0]: if num0 <= int(int(list1[ii][1].replace('J',''))) and num1 <= int(list1[ii][1].replace('J','')): list2[aa][2] = list1[ii][2] num0 = int(list2[aa][2].replace('J','')) num1 = int(list2[aa][1].replace('J','')) else: if int(list1[ii][1].replace('J','')) > int(list1[ii][2].replace('J','')): pass #这里不合 # list2[aa][2] = list1[ii][2] # num0 = int(list2[aa][2].replace('J','')) # num1 = int(list2[aa][1].replace('J','')) ii = ii + 1 else: if num0 <= int(list1[ii][2].replace('J','')) and num1 <= int(list1[ii][1].replace('J','')): #检查和上一个是否连接 if num0 != int(list1[ii][1].replace('J','')): #有一边是否是JE if 'JE' in list2[aa][0]: if num0 == pcount: slist2 = [] slist2.append(list1[ii][0]) slist2.append('J' + str(pcount)) slist2.append('J1') list2.append(slist2) slist2 = [] slist2.append(list1[ii][0]) slist2.append('J1') slist2.append(list1[ii][2]) list2.append(slist2) else: slist2 = [] slist2.append(list1[ii][0]) slist2.append('J'+ str(num0)) slist2.append(list1[ii][2]) list2.append(slist2) elif 'JE' in list1[ii][0]: if num0 == pcount: slist2 = [] slist2.append(list1[aa][0]) slist2.append('J1') slist2.append(list1[ii][1]) list2.append(slist2) slist2 = [] slist2.append(list1[ii][0]) slist2.append(list1[ii][1]) slist2.append(list1[ii][2]) list2.append(slist2) else: list2[aa][2] = list1[ii][1] slist2 = [] slist2.append(list1[ii][0]) slist2.append(list1[ii][1]) slist2.append(list1[ii][2]) list2.append(slist2) else: if num0 == pcount: list2[aa][2] = 'J' + str(pcount - 1) slist2 = [] slist2.append(list1[ii][0]) slist2.append('J' + str(pcount - 1)) slist2.append(list1[ii][2]) list2.append(slist2) else: slist2 = [] slist2.append(list1[ii][0]) slist2.append('J'+ str(num0)) slist2.append(list1[ii][2]) list2.append(slist2) else: slist2 = [] slist2.append(list1[ii][0]) slist2.append(list1[ii][1]) slist2.append(list1[ii][2]) list2.append(slist2) aa = aa + 1 num0 = int(list2[aa][2].replace('J','')) num1 = int(list2[aa][1].replace('J','')) elif num0 == 1: #检查和上一个是否连接 if num0 != int(list1[ii][1].replace('J','')): if 'JE' in list2[aa][0]: slist2 = [] slist2.append(list1[ii][0]) slist2.append(list2[aa][2]) slist2.append(list1[ii][2]) list2.append(slist2) elif 'JE' in list1[ii][0]: slist2 = [] slist2.append(list2[aa][0]) slist2.append('JE') slist2.append(list1[ii][1]) list2.append(slist2) slist2 = [] slist2.append(list1[ii][0]) slist2.append(list2[ii][1]) slist2.append(list1[ii][2]) list2.append(slist2) else: slist2 = [] slist2.append(list1[ii][0]) slist2.append('J'+ str(num0)) slist2.append(list1[ii][2]) list2.append(slist2) else: slist2 = [] slist2.append(list1[ii][0]) slist2.append(list1[ii][1]) slist2.append(list1[ii][2]) list2.append(slist2) aa = aa + 1 num0 = int(list2[aa][2].replace('J','')) num1 = int(list2[aa][1].replace('J','')) else: if int(list1[ii][1].replace('J','')) > int(list1[ii][2].replace('J','')): if list1[ii][2] == 'J1': #应该是这里,拆成两个 slist2 = [] slist2.append(list1[ii][0]) slist2.append(list1[ii][1]) slist2.append('J1') list2.append(slist2) else: #应该是这里,拆成两个 slist2 = [] slist2.append(list1[ii][0]) slist2.append(list1[ii][1]) slist2.append('J1') list2.append(slist2) slist2 = [] slist2.append(list1[ii][0]) slist2.append('J1') slist2.append(list1[ii][2]) list2.append(slist2) aa = aa + 1 num0 = int(list2[aa][2].replace('J','')) num1 = int(list2[aa][1].replace('J','')) ii =ii + 1 bb = 0 while bb < len(list2): if bb != len(list2) - 1: if list2[bb][2] == list2[bb + 1][1]: pass else: #优先保带JE的 if 'JE' in list2[bb][0]: list2[bb + 1][1] = list2[bb][2] else: list2[bb][2] = list2[bb + 1][1] else: if list2[bb-1][2] == list2[bb][1]: pass else: #优先保带JE的 if 'JE' in list2[bb-1][0]: list2[bb][1] = list2[bb-1][2] else: list2[bb-1][2] = list2[bb][1] if list2[bb][2] !='J1' and bb == len(list2) - 1: if len(list2) > 2: list2[bb][2] = 'J1' else: if list2[bb][1] == 'J1': slist2 = [] slist2.append(list2[bb][0]) slist2.append(list2[bb][2]) slist2.append('J1') list2.append(slist2) else: slist2 = [] slist2.append(list2[bb][0]) slist2.append(list2[bb][2]) slist2.append('J1') list2.append(slist2) # elif list2[bb][2] == 'J' + str(pcount) and bb == len(list2) - 1: # slist2 = [] # slist2.append(list2[bb][0]) # slist2.append('J' + str(pcount)) # slist2.append('J1') # list2.append(slist2) # break if list2[bb][1] == list2[bb][2]: try: if abs(int(list2[bb+1][1].replace('J','')) - int(list2[bb+1][2].replace('J',''))) == 1: list2[bb][2] = 'J' + str(int(list2[bb][2].replace('J','')) + 1) else: list2[bb][2] = 'J' + str(int(list2[bb][2].replace('J','')) + 1) list2[bb+1][1] = 'J' + str(int(list2[bb][2].replace('J','')) + 1) except: pass bb =bb + 1 return list2 def takesixth(elem): return elem[4] def zjd(pt1,pt2,pcount): str1 = '' num0 = int(pt1.replace('J','')) num1 = int(pt2.replace('J','')) if abs(num1 - num0) == 1: str1 = '/' else: if num0 < num1: #正常取中间的 llist = [] ii = 1 while num0 +ii < num1: llist.append('J'+ str(num0 +ii)) ii =ii + 1 else: llist = [] ii = 1 while num0 +ii <= pcount: llist.append('J'+ str(num0 +ii)) ii =ii + 1 mm = 1 while mm < num1: llist.append('J'+ str(mm)) mm = mm + 1 if llist == []: str1 = '/' else: nn = 0 if len(llist) < 10: while nn < len(llist): str1 = str1 + llist[nn] if nn == len(llist) - 1: pass else: str1 = str1 + '、' nn =nn + 1 else: str1 = llist[0] + '-' + llist[len(llist) - 1] return str1 if __name__ == '__main__': start()