123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026 |
- # -*- coding: utf-8 -*-
- import openpyxl
- from openpyxl.styles import Alignment
- from openpyxl.styles import Border, Side
- from openpyxl.styles import Font
- from openpyxl.styles import PatternFill
- import pandas as pd
- import tkinter as tk
- from tkinter import filedialog as tkFileDialog
- from tkinter import messagebox
- import encryption
- import os
- from sympy import *
- import uuid
- import time
- import re
-
- type_gd = ['水田', '水浇地', '旱地']
- type_yd = ['果园', '茶园', '橡胶园', '其他园地']
- type_ld = ['乔木林地', '竹林地', '红树林地', '森林沼泽', '灌木林地', '灌丛沼泽', '其他林地']
- type_cd = ['天然牧草地', '沼泽草地', '人工牧草地', '其他草地']
- type_sf = ['零售商业用地', '批发市场用地', '餐饮用地', '旅馆用地', '商务金融用地', '娱乐用地', '其他商服用地']
- type_gk = ['工业用地', '采矿用地', '盐田', '仓储用地']
- type_zz = ['城镇住宅用地', '农村宅基地']
- type_gg = ['机关团体用地','新闻出版用地','教育用地','科研用地','医疗卫生用地','社会福利用地','文化设施用地','体育用地','公用设施用地','公园与绿地']
- type_ts = ['军事设施用地','使领馆用地','监教场所用地','宗教用地','殡葬用地','风景名胜设施用地']
- type_jt = ['铁路用地','轨道交通用地','公路用地','城镇村道路用地','交通服务站用地','农村道路','机场用地','港口码头用地','管道运输用地']
- type_sy = ['河流水面','湖泊水面','水库水面','坑塘水面','沿海滩涂','内陆滩涂','沟渠','沼泽地','水工建筑用地','冰川及永久积雪']
- type_qt = ['空闲地','设施农用地','田坎','盐碱地','沙地','裸土地','裸岩石砾地']
-
-
- def convert(input, moban, output):
- wb = openpyxl.load_workbook(moban)
- wb1 = openpyxl.load_workbook(input)
- sheet_names = wb1.sheetnames
- sheet = wb.active
- for j in range(1, len(sheet_names)):
- wb.copy_worksheet(sheet)
- sheet_names1 = wb.sheetnames
-
-
- for i in range(0, len(sheet_names)):
- sheet_info = wb1[sheet_names[i]]
- info_all = getinfo(sheet_info)
- info_gr = info_all[0]
- info_c = info_all[1]
- info_x = info_all[2]
- zyd = info_all[3]
- # if i == 1:
- # sheet.title = info_c[0]
- # else:
- # sheet = wb[sheet_names1[i - 1]]
- # sheet.title = info_c[0]
- sheet = wb[sheet_names1[i]]
- sheet.title = info_c[0]
- # 记录行数
- row = 2
- xh = 0
- thin = Side(border_style="thin", color="000000")
- for i in range(0, len(info_gr)):
- # 地块数
- num_dk = 0
- # 耕地数
- num_gd = 0
- # 园地数
- num_yd = 0
- # 耕地和园地总面积
- area_gd = 0
- area_yd = 0
- # 序号
- xh = i
- for j in range(2, len(info_gr[i])):
- if type_gd.__contains__(info_gr[i][j][0]) and info_gr[i][j][4] == '' or \
- type_gd.__contains__(info_gr[i][j][0]) and info_gr[i][j][4] == ' ':
- num_gd = num_gd + 1
- num_dk = num_dk + 1
- sheet['E' + str(num_gd + row)].value = info_gr[i][j][0]
- sheet['F' + str(num_gd + row)].value = '地块' + str(num_dk)
- sheet['G' + str(num_gd + row)].value = info_gr[i][j][1]
- sheet['G' + str(num_gd + row)].number_format = '0.00'
- sheet['H' + str(num_gd + row)].value = info_gr[i][j][3]
- area_gd = info_gr[i][j][1] + area_gd
- if type_yd.__contains__(info_gr[i][j][0]) and info_gr[i][j][4] == '' or \
- type_yd.__contains__(info_gr[i][j][0]) and info_gr[i][j][4] == ' ':
- num_dk = num_dk + 1
- num_yd = num_yd + 1
- sheet['I' + str(num_yd + row)].value = info_gr[i][j][0]
- sheet['J' + str(num_yd + row)].value = '地块' + str(num_dk)
- sheet['K' + str(num_yd + row)].value = info_gr[i][j][1]
- sheet['K' + str(num_yd + row)].number_format = '0.00'
- sheet['L' + str(num_yd + row)].value = info_gr[i][j][2]
- sheet['M' + str(num_yd + row)].value = info_gr[i][j][3]
- sheet['N' + str(num_yd + row)].value = info_gr[i][j][1]
- sheet['N' + str(num_yd + row)].number_format = '0.00'
- sheet['O' + str(num_yd + row)].value = info_gr[i][j][5]
- area_yd = info_gr[i][j][1] + area_yd
-
- # 计算园地中小计的单元格融合范围
- flag = [] # 相同类型园地
- for i in range(row + 1, row + num_yd):
- area_xj = float(sheet['k' + str(i)].value)
- start = 0
- end = 0
- cf = 0 # 重复次数
- for j in range(i + 1, row + num_yd + 1):
- if sheet['M' + str(i)].value == sheet['M' + str(j)].value and \
- sheet['L' + str(i)].value == sheet['L' + str(j)].value:
- # 再次重复
- if (start == i):
- # 只记录未被融合过的单元格
- if j not in flag:
- cf = cf + 1
- end = j
- area_xj = area_xj + float(sheet['k' + str(j)].value)
- flag.append(j)
- if j == row + num_yd:
- sheet.merge_cells(range_string='N' + str(start) + ':' + 'N' + str(end))
- sheet['N' + str(start)].value = area_xj
- sheet['N' + str(start)].number_format = '0.00'
- else:
- continue
- # 首次重复
- else:
- if i not in flag:
- cf = cf + 1
- start = i
- end = j
- area_xj = area_xj + float(sheet['k' + str(j)].value)
- flag.append(i)
- flag.append(j)
- if j == row + num_yd:
- sheet.merge_cells(range_string='N' + str(start) + ':' + 'N' + str(end))
- sheet['N' + str(start)].value = area_xj
- sheet['N' + str(start)].number_format = '0.00'
- else:
- continue
- else:
- if cf != 0:
- sheet.merge_cells(range_string='N' + str(start) + ':' + 'N' + str(end))
- sheet['N' + str(start)].value = area_xj
- sheet['N' + str(start)].number_format = '0.00'
- cf = 0
-
- # 合计行行数
- hj_row = row + max(num_yd, num_gd) + 1
- sheet.merge_cells(range_string='E' + str(hj_row) + ':' + 'F' + str(hj_row))
- sheet['E' + str(hj_row)].value = '合计'
- sheet['G' + str(hj_row)].value = area_gd
- sheet['G' + str(hj_row)].number_format = '0.00'
- sheet['G' + str(hj_row)].font = Font(bold=True)
- sheet.merge_cells(range_string='I' + str(hj_row) + ':' + 'M' + str(hj_row))
- sheet['I' + str(hj_row)].value = '合计'
- sheet['N' + str(hj_row)].value = area_yd
- sheet['N' + str(hj_row)].font = Font(bold=True)
- sheet['N' + str(hj_row)].number_format = '0.00'
- colorfill(sheet, hj_row, 'gr')
- # 序号、户主、身份证、总面积
- sheet.merge_cells(range_string='A' + str(row + 1) + ':' + 'A' + str(hj_row))
- sheet['A' + str(row + 1)].value = xh + 1
- sheet.merge_cells(range_string='B' + str(row + 1) + ':' + 'B' + str(hj_row))
- sheet['B' + str(row + 1)].value = info_gr[xh][1]
- sheet.merge_cells(range_string='C' + str(row + 1) + ':' + 'C' + str(hj_row))
- sheet['C' + str(row + 1)].value = str(info_gr[xh][0])
- sheet.merge_cells(range_string='D' + str(row + 1) + ':' + 'D' + str(hj_row))
- sheet['D' + str(row + 1)].value = area_yd + area_gd
- sheet['D' + str(row + 1)].number_format = '0.00'
- row = row + max(num_yd, num_gd) + 1
- xh = xh + 1
-
- # 村
- row_c = row
- if len(info_c) != 0:
- merge_c = mergeduplication(info_c)
- row_c = cxdlfill(merge_c, sheet, row, xh)
-
- # 县
- row_x = row_c
- if len(info_x) != 0:
- merge_x = mergeduplication(info_x)
- row_x = cxdlfill(merge_x, sheet, row_c[0], row_c[1])
-
- # 争议地
- if len(zyd) != 0:
- merge_zyd = mergedzyd(zyd)
- cxdlfill(merge_zyd, sheet, row_x[0], row_x[1])
-
- # 格式
- for i in range(1, sheet.max_row + 1):
- for j in range(1, sheet.max_column + 1):
- sheet.cell(i, j).alignment = Alignment(horizontal='center', vertical='center')
- for i in range(3, sheet.max_row + 1):
- for j in range(1, 16):
- sheet.cell(i, j).border = Border(top=thin, left=thin, right=thin, bottom=thin)
- medium = Side(border_style="medium", color="000000")
- sheet['BD1'].border = Border(top=thin, left=thin, right=medium, bottom=thin)
- wb.save(output + '\\' + 'result_4.xlsx')
-
- def drawwd():
- window = tk.Tk() # 创建窗口对象的背景色
- window.title('表格样式转换') # 设置窗口的标题
- window.geometry('400x250') # 设置窗口的大小
- title = tk.Label(window, text='表格样式转换',
- font=('微软雅黑', 12), width=40, height=3)
- title.place(x=0, y=0, anchor='nw')
- choosepath = tk.Label(window, text='要转换的文件(.xlsx):',
- font=('微软雅黑', 12), width=20, height=2)
- choosepath.place(x=0, y=50, anchor='nw')
- path_var1 = tk.StringVar() # 输入路径
- entry1 = tk.Entry(window, textvariable=path_var1)
- entry1.place(x=170, y=65, anchor='nw')
-
- mbpath = tk.Label(window, text='表头模板文件(.xlsx):',
- font=('微软雅黑', 12), width=20, height=2)
- mbpath.place(x=0, y=100, anchor='nw')
- path_var2 = tk.StringVar() # 输入路径
- entry2 = tk.Entry(window, textvariable=path_var2)
- entry2.place(x=170, y=115, anchor='nw')
-
- resultpath = tk.Label(window, text='输出文件夹:',
- font=('微软雅黑', 12), width=20, height=2)
- resultpath.place(x=0, y=150, anchor='nw')
- path_var6 = tk.StringVar() # 输出路径
- entry6 = tk.Entry(window, textvariable=path_var6)
- entry6.place(x=170, y=165, anchor='nw')
-
- def choose1():
- file_dir1 = tkFileDialog.askopenfilename(filetypes=[('Excel', '.xlsx'), ('All Files', '*')])
- path_var1.set(file_dir1)
-
- def choose2():
- file_dir2 = tkFileDialog.askopenfilename(filetypes=[('Excel', '.xlsx'), ('All Files', '*')])
- path_var2.set(file_dir2)
-
- def choose3():
- file_dir6 = tkFileDialog.askdirectory()
- path_var6.set(file_dir6)
-
- def tuichu():
- window.destroy()
-
- def main():
- inpath = entry1.get()
- mbpath = entry2.get()
- outpath = entry6.get()
- convert(inpath,mbpath,outpath)
- messagebox.showinfo("消息", "运行成功")
- window.destroy()
-
- tk.Button(window, text='选择', command=choose1).place(x=320, y=60, anchor='nw')
- tk.Button(window, text='选择', command=choose2).place(x=320, y=110, anchor='nw')
- tk.Button(window, text='选择', command=choose3).place(x=320, y=160, anchor='nw')
- tk.Button(window, text='确认', command=main).place(x=120, y=210, anchor='nw')
- tk.Button(window, text='取消', command=tuichu).place(x=220, y=210, anchor='nw')
- window.mainloop()
-
- # 从表中收集所有信息
- def getinfo(sheet):
- # 身份证号
- sfz = []
- # 所有信息
- info = []
- # 个人信息
- info_gr = []
- # 村
- info_c = []
- # 县
- info_x = []
- # 争议
- info_zy = []
- #村名
- name_c = ''
- #县名
- name_x = ''
-
- # 记录这是第几条个人信息
- j = -1
- # 遍历整个表获取所有信息
- for i in range(2, sheet.max_row + 1):
- num = sheet['C'+str(i)].value
- if (num != ' ' and num != None) and sheet['I' + str(i)].value != '是':
- if sfz.__contains__(num):
- if type_gd.__contains__(sheet['D' + str(i)].value):
- gd = dlinfo(sheet, i)
- info_gr[j].append(gd)
- elif type_yd.__contains__(sheet['D' + str(i)].value):
- yd = ydinfo(sheet, i)
- info_gr[j].append(yd)
- elif type_ld.__contains__(sheet['D' + str(i)].value):
- qmld = ldinfo(sheet, i)
- info_c.append(qmld)
- else:
- qt = dlinfo(sheet,i)
- info_c.append(qt)
- else:
- j = j + 1
- sfz.append(num)
- numlist = [num]
- info_gr.append(numlist)
- name = sheet['B' + str(i)].value
- if type_gd.__contains__(sheet['D' + str(i)].value):
- gd = dlinfo(sheet, i)
- info_gr[j].append(name)
- info_gr[j].append(gd)
- elif type_yd.__contains__(sheet['D' + str(i)].value):
- yd = ydinfo(sheet, i)
- info_gr[j].append(name)
- info_gr[j].append(yd)
- elif type_ld.__contains__(sheet['D' + str(i)].value):
- ld = ldinfo(sheet, i)
- info_c.append(ld)
- info_gr[j].append(name)
- elif sheet['I' + str(i)].value != '是':
- hz = sheet['B'+str(i)].value
- if hz[len(hz)-1] == '村' or '镇' in hz or '组' in hz:
- name_c = hz
- if type_yd.__contains__(sheet['D' + str(i)].value):
- yd = ydinfo(sheet, i)
- info_c.append(yd)
- elif type_ld.__contains__(sheet['D' + str(i)].value):
- ld = ldinfo(sheet, i)
- info_c.append(ld)
- else:
- qtinfo = dlinfo(sheet, i)
- info_c.append(qtinfo)
- elif hz[len(hz)-1] == '县':
- name_x = hz
- if type_yd.__contains__(sheet['D' + str(i)].value):
- yd = ydinfo(sheet, i)
- info_x.append(yd)
- elif type_ld.__contains__(sheet['D' + str(i)].value):
- ld = ldinfo(sheet, i)
- info_x.append(ld)
- else:
- qtinfo = dlinfo(sheet, i)
- info_x.append(qtinfo)
- else:
- if type_yd.__contains__(sheet['D' + str(i)].value):
- yd = ydinfo(sheet, i)
- info_zy.append(yd)
- elif type_ld.__contains__(sheet['D' + str(i)].value):
- ld = ldinfo(sheet, i)
- info_zy.append(ld)
- else:
- qtinfo = dlinfo(sheet, i)
- info_zy.append(qtinfo)
-
- if name_c != '':
- info_c.insert(0, name_c)
- if name_x != '':
- info_x.insert(0, name_x)
- info.append(info_gr)
- info.append(info_c)
- info.append(info_x)
- info.append(info_zy)
- return info
-
- # 获取除园地、林地以外的其他地类信息
- def dlinfo(sheet,i):
- dl = sheet['D' + str(i)].value
- mj = sheet['F' + str(i)].value
- zy = sheet['I' + str(i)].value
- bz = sheet['j' + str(i)].value
- list = []
- list.append(dl)
- list.append(mj)
- list.append('')
- list.append('')
- list.append(zy)
- list.append(bz)
- return list
-
- # 获取园地信息
- def ydinfo(sheet,i):
- dl = sheet['D' + str(i)].value
- mj = sheet['F' + str(i)].value
- sz = sheet['G' + str(i)].value
- csd = sheet['H' + str(i)].value
- zy = sheet['I' + str(i)].value
- bz = sheet['j' + str(i)].value
- list = []
- list.append(dl)
- list.append(mj)
- list.append(sz)
- list.append(csd)
- list.append(zy)
- list.append(bz)
- return list
-
- # 获取林地信息
- def ldinfo(sheet,i):
- dl = sheet['D' + str(i)].value
- mj = sheet['F' + str(i)].value
- sz = sheet['G' + str(i)].value
- zy = sheet['I' + str(i)].value
- bz = sheet['j' + str(i)].value
- list = []
- list.append(dl)
- list.append(mj)
- list.append(sz)
- list.append('')
- list.append(zy)
- list.append(bz)
- return list
-
- # 获取争议地信息
- def getzyd(infolist):
- zydlist = []
- for i in range(0, len(infolist[0])):
- for j in range(2, len(infolist[0][i])):
- if infolist[0][i][j][len(infolist[0][i][j]) - 2] == '是':
- zydlist.append(infolist[0][i][j])
- for i in range(1, len(infolist[1])):
- if infolist[1][i][len(infolist[1][i]) - 2] == '是':
- zydlist.append(infolist[1][i])
- for i in range(1, len(infolist[2])):
- if infolist[2][i][len(infolist[2][i]) - 2] == '是':
- zydlist.append(infolist[2][i])
- for i in range(1, len(infolist[3])):
- zydlist.append(infolist[3][i])
- return zydlist
-
- # 单元格颜色填充
- def colorfill(sheet, row,flag):
- fille = PatternFill("solid", fgColor="E2EFDA")
- if flag == 'gr':
- for i in range(4, 15):
- sheet.cell(row, i).fill = fille
- else:
- for i in range(5, 57):
- sheet.cell(row, i).fill = fille
-
- # 整理集体所有的土地信息
- def mergeduplication(info):
- name = info[0]
- info.remove(info[0])
- mergeinfo = []
- ld = []
- yd = []
- qt = []
- for i in range(0, len(info)):
- if type_yd.__contains__(info[i][0]) and info[i][4] != '是':
- yd.append(info[i])
- info[i][4] = 1
- if info[i][5] == None:
- info[i][5] = '无'
- elif type_ld.__contains__(info[i][0]) and info[i][4] != '是':
- ld.append(info[i])
- info[i][4] = 1
- if info[i][5] == None:
- info[i][5] = '无'
- if info[i][2] == None:
- info[i][2] = '无'
- elif info[i][4] != '是':
- qt.append(info[i])
- info[i][4] = 1
- if info[i][5] == None:
- info[i][5] = '无'
- lddf = pd.DataFrame(ld, columns=['dl', 'mj', 'sz', 'csd', 'zy', 'bz'])
- yddf = pd.DataFrame(yd, columns=['dl', 'mj', 'sz', 'csd', 'zy', 'bz'])
- qtdf = pd.DataFrame(qt, columns=['dl', 'mj', 'sz', 'csd', 'zy', 'bz'])
-
- ldinfo = lddf.groupby(['dl', 'sz', 'bz']).sum()
- #ld_num = lddf.groupby(['dl', 'sz', 'bz']).count()
- ydinfo = yddf.groupby(['dl', 'sz', 'csd', 'bz']).sum()
- #yd_num = lddf.groupby(['dl', 'sz', 'bz']).count()
- qtinfo = qtdf.groupby(['dl', 'bz']).sum()
- #qt_num = lddf.groupby(['dl', 'sz', 'bz']).count()
- # print(ldinfo)
- # print(ydinfo)
- # print(qtinfo)
- ld_list = []
- flag = 0
- for group, values in ldinfo.iteritems():
- group_dict = values.to_dict() # 每个组转字典
- gplist = list(group_dict)
- vllist = list(group_dict.values())
- for i in range(0, len(gplist)):
- if flag < len(group_dict):
- zh = list(gplist[i])
- zh.append(vllist[i])
- ld_list.append(zh)
- flag = flag + 1
- else:
- ld_list[i].append(vllist[i])
- yd_list = []
- flag = 0
- for group, values in ydinfo.iteritems():
- group_dict = values.to_dict() # 每个组转字典
- gplist = list(group_dict)
- vllist = list(group_dict.values())
- for i in range(0, len(gplist)):
- if flag < len(group_dict):
- zh = list(gplist[i])
- zh.append(vllist[i])
- yd_list.append(zh)
- flag = flag + 1
- else:
- yd_list[i].append(vllist[i])
- flag = 0
- qt_list = []
- for group, values in qtinfo.iteritems():
- group_dict = values.to_dict() # 每个组转字典
- gplist = list(group_dict)
- vllist = list(group_dict.values())
- for i in range(0, len(gplist)):
- if flag < len(group_dict):
- zh = list(gplist[i])
- zh.append(vllist[i])
- qt_list.append(zh)
- flag = flag + 1
- else:
- qt_list[i].append(vllist[i])
- mergeinfo.append(ld_list)
- mergeinfo.append(yd_list)
- mergeinfo.append(qt_list)
- mergeinfo.insert(0, name)
- return mergeinfo
-
- # 将整理后的集体土体信息填到表格中
- def cxdlfill(info,sheet,row,xh):
- num_gd = 0
- area_gd = 0
- num_yd = 0
- area_yd = 0
- num_ld = 0
- area_ld = 0
- num_cd = 0
- area_cd = 0
- num_sf = 0
- area_sf = 0
- num_gk = 0
- area_gk = 0
- num_zz = 0
- area_zz = 0
- num_gg = 0
- area_gg = 0
- num_ts = 0
- area_ts = 0
- num_jt = 0
- area_jt = 0
- num_sy = 0
- area_sy = 0
- num_qt = 0
- area_qt = 0
- for i in range(1, len(info)):
- for j in range(0, len(info[i])):
- if type_gd.__contains__(info[i][j][0]):
- num_gd = num_gd + 1
- sheet['E' + str(num_gd + row)].value = info[i][j][0]
- sheet['F' + str(num_gd + row)].value = info[i][j][3]
- sheet['G' + str(num_gd + row)].value = info[i][j][2]
- sheet['G' + str(num_gd + row)].number_format = '0.00'
- if info[i][j][1] == '无':
- sheet['H' + str(num_gd + row)].value = ''
- else:
- sheet['H' + str(num_gd + row)].value = info[i][j][1]
- area_gd = info[i][j][2] + area_gd
- elif type_yd.__contains__(info[i][j][0]):
- num_yd = num_yd + 1
- sheet['I' + str(num_yd + row)].value = info[i][j][0]
- sheet['J' + str(num_yd + row)].value = info[i][j][5]
- sheet['K' + str(num_yd + row)].value = info[i][j][4]
- sheet['K' + str(num_yd + row)].number_format = '0.00'
- sheet['L' + str(num_yd + row)].value = info[i][j][1]
- sheet['M' + str(num_yd + row)].value = info[i][j][2]
- sheet['N' + str(num_yd + row)].value = info[i][j][4]
- sheet['N' + str(num_yd + row)].number_format = '0.00'
- if info[i][j][3] == '无':
- sheet['O' + str(num_yd + row)].value = ''
- else:
- sheet['O' + str(num_yd + row)].value = info[i][j][3]
- area_yd = info[i][j][4] + area_yd
- elif type_ld.__contains__(info[i][j][0]):
- num_ld = num_ld + 1
- sheet['P' + str(num_ld + row)].value = info[i][j][0]
- sheet['Q' + str(num_ld + row)].value = info[i][j][4]
- sheet['R' + str(num_ld + row)].value = info[i][j][3]
- sheet['R' + str(num_ld + row)].number_format = '0.00'
- if info[i][j][1] == '无':
- sheet['S' + str(num_ld + row)].value = ''
- else:
- sheet['S' + str(num_ld + row)].value = info[i][j][1]
- if info[i][j][2] == '无':
- sheet['T' + str(num_ld + row)].value = ''
- else:
- sheet['T' + str(num_ld + row)].value = info[i][j][2]
- area_ld = info[i][j][3] + area_ld
- elif type_cd.__contains__(info[i][j][0]):
- num_cd = num_cd + 1
- sheet['U' + str(num_cd + row)].value = info[i][j][0]
- sheet['V' + str(num_cd + row)].value = info[i][j][3]
- sheet['W' + str(num_cd + row)].value = info[i][j][2]
- sheet['W' + str(num_cd + row)].number_format = '0.00'
- if info[i][j][1] == '无':
- sheet['X' + str(num_cd + row)].value = ''
- else:
- sheet['X' + str(num_cd + row)].value = info[i][j][1]
- area_cd = info[i][j][2] + area_cd
- elif type_sf.__contains__(info[i][j][0]):
- num_sf = num_sf + 1
- sheet['Y' + str(num_sf + row)].value = info[i][j][0]
- sheet['Z' + str(num_sf + row)].value = info[i][j][3]
- sheet['AA' + str(num_sf + row)].value = info[i][j][2]
- sheet['AA' + str(num_sf+ row)].number_format = '0.00'
- if info[i][j][1] == '无':
- sheet['AB' + str(num_sf + row)].value = ''
- else:
- sheet['AB' + str(num_sf + row)].value = info[i][j][1]
- area_sf = info[i][j][2] + area_sf
- elif type_gk.__contains__(info[i][j][0]):
- num_gk = num_gk + 1
- sheet['AC' + str(num_gk + row)].value = info[i][j][0]
- sheet['AD' + str(num_gk + row)].value = info[i][j][3]
- sheet['AE' + str(num_gk + row)].value = info[i][j][2]
- sheet['AE' + str(num_gk + row)].number_format = '0.00'
- if info[i][j][1] == '无':
- sheet['AF' + str(num_gk + row)].value = ''
- else:
- sheet['AF' + str(num_gk + row)].value = info[i][j][1]
- area_gk = info[i][j][2] + area_gk
- elif type_zz.__contains__(info[i][j][0]):
- num_zz = num_zz + 1
- sheet['AG' + str(num_zz + row)].value = info[i][j][0]
- sheet['AH' + str(num_zz + row)].value = info[i][j][3]
- sheet['AI' + str(num_zz + row)].value = info[i][j][2]
- sheet['AI' + str(num_zz + row)].number_format = '0.00'
- if info[i][j][1] == '无':
- sheet['AJ' + str(num_zz + row)].value = ''
- else:
- sheet['AJ' + str(num_zz + row)].value = info[i][j][1]
- area_zz = info[i][j][2] + area_zz
- elif type_gg.__contains__(info[i][j][0]):
- num_gg = num_gg + 1
- sheet['AK' + str(num_gg + row)].value = info[i][j][0]
- sheet['AL' + str(num_gg + row)].value = info[i][j][3]
- sheet['AM' + str(num_gg + row)].value = info[i][j][2]
- sheet['AM' + str(num_gg + row)].number_format = '0.00'
- if info[i][j][1] == '无':
- sheet['AN' + str(num_gg + row)].value = ''
- else:
- sheet['AN' + str(num_gg + row)].value = info[i][j][1]
- area_gg = info[i][j][2] + area_gg
- elif type_ts.__contains__(info[i][j][0]):
- num_ts = num_ts + 1
- sheet['AO' + str(num_ts + row)].value = info[i][j][0]
- sheet['AP' + str(num_ts + row)].value = info[i][j][3]
- sheet['AQ' + str(num_ts + row)].value = info[i][j][2]
- sheet['AQ' + str(num_ts + row)].number_format = '0.00'
- if info[i][j][1] == '无':
- sheet['AR' + str(num_ts + row)].value = ''
- else:
- sheet['AR' + str(num_ts + row)].value = info[i][j][1]
- area_ts = info[i][j][2] + area_ts
- elif type_jt.__contains__(info[i][j][0]):
- num_jt = num_jt + 1
- sheet['AS' + str(num_jt + row)].value = info[i][j][0]
- sheet['AT' + str(num_jt + row)].value = info[i][j][3]
- sheet['AU' + str(num_jt + row)].value = info[i][j][2]
- sheet['AU' + str(num_jt + row)].number_format = '0.00'
- if info[i][j][1] == '无':
- sheet['AV' + str(num_jt + row)].value = ''
- else:
- sheet['AV' + str(num_jt + row)].value = info[i][j][1]
- area_jt = info[i][j][2] + area_jt
- elif type_sy.__contains__(info[i][j][0]):
- num_sy = num_sy + 1
- sheet['AW' + str(num_sy + row)].value = info[i][j][0]
- sheet['AX' + str(num_sy + row)].value = info[i][j][3]
- sheet['AY' + str(num_sy + row)].value = info[i][j][2]
- sheet['AY' + str(num_sy + row)].number_format = '0.00'
- if info[i][j][1] == '无':
- sheet['AZ' + str(num_sy + row)].value = ''
- else:
- sheet['AZ' + str(num_sy + row)].value = info[i][j][1]
- area_sy = info[i][j][2] + area_sy
- elif type_qt.__contains__(info[i][j][0]):
- num_qt = num_qt + 1
- sheet['BA' + str(num_qt + row)].value = info[i][j][0]
- sheet['BB' + str(num_qt + row)].value = info[i][j][3]
- sheet['BC' + str(num_qt + row)].value = info[i][j][2]
- sheet['BC' + str(num_qt + row)].number_format = '0.00'
- if info[i][j][1] == '无':
- sheet['BD' + str(num_qt + row)].value = ''
- else:
- sheet['BD' + str(num_qt + row)].value = info[i][j][1]
- area_qt = info[i][j][2] + area_qt
- # 合计行行数
- hj_row = row + max(num_yd, num_gd,num_cd,num_ld,num_sf,num_gk,num_zz,num_gg,num_ts,num_jt,num_sy,num_qt) + 1
- sheet.merge_cells(range_string='E' + str(hj_row) + ':' + 'F' + str(hj_row))
- sheet['E' + str(hj_row)].value = '合计'
- sheet['G' + str(hj_row)].value = area_gd
- sheet['G' + str(hj_row)].number_format = '0.00'
- sheet['G' + str(hj_row)].font = Font(bold=True)
- sheet.merge_cells(range_string='I' + str(hj_row) + ':' + 'M' + str(hj_row))
- sheet['I' + str(hj_row)].value = '合计'
- sheet['N' + str(hj_row)].value = area_yd
- sheet['N' + str(hj_row)].font = Font(bold=True)
- sheet['N' + str(hj_row)].number_format = '0.00'
- sheet.merge_cells(range_string='P' + str(hj_row) + ':' + 'Q' + str(hj_row))
- sheet['P' + str(hj_row)].value = '合计'
- sheet['R' + str(hj_row)].value = area_ld
- sheet['R' + str(hj_row)].font = Font(bold=True)
- sheet['R' + str(hj_row)].number_format = '0.00'
- sheet.merge_cells(range_string='U' + str(hj_row) + ':' + 'V' + str(hj_row))
- sheet['U' + str(hj_row)].value = '合计'
- sheet['W' + str(hj_row)].value = area_cd
- sheet['W' + str(hj_row)].font = Font(bold=True)
- sheet['W' + str(hj_row)].number_format = '0.00'
- sheet.merge_cells(range_string='Y' + str(hj_row) + ':' + 'Z' + str(hj_row))
- sheet['Y' + str(hj_row)].value = '合计'
- sheet['AA' + str(hj_row)].value = area_sf
- sheet['AA' + str(hj_row)].font = Font(bold=True)
- sheet['AA' + str(hj_row)].number_format = '0.00'
- sheet.merge_cells(range_string='AC' + str(hj_row) + ':' + 'AD' + str(hj_row))
- sheet['AC' + str(hj_row)].value = '合计'
- sheet['AE' + str(hj_row)].value = area_gk
- sheet['AE' + str(hj_row)].font = Font(bold=True)
- sheet['AE' + str(hj_row)].number_format = '0.00'
- sheet.merge_cells(range_string='AG' + str(hj_row) + ':' + 'AH' + str(hj_row))
- sheet['AG' + str(hj_row)].value = '合计'
- sheet['AI' + str(hj_row)].value = area_zz
- sheet['AI' + str(hj_row)].font = Font(bold=True)
- sheet['AI' + str(hj_row)].number_format = '0.00'
- sheet.merge_cells(range_string='AK' + str(hj_row) + ':' + 'AL' + str(hj_row))
- sheet['AK' + str(hj_row)].value = '合计'
- sheet['AM' + str(hj_row)].value = area_gg
- sheet['AM' + str(hj_row)].font = Font(bold=True)
- sheet['AM' + str(hj_row)].number_format = '0.00'
- sheet.merge_cells(range_string='AO' + str(hj_row) + ':' + 'AP' + str(hj_row))
- sheet['AO' + str(hj_row)].value = '合计'
- sheet['AQ' + str(hj_row)].value = area_ts
- sheet['AQ' + str(hj_row)].font = Font(bold=True)
- sheet['AQ' + str(hj_row)].number_format = '0.00'
- sheet.merge_cells(range_string='AS' + str(hj_row) + ':' + 'AT' + str(hj_row))
- sheet['AS' + str(hj_row)].value = '合计'
- sheet['AU' + str(hj_row)].value = area_jt
- sheet['AU' + str(hj_row)].font = Font(bold=True)
- sheet['AU' + str(hj_row)].number_format = '0.00'
- sheet.merge_cells(range_string='AW' + str(hj_row) + ':' + 'AX' + str(hj_row))
- sheet['AW' + str(hj_row)].value = '合计'
- sheet['AY' + str(hj_row)].value = area_sy
- sheet['AY' + str(hj_row)].font = Font(bold=True)
- sheet['AY' + str(hj_row)].number_format = '0.00'
- sheet.merge_cells(range_string='BA' + str(hj_row) + ':' + 'BB' + str(hj_row))
- sheet['BA' + str(hj_row)].value = '合计'
- sheet['BC' + str(hj_row)].value = area_qt
- sheet['BC' + str(hj_row)].font = Font(bold=True)
- sheet['BC' + str(hj_row)].number_format = '0.00'
- colorfill(sheet, hj_row, 'cx')
- # 序号、户主、身份证、总面积
- sheet.merge_cells(range_string='A' + str(row + 1) + ':' + 'A' + str(hj_row))
- # if xh == 0:
- # sheet['A' + str(row + 1)].value = xh + 1
- # else:
- # sheet['A' + str(row + 1)].value = xh + 2
- sheet['A' + str(row + 1)].value = xh + 1
- sheet.merge_cells(range_string='B' + str(row + 1) + ':' + 'B' + str(hj_row))
- sheet['B' + str(row + 1)].value = info[0]
- sheet.merge_cells(range_string='C' + str(row + 1) + ':' + 'C' + str(hj_row))
- sheet.merge_cells(range_string='D' + str(row + 1) + ':' + 'D' + str(hj_row))
- sheet['D' + str(row + 1)].value = area_yd + area_gd +area_cd+area_ld+area_ts+area_gg+area_jt+area_sf+area_gk+area_zz+area_sy+area_qt
- sheet['D' + str(row + 1)].number_format = '0.00'
- thin = Side(border_style="thin", color="000000")
- for i in range(row + 1, sheet.max_row + 1):
- for j in range(1, 57):
- sheet.cell(i, j).border = Border(top=thin, left=thin, right=thin, bottom=thin)
- row = hj_row
- xh = xh + 1
- return row, xh
-
- # 整理争议地信息
- def mergedzyd(info):
- mergeinfo = []
- ld = []
- yd = []
- qt = []
- for i in range(0, len(info)):
- if type_yd.__contains__(info[i][0]):
- yd.append(info[i])
- info[i][4] = 1
- if info[i][5] == None:
- info[i][5] = '无'
- elif type_ld.__contains__(info[i][0]):
- ld.append(info[i])
- info[i][4] = 1
- if info[i][5] == None:
- info[i][5] = '无'
- if info[i][2] == None:
- info[i][2] = '无'
- else:
- qt.append(info[i])
- info[i][4] = 1
- if info[i][5] == None:
- info[i][5] = '无'
- lddf = pd.DataFrame(ld, columns=['dl', 'mj', 'sz', 'csd', 'zy', 'bz'])
- yddf = pd.DataFrame(yd, columns=['dl', 'mj', 'sz', 'csd', 'zy', 'bz'])
- qtdf = pd.DataFrame(qt, columns=['dl', 'mj', 'sz', 'csd', 'zy', 'bz'])
-
- ldinfo = lddf.groupby(['dl', 'sz', 'bz']).sum()
- ydinfo = yddf.groupby(['dl', 'sz', 'csd', 'bz']).sum()
- qtinfo = qtdf.groupby(['dl', 'bz']).sum()
- ld_list = []
- flag = 0
- for group, values in ldinfo.iteritems():
- group_dict = values.to_dict() # 每个组转字典
- gplist = list(group_dict)
- vllist = list(group_dict.values())
- for i in range(0, len(gplist)):
- if flag < len(group_dict):
- zh = list(gplist[i])
- zh.append(vllist[i])
- ld_list.append(zh)
- flag = flag + 1
- else:
- ld_list[i].append(vllist[i])
- yd_list = []
- flag = 0
- for group, values in ydinfo.iteritems():
- group_dict = values.to_dict() # 每个组转字典
- gplist = list(group_dict)
- vllist = list(group_dict.values())
- for i in range(0, len(gplist)):
- if flag < len(group_dict):
- zh = list(gplist[i])
- zh.append(vllist[i])
- yd_list.append(zh)
- flag = flag + 1
- else:
- yd_list[i].append(vllist[i])
- flag = 0
- qt_list = []
- for group, values in qtinfo.iteritems():
- group_dict = values.to_dict() # 每个组转字典
- gplist = list(group_dict)
- vllist = list(group_dict.values())
- for i in range(0, len(gplist)):
- if flag < len(group_dict):
- zh = list(gplist[i])
- zh.append(vllist[i])
- qt_list.append(zh)
- flag = flag + 1
- else:
- qt_list[i].append(vllist[i])
- mergeinfo.append(ld_list)
- mergeinfo.append(yd_list)
- mergeinfo.append(qt_list)
- mergeinfo.insert(0, '争议地')
- return mergeinfo
-
- def dataGet(s0):
- aa = 0
- datekey = {
- 'ze':'0','im':'1','tw':'2','ee':'3','fr':'4','ve':'5',
- 'ix':'6','se':'7','ei':'8','ni':'9'
- }
- ii = 0
- dastr = []
- while ii < 8:
- x1 = 2 * ii
- y1 = x1 + 2
- das = datekey[s0[x1:y1]]
- dastr.append(das)
- ii = ii + 1
- datestr = ''.join(dastr)
- mm = int(datestr[:2])
- dd = int(datestr[2:4])
- yy = int(datestr[4:])
- tm = time.localtime()
- dy = int(tm.tm_year)
- dm = int(tm.tm_mon)
- dday=int(tm.tm_mday)
- if dy < yy:
- aa = 1.7
- elif dy == yy:
- if dm < mm:
- aa = 1.7
- elif dm == mm:
- if dday <= dd:
- aa = 1.7
- else:
- aa = -3
- else:
- aa = -3
- else:
- aa = -3
- return aa
- def macget(sy0,ma0):
- mackey = {
- 'a':'10','b':'11','c':'12','d':'13','e':'14','f':'15'
- }
- aa = 0
- sy = list(sy0)
- ma = list(ma0)
- ii = 0
- node = uuid.getnode()
- MAC = uuid.UUID(int = node).hex[-12:]
- mac = MAC.lower()
- while ii < 4:
- try:
- syi = int(sy[ii])
- mai = ma[ii]
- maci = mac[syi]
- if maci == mai:
- aa = 0
- else:
- aa = -2
- break
- except:
- syi = int(mackey[sy[ii]])
- mai = ma[ii]
- maci = mac[syi]
- if maci == mai:
- aa = 0
- else:
- aa = -2
- break
- ii = ii + 1
- if aa == 0:
- aa = 1.7
- else:
- aa = -2
- return aa
- def pdd(kk):
- n = Symbol('n')
- if kk > limit(((3*n*n - 5)/(2*n*n + n)),n,oo) and kk < (integrate(n**2,[n,0,1]) * 6):
- # -----------------这句才是程序运行代码----------------------------------
- drawwd()
- # ----------------这句才是程序运行代码----------------------------------
- elif kk == -1:
- messagebox.showerror('错误', '许可文件不存在!')
- encryption.wdshow()
- elif kk == -2:
- messagebox.showerror('错误', '许可文件密钥错误!')
- encryption.wdshow()
- elif kk == -3:
- messagebox.showerror('错误', '超过许可时间!')
- encryption.wdshow()
- else:
- messagebox.showerror('错误', '许可文件损坏!')
- encryption.wdshow()
- def bsfGet(s0):
- aa = 0
- bsfkey = {
- 'bd':'a','cd':'c','7a':'d','ae':'e','97':'g','6k':'h',
- '57':'i','22':'D','2c':'m','8m':'o','3w':'p','11':'I',
- '5d':'r','4u':'s','9t':'t','au':'u','23':'x','yk':'y',
- 'za':'z','k4':'0','v6':'1','tw':'2','h0':'5','op':'7',
- 'po':'8','wt':'9','8x':':','yy':',','lo':' ',
- }
- ii = 0
- lens0 = len(s0)
- bsfstr = []
- while ii < (lens0 / 2):
- x1 = 2 * ii
- y1 = x1 + 2
- bsf = bsfkey[s0[x1:y1]]
- bsfstr.append(bsf)
- ii = ii + 1
- bsstr = ''.join(bsfstr)
- return bsstr
- def licen():
- aa = 0
- linsy = ''
- linma = ''
- s1 = 'aucd8x'
- s2 = '3w5d8m7aaucd9tlo11228x'
- s3 = 'cd573w6kae5d8x'
- # path = 'D:\\CMCtbxLisence\\tbxLisence.txt'
- # isExists=os.path.exists(path)
- # if not isExists:
- # path1 = 'E:\\CMCtbxLisence\\tbxLisence.txt'
- # isExists1=os.path.exists(path1)
- # if not isExists1:
- # path2 = 'F:\\CMCtbxLisence\\tbxLisence.txt'
- # isExists2=os.path.exists(path2)
- # if not isExists2:
- # aa = -1
- # else:
- # outpath = 'F:\\CMCtbxLisence\\tbxLisence.txt'
- # else:
- # outpath = 'E:\\CMCtbxLisence\\tbxLisence.txt'
- # else:
- # outpath = 'D:\\CMCtbxLisence\\tbxLisence.txt'
- outpath = os.path.expandvars("%APPDATA%") + '\\CMCexeLisence\\formcLisence.txt'
- isExists = os.path.exists(outpath)
- if not isExists:
- aa = -1
- if aa != -1:
- with open(outpath,'r') as lines:
- for line in lines:
- if re.search(bsfGet(s1),line):
- try:
- linrq1 = line.split(':',-1)[-1]
- linrq = linrq1.replace('\n','')
- aa = dataGet(linrq)
- if aa == -3:
- break
- except:
- aa = -9999
- if re.search(bsfGet(s2),line):
- try:
- linSY1 = line.split('-',-1)[-1]
- linSY = linSY1.replace('\n','')
- linsy = linSY.lower()
- except:
- aa = -9999
- if re.search(bsfGet(s3),line):
- try:
- linma1 = line.split('-',-1)[0]
- linMA1 = linma1.split(':',-1)[-1]
- linMA = linMA1.replace('\n','')
- linma = linMA.lower()
- aa = macget(linsy,linma)
- except:
- aa = -9999
- else:
- aa = -1
- pdd(aa)
-
-
- if __name__ == '__main__':
- # 输入文件,输出文件
- # convert(r'F:\2024\05\20240515_特定Excel格式转换\ML库区表1 - 副本.xlsx', r'F:\2024\05\20240515_特定Excel格式转换\moban.xlsx',
- # r'F:\2024\05\20240515_特定Excel格式转换\result')
- licen()
|