目录

  • 思路
  • 代码实现
  • 运行结果



用python做的小玩意,可以在Excel单元格填充颜色,所有像素组合成一张图片。

思路

  1. 读取图片
  2. 获取图片像素信息
  3. 设定在Excel里显示的像素量。保留长宽信息
  4. 缩放图片
  5. 活的缩放后图片每个像素点的颜色值
  6. 依次为表格添加颜色
  7. 设置表格行高列宽
  8. 保存

代码实现

from openpyxl import Workbook
from openpyxl.utils import get_column_letter
from openpyxl.styles import PatternFill, Color
from PIL import Image
import os

# 设置路径
path='D:/desktop/'
os.chdir(path)

# 打开表格
workbook = Workbook()
worksheet = workbook.active

# 读取照片
im = Image.open("longjs.jpg")
im_width = im.size[0]
im_height = im.size[1]

# 将照片适度缩放,像素太多影响生成
target_height = 100
target_width = int(target_height*im_width/im_height)

# 实行缩放
im_resize = im.resize((target_width, target_height),Image.Resampling.LANCZOS)

# 给每个表格填充颜色
pix = im_resize.load()
for row in range(1, target_height):
    for col in range(1, target_width):
        cell = worksheet.cell(column=col, row=row)
        pixpoint = pix[col - 1, row - 1]
        pixColor = "FF%02X%02X%02X" % (pixpoint[0], pixpoint[1], pixpoint[2])
        fill = PatternFill(patternType='solid',fgColor=Color(rgb=pixColor))
        cell.fill = fill
    # 设置行高
    worksheet.row_dimensions[row].height = 6

# 设置列宽
for col in range(1, target_width):
    worksheet.column_dimensions[get_column_letter(col)].width = 1

# 保存结果
workbook.save(filename='longjs.xlsx')

运行结果

原图片:

【杂项】python将图片转成Excel单元格显示;Excel生成图片_python

输出:

【杂项】python将图片转成Excel单元格显示;Excel生成图片_缩放_02