背景:驻村期间需要将1张含有200多人的人员记录数据写入人员信息登记表中,1条记录对应一个人员信息登记表。如果复制粘贴肯定比较慢,所以当然使用Python来解决。涉及的字段其实有23个,因涉及其他问题这里演示只用10个字段。表格如下:
另一张excel表已经有人员数据,这里虚构了2条记录。
使用的库:xlrd(版本1.2.0)、openpyxl
代码及注释如下:
# 功能:excel人员信息记录表批量写入多个单表人员信息登记表
# 作者:永远的疯子
# 时间:2022-3-31
import xlrd
import openpyxl
file_person_record = 'I:/驻村类/填表/人员信息登记表_总表.xlsx'
file_simple_table = 'I:/驻村类/填表/人员信息登记表.xlsx' # 模板表
def read_excel():
wb = xlrd.open_workbook(filename=file_person_record) # 打开文件
table = wb.sheet_by_name('详细表') # 通过名字获取表格
for i in range(1, table.nrows):
rows = table.row_values(i) # 获取行内容
write_lists_to_excel(rows)
def write_lists_to_excel(rows):
wb = openpyxl.load_workbook(file_simple_table)
active_sheet = wb.active
name = rows[0] + '_' + rows[7] # 另存时用
active_sheet['a2'] = '填表单位(盖章):****居委会 填表人:永远的疯子 填表时间:2022年3月31日'
active_sheet['b3'] = rows[0] # 姓名
active_sheet['d3'] = rows[1] # 性别
active_sheet['f3'] = rows[2] # 民族
active_sheet['b4'] = rows[3] # 别名
active_sheet['d4'] = rows[4] # 出生年月
active_sheet['f4'] = rows[5] # 学历 (学位)
active_sheet['b5'] = rows[6] # 籍贯
active_sheet['d5'] = rows[7] # 身份证号码
active_sheet['b6'] = rows[8] # 个人简历
active_sheet['b7'] = rows[9] # 现住地址
wb.save('I:/驻村类/填表/' + name + '.xlsx')
if __name__ == '__main__':
read_excel()
后记:本文章只是简单应用,涉及的表格有固定格式,因此就用简单的单元格赋值即可。运行代码后会在目录下生成姓名+身份证号的单个xlsx文件,试一下吧。挺香的!