add png=>bmp in excel

prod
Dmitriy Shesterkin 9 years ago
parent 71c2309e1a
commit 9d42209cf0
  1. 19
      src/docs/as_xls/render_to_xls.py

@ -5,6 +5,9 @@ import math
from io import BytesIO
import xlrd
import xlwt
import os.path
from PIL import Image
from django.conf import settings
from django.template import Template, RequestContext
@ -48,7 +51,6 @@ def render_xls_to_string(request, xls_template, dictionary=None):
# настройки
xls_settings = get_settings(src_book)
apply_page_settings(dst_sheet, xls_settings)
# import ipdb;ipdb.set_trace()
# заполнить данными
fill_xls(request, dictionary, src_sheet, dst_sheet, style_list, xls_settings)
@ -88,6 +90,19 @@ def fill_xls(request, dictionary, src_sheet, dst_sheet, style_list, xls_settings
context.update(kwargs)
return template.render(context)
def set_new_value(file):
filename, file_extension = os.path.splitext(file)
if file_extension == '.png':
if os.path.isfile(f'{filename}.bmp'):
return f'{filename}.bmp'
else:
img = Image.open(file)
background = Image.new("RGB", img.size, (255, 255, 255))
background.paste(img, mask=img.split()[3]) # 3 is the alpha channel
background.save(f'{filename}.bmp')
return f'{filename}.bmp'
def parse_cells(row_from=0, row_to=None, col_from=0, col_to=None,
dst_row_shift=0, dst_col_shift=0, **kwargs):
"""
@ -159,6 +174,8 @@ def fill_xls(request, dictionary, src_sheet, dst_sheet, style_list, xls_settings
if new_value != cell_value:
if cmd_show_bmp and new_value:
try:
new_value = set_new_value(new_value)
dst_sheet.insert_bitmap(
new_value,
row=row + dst_row_shift,

Loading…
Cancel
Save