利用Python的第三方库openpyxl实现在Excel中画图
今天在写测试用例的时候利用背景色标记不同级别的用例,联想到日本一个老人在Excel上作画的想法,突发奇想利用Python操作Excel改变背景色来作图,首先就要用到可以操作Excel的第三方库openpyxl,之前想用xlwt的但是这个包只支持Excel的列上限是256列,显然不满足要求,总体思路是:利用PIL库的Image对象获取想要画的图片的所有像素点的RGB值,在利用openpyxl设置Excel的单元格的背景色为该颜色,保存后还要打开Excel自己设置下列的宽度因为我没找到那个方法可以设置全局宽度,又不想一个个设置,好在Excel可以手动设置,我设置的宽度值为1.3 废话不多说了 上代码吧!(不足之处还请指点)
from openpyxl import Workbook
from openpyxl.styles import PatternFill
from PIL import Image
im =Image.open(‘haha.png’)
width,heigth=im.size
li=[]
col=[]
for i in range(width): #将获取到的元素像素点颜色存入列表
for j in range(heigth):
t=im.getpixel((i,j))
li.append(t)
for m in li: #将元素颜色转化成颜色字符串
#s=str(hex(m[0]+m[1]*256+m[2]*65536))
s=str(hex(m[2]+m[1]*256+m[0]*65536))
word=str(s[2:len(s)])
if len(word)==6:
col.append(word)
elif len(word)==5:
col.append(‘0’+word)
elif len(word)==4:
col.append(‘00’+word)
elif len(word)==3:
col.append(‘000’+word)
elif len(word)==2:
col.append(‘0000’+word)
elif len(word)==1:
col.append(‘00000’+word)
#2-新建一个工作簿
wb = Workbook()
ws = wb.active
for x in range(1,width+1): #逐个设置单元格的背景色
for y in range(1,heigth+1):
fill = PatternFill(“solid”, fgColor=col[(x-1)*heigth+y-1])
ws.cell(y,x).fill=fill
#保存文件
wb.save(‘picturemei.xlsx’)
如果觉得《利用Python的第三方库openpyxl实现在Excel中画图》对你有帮助,请点赞、收藏,并留下你的观点哦!