某些个人信息表的格式如图:
而原始的数据格式如下:
其中图上标注,以及帮扶责任人信息,和惠农卡号,是能够自动填写并批量生成的。代码如下:
#用xlrd.open_workbook时,添加对应的参数formatting_info=True,就可以保留原有格式了
import xlrd
import xlwt
from xlutils.copy import copy
def getBornData(number): #获取出生日期
dataStr = str(number)
dateStr = dataStr[6:14]
print(dateStr)
born = dateStr[0:4]+'.'+dateStr[4:6]+'.'+dateStr[6:9]
return born
def getAge(number): #获取年龄
dataStr = str(number)
dateStr = dataStr[6:14]
age = 2018 - int(dateStr[0:4])
return age
dataExcelPath = '17脱贫户原始 - 副本批量180607.xls'
writeExcelPath = '17年政策批量生成母表.xls'
# xlrd.open_workbook(dataExcelPath, formatting_info=True)
allData = xlrd.open_workbook(dataExcelPath) #读取个人信息表
tableData = allData.sheets()[0] #获取数据表格
pepNum = 0
for i in range(1,tableData.nrows): #遍历所有信息
#print(tableData.row_values(i)[6])
#tableData.row_values(i)[0]是姓名 1是身份证号 2是关系 3是民族 4是五保金 5是低保金 6是低保户 7是简介
if tableData.row_values(i)[2]=='户主':
print('当前户主'+tableData.row_values(i)[0])
for j in range(1, 6):
if i+j<tableData.nrows and tableData.row_values(i + j)[2]== '户主':
pepNum = j
break;
else:
pepNum = 1
# print(tableData.row_values(i)[0]+'家有%d人'%(pepNum)) #pepNum是户中人口
print('开始写入表格信息:')
# 将数据写入母表的拷贝中,并存储母表至新的位置
old_excel = xlrd.open_workbook(writeExcelPath, formatting_info=True)
new_excel = copy(old_excel)
new_excel.save('E:\PythonTest\脱贫户简介\\' + 'TEST' + '.xls')
ws = new_excel.get_sheet(0)
for k in range(0,pepNum):
print(k)
print('SS写入:姓名:' + tableData.row_values(i + k)[0])
ws.write(1,1,tableData.row_values(i)[0])#户主姓名
ws.write(2,1,tableData.row_values(i)[1]) #身份证号
ws.write(3,3,getAge(tableData.row_values(i)[1])) #年龄
ws.write(3,5,pepNum) #人口数
#ws.write(14,1,tableData.row_values(i)[7]) #写入基本情况信息
ws.write(7+k,0,tableData.row_values(i + k)[0]) #写入姓名
ws.write(7+k,2,tableData.row_values(i + k)[3]) #写入民族
ws.write(7+k,3,getBornData(tableData.row_values(i + k)[1])) #写入出生日期
ws.write(7+k,5,tableData.row_values(i + k)[2]) #与户主关系
ws.write(7+k,6,tableData.row_values(i + k)[6]) #写入户类型
ws.write(17, 1, tableData.row_values(i)[7]) # 写入帮扶责任人
ws.write(17, 5, tableData.row_values(i)[8]) # 写入手机号
ws.write(19, 5, tableData.row_values(i)[9]) # 写入惠农卡号信息
print(tableData.row_values(i)[9])
huzhuPath = 'E:\PythonTest\脱贫户简介\\'+tableData.row_values(i)[0]+'.xls' #构建每一个独立的excel文件
new_excel.save(huzhuPath)
最终效果:
这个算法需要注意的是户主和之子什么的都在一起,要先确定家庭人口,再写入数据。需要核对的就是收入,以及脱贫户的基本情况,也就是当初为什么评为贫困户的。数据工作,还是需要系统化,自动化,如果又回到手工的时代,那大量的时间都是白白浪费了,看起来似乎很辛苦,但实际上效率很低,大家都很劳累,不如多点时间入户。