我想用python脚本把一张图片(*.jpg)转换成Excel的电子表格的背景色。根据下面的照片。
完整的Python脚本
import openpyxl
from PIL import Image
def image_to_excel(file, output, percentage):
# Open picture and create a workbook instance
im = Image.open(file)
wb = openpyxl.Workbook()
sheet = wb.active
# Resize image with spreadsheet's columns
width, height = im.size
cols = width * percentage/100
print('Old image size: ' + str(im.size))
imgScale = cols/width
newSize = (int(width*imgScale), int(height*imgScale))
im = im.resize(newSize)
# Get new picture's dimensions
cols, rows = im.size
print('New image size: ' + str(im.size))
# Spreadsheet's cell: height = 6 and width = 1
for i in range(1, rows):
sheet.row_dimensions[i].height = 0.6
for j in range(1, cols):
column_letter = openpyxl.utils.get_column_letter(j)
sheet.column_dimensions[column_letter].width = 0.0625
# Convert image to RGB
rgb_im = im.convert('RGB')
# Formatting cell's color
for i in range(1, rows):
for j in range(1, cols):
c = rgb_im.getpixel((j, i))
rgb2hex = lambda r,g,b: f"ff{r:02x}{g:02x}{b:02x}"
c = rgb2hex(*c)
sheet.cell(row = i, column = j).value = " "
customFill = openpyxl.styles.PatternFill(start_color=c, end_color=c, fill_type='solid')
sheet.cell(row = i, column = j).fill = customFill
# Save workbook
#im.close()
#rgb_im.close()
wb.save(output)
wb.close()
# Export
image_to_excel('jangada.jpg', 'final.xlsx', 100)
问题是当我试图改变图像,像这样的。https:/www.planetware.comwpimages201909croatia-in-pictures-most-beautiful-places-to-visit-plitvice-lakes.jpg 运行代码后,我得到了错误。
翻译是这样的。
Excel能够打开teh文件 通过修复或删除不可读的内容。
从xlstyles.xml部分删除了记录。从xlstyles.xml部分(样式)删除了样式。
修复的记录。关于xlworksheetssheet1.xml单元格部分的信息。
我使用excel 2013。有谁知道如何解决这个问题?
你的 rgb2hex
没有按照您的意图工作,请删除 ff
我想这就是破坏你代码的原因。
你的func:
>>>rgb2hex = lambda r,g,b: f"ff{r:02x}{g:02x}{b:02x}"
>>>rgb2hex(120,120,120)
ff787878
输出应该是 787878
.
>>>rgb2hex = lambda r,g,b: f"{r:02x}{g:02x}{b:02x}"
>>>rgb2hex(120,120,120)
787878