100份Excel分别插入图片,数据柱状图,折线图,一个一个表来做,太累。坐下来喝杯让Python+Excel来帮你完成。实例代码,小伙伴们根据自己实际情况,稍做修改就可通用。
N多份Excel文档
这里用到两个模块,openpyxl,glob
首先安装模块: pip install openpyx
运行-CMD命令进入安装
打开编译器,我用的是Sublime因体积小,运行快。请原谅小编还用着10年前的老酷睿。
sublime
可以开始啦~~~~~~~~
import glob
import os
from openpyxl import load_workbook
from openpyxl.drawing.image import Image #别错了最后一个Image的I要大写
from openpyxl.chart import LineChart , Reference
from openpyxl.chart import BarChart , Reference
导入库
#遍历当前文件夹内所有excel文件
excel_file = glob.glob('**/*.xlsx',recursive=True)
#对每个Excel循环操作
for i in excel_file:
wb = load_workbook(filename=i)#为每个Excel循环打开
sheet = wb.active#Excel当前活动的sheet
pic = Image('C:甥敳獲PublicPicturesSample PicturesChrysanthemum.jpg')#图片的路径位置,按实际路径修改就行。这里示例只是放一张图片。
pic.height = 100 #图片高度
pic.width = 100 #图片宽度
sheet.add_image(pic,'L4')#图片放在L4单元格,可根据实际情况放在不同的单元格
代码1
chart = BarChart() #柱状图
#数据的引用范围
data = Reference(worksheet=sheet,min_row=2 , max_row=3 , min_col=1 , max_col=13 )
#X轴的项目名称
categories = Reference(sheet,min_row=1 , min_col=2 , max_col=13)
#标题头及设定X轴的类目
chart.add_data(data,from_rows=True, titles_from_data=True)
chart.set_categories(categories)
sheet.add_chart(chart,"A14")#将柱状图放在A14单元格
代码2
chart = LineChart() #折线图
data = Reference(worksheet=sheet,min_row=2 , max_row=3 , min_col=1 , max_col=13)
categories = Reference(sheet,min_row=1 , min_col=2 , max_col=13)
chart.add_data(data, from_rows=True, titles_from_data=True)
chart.set_categories(categories)
sheet.add_chart(chart,"I14")
代码3
折线图和柱状图大同小异,跟据需求选择即可。
from openpyxl.chart import LineChart , Reference 为折线图。
from openpyxl.chart import BarChart , Reference为柱状图。
折线图和柱状图比较常用所以以它们为例,其它的图表其实也差不多,伙伴们可以去官网上看别的图表类型是导入那个,然后代入即可。
以上就基本上完成了。别忘记保存文件哦,代码如下。
wb.save(filename=i)
最后提示一下,完成了多少个文件。这样人机交互人性化些!
print(f"DONE!"+i)
代码4
运行代码~
看看效果吧。这是原始表格。
原始表格
程序运行后的表格,这是100个表中的一个
这是如果手动一个一个插入100个表格需要花大半天时间,而几行代码只需要10来秒就完成的表格。难道不香吗。给小编鼓励一下,点个赞吧!
小编水平有限,欢迎留言指正,或者有什么问都可以留言哦!有兴趣的伙伴们可以自己尝试去做做。刚好对此有需求的伙伴更是可以直接拿来用。谢谢大家!!
最后来一张完整的代码图。