一、需求:
从excel中读取数据,填入word文档对应的表格中。来自每年都要填一些重复信息的表,烦躁!
二、目的:
1、学习使用两个python库,python-docx、openpyxl
2、熟悉python的语法结构等
三、方法:
以一个实际的具体实例,动手编程实现。
四、工具:
python、pycharm
五、具体做法:
如下图。
将excel中的数据导入到word文档表格中,类似的,可以扩展到将数据库中的信息导入。
代码:
importdocx
importcopy
importopenpyxl
wb = openpyxl.load_workbook(filename='人员信息.xlsx')
info =dict()
ws = wb.active
#构造字典
forcellinlist(ws.rows)[]:
info[cell.value] =''
keys = info.keys()
#row是一行
print(ws.max_row)
name =''
#遍历行,将值填入字典
forkinrange(ws.max_row):
ifk ==:
continue
forx,yinzip(keys,list(ws.rows)[k]):
print(x,y.value)
info[x] = y.value
name = info['姓名']
# 深拷贝,因为后面要对字典动手删除,找到一个删一个
tmp = copy.deepcopy(info)
file = docx.Document('./人员信息.docx')
table = file.tables[]
len_row =len(table.rows)
len_cols =len(table.columns)
#默认填表的内容在说明信息的横向下一格
flag =
forkeyinlist(tmp):
foriinrange(len_row):
forjinrange(len_cols):
#列表的索引上限
ifj+1>= len_cols:
break
iftable.cell(i, j).text == key:
flag =1
#这里出过错,一定要加str(),当tmp[key]为数字时,会报错
table.cell(i, j+1).text =str(tmp[key])
#利用下面的方式,会换行
#table.cell(i, j+1).add_paragraph(str(tmp[key]))
#将已经找到的值删除
tmp.pop(key)
break
ifflag ==1:
flag =
break
file.save(name+".docx")
结果:
六、学习体会:
1、对常用的函数、语法不是很熟悉,需要多动手,多思考这样具体的项目,亲自动手
2、如何学习一个新库,怎样从又快又好的掌握,好像不是很有方法,需要慢慢摸索。这其中就代表如何学习新东西,是从具体细节就要弄的清清楚楚呢,还是有一个全局把握呢,虽然我认为应该从全局把握,但免不了不搞清细节不罢休的状态,容易钻死在这,可能会浪费很多时间
3、学习能力真的有待加强,尤其是英文文档的学习能力,开始阶段可能花费很大一部分时间,慢慢也许就会快些
4、逻辑没花多少时间,但实现逻辑花了不少时间,老是得不到自己想要的结果,需要慢慢锻炼
领取专属 10元无门槛券
私享最新 技术干货