xlsxwriter创建不可读的文件(python)

问题描述 投票:1回答:1

因此,我创建了一个程序,将一张图片复制到excel文档中,并将文档中的单元格与像素的颜色相同。下面是我的代码。

from PIL import Image
import xlsxwriter

image = xlsxwriter.Workbook('Image.xlsx')

image_sheet = image.add_worksheet()

with Image.open("11111.jpg") as px:
    cookie = px.load()
cookie2 = Image.open("11111.jpg")
image_pixels = 0
image_pixels_2 = 0
cookie_height = cookie2.height
cookie_width = cookie2.width
image_sheet.set_column(0, cookie_width, 2.14)

while image_pixels <= cookie_height - 1:
     print(image_pixels)
     while image_pixels_2 <= cookie_width - 1:
          rgb = '#%02x%02x%02x' % cookie[image_pixels_2, image_pixels]
          cell_format = image.add_format()
          cell_format.set_shrink()
          cell_format.set_bg_color(rgb)
          image_sheet.write(image_pixels, image_pixels_2, ' ', cell_format)
          image_pixels_2 += 1

     image_pixels += 1
     if image_pixels_2 >= cookie_width:
          image_pixels_2 = 0

image.close()

它产生了文件,但是,当我打开excel文件时,它说它是不可读的,并删除了所有的格式化。我不知道为什么会这样。该文件有时是可读的,但其他时候它不是。

python python-3.x excel-2010 xlsxwriter
1个回答
1
投票

Excel有 一个文件中唯一的格式限制为64,000个。. XlsxWriter可以删除替换重复的格式,但您的程序可能超过了64k的格式限制。

你可以通过改变你的程序来检查,比如打印出使用的唯一格式的数量。

unique = {}
while image_pixels <= cookie_height - 1:
     print(image_pixels)
     while image_pixels_2 <= cookie_width - 1:
          rgb = '#%02x%02x%02x' % cookie[image_pixels_2, image_pixels]
          unique[rgb] = 1
          cell_format = image.add_format()
          cell_format.set_shrink()
          cell_format.set_bg_color(rgb)
          image_sheet.write(image_pixels, image_pixels_2, ' ', cell_format)
          image_pixels_2 += 1

     image_pixels += 1
     if image_pixels_2 >= cookie_width:
          image_pixels_2 = 0

image.close()
print('Unique fomats = ', len(unique))

© www.soinside.com 2019 - 2024. All rights reserved.