您的位置:首页 > 编程语言 > Python开发

利用Python的第三方库openpyxl实现在Excel中画图

2019-03-05 19:08 781 查看

利用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’)

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: