|
|
|
|
@ -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, |
|
|
|
|
|