首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

python-docx、openpyxl试用

一、需求:

从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、逻辑没花多少时间,但实现逻辑花了不少时间,老是得不到自己想要的结果,需要慢慢锻炼

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180818G1MQDF00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券