作者: 锋小刀
微信搜索【Python与Excel之交】关注我的公众号查看更多内容
在工作中,我们经常同word、excel、ppt打交道,而excel用的应该是最多的。不知道大家有没有一填就是几百上千份表格的经历,那种感觉就像个机器人一样做着重复的事情,让人崩溃。
在上一期python办公自动化中,我们讲解了python如何按指定名称快速创建工作表:为了拒绝做重复的事情,我用python写了个自动化脚本,让它按名称自动创建工作表
而今天我们来讲解一个比较简单的案例,使用openpyxl操作excel批量填充数据,并生成新的excel文件以及新的工作表,拒绝做重复的事情。
数据源:今天需要用到的数据是上一期爬虫案例的数据源:手把手教你用python爬取猫眼TOP100电影信息
需要把数据填充到以下工作表的相应表格,然后以对应的电影名称为名生成多个excel工作簿,并以对应的电影名称为重命名工作表:
任务目标:
填充对应数据进表格,并重命名对应的工作表名,最后以电影名称为名保存为多个工作簿。
填充对应数据进表格,以电影名称为名创建多个工作表,最后保存为单个工作簿。
代码实现
openpyxl是一个第三方模块,需要自行在终端中使用pip命令安装,一些基本操作可以自行上网查找,网上有很详细的介绍:
pip install openpyxl
导入模块:
import pandas as pdimport openpyxl
用openpyxl读取excel模板:
wb = openpyxl.load_workbook(r"D:\untitled1\办公自动化\EXCEL[批量填充数据]\书单.xlsx")ws = wb['Sheet1']
用pandas读取数据源:
data = pd.read_csv(r"D:\untitled1\办公自动化\EXCEL[批量填充数据]\猫眼100.csv")
查看下数据:
这里直接用for循环一个一个的取出数据,然后ws.title修改工作表名称并把数据填充进相应的表格,最后以电影名称为名,保存为多个excel工作簿:
# 遍历数据源一个一个取出数据for d, i, r, e in zip(data['电影名称'], data['主演'], data['评分'], data['上映时间']):# 修改工作表名称ws.title = d# 在对应单元格填充相应数据ws['B1'].value = dws['B2'].value = iws['D1'].value = rws['B3'].value = e# 以电影名称为名字,保存为单个工作簿wb.save(r"D:\untitled1\办公自动化\EXCEL[批量填充数据]\信息\{}.xlsx".format(d))
如果是保存为一份excel工作簿,只需要加一句代码,再修改一下保存名称即可:
sheet = wb.copy_worksheet(ws) # 复制原有工作表sheet.title = d # 重命名工作表
运行效果:
我们今天使用openpyxl操作excel批量填充数据,可以看到,只要短短十几行代码即可快速搞定上百份表格,不用一个一个手动的填了。