Dmitriy Shesterkin 9 years ago
parent 107f7684df
commit f9121c9c16
  1. 6
      src/commons/xls/__init__.py
  2. 21
      src/commons/xls/get_xlwt_style_list.py
  3. 41
      src/commons/xls/useful_tools.py

@ -1,3 +1,3 @@
from commons.xls.useful_tools import *
from commons.xls.get_xlwt_style_list import *
from commons.xls.xls_to_response import *
from commons.xls.useful_tools import * # noqa
from commons.xls.get_xlwt_style_list import * # noqa
from commons.xls.xls_to_response import * # noqa

@ -5,13 +5,9 @@ def get_xlwt_style_list(rdbook):
wt_style_list = []
for rdxf in rdbook.xf_list:
wtxf = xlwt.Style.XFStyle()
#
# number format
#
wtxf.num_format_str = rdbook.format_map[rdxf.format_key].format_str
#
# font
#
wtf = wtxf.font
rdf = rdbook.font_list[rdxf.font_index]
wtf.height = rdf.height
@ -20,24 +16,22 @@ def get_xlwt_style_list(rdbook):
wtf.outline = rdf.outline
wtf.shadow = rdf.outline
wtf.colour_index = rdf.colour_index
wtf.bold = rdf.bold #### This attribute is redundant, should be driven by weight
wtf._weight = rdf.weight #### Why "private"?
# This attribute is redundant, should be driven by weight
wtf.bold = rdf.bold
# Why "private"?
wtf._weight = rdf.weight
wtf.escapement = rdf.escapement
wtf.underline = rdf.underline_type ####
wtf.underline = rdf.underline_type
# wtf.???? = rdf.underline #### redundant attribute, set on the fly when writing
wtf.family = rdf.family
wtf.charset = rdf.character_set
wtf.name = rdf.name
#
# protection
#
wtp = wtxf.protection
rdp = rdxf.protection
wtp.cell_locked = rdp.cell_locked
wtp.formula_hidden = rdp.formula_hidden
#
# border(s) (rename ????)
#
wtb = wtxf.borders
rdb = rdxf.border
wtb.left = rdb.left_line_style
@ -52,17 +46,13 @@ def get_xlwt_style_list(rdbook):
wtb.diag_colour = rdb.diag_colour_index
wtb.need_diag1 = rdb.diag_down
wtb.need_diag2 = rdb.diag_up
#
# background / pattern (rename???)
#
wtpat = wtxf.pattern
rdbg = rdxf.background
wtpat.pattern = rdbg.fill_pattern
wtpat.pattern_fore_colour = rdbg.pattern_colour_index
wtpat.pattern_back_colour = rdbg.background_colour_index
#
# alignment
#
wta = wtxf.alignment
rda = rdxf.alignment
wta.horz = rda.hor_align
@ -74,6 +64,5 @@ def get_xlwt_style_list(rdbook):
wta.shri = rda.shrink_to_fit
wta.inde = rda.indent_level
# wta.merg = ????
#
wt_style_list.append(wtxf)
return wt_style_list

@ -1,8 +1,7 @@
# -*- coding: utf-8 -*-
def copy_cells(src_sheet, dst_sheet, style_list,
row_from=0, row_to=None, dst_row_shift=0,
def copy_cells(src_sheet, dst_sheet, style_list, row_from=0, row_to=None, dst_row_shift=0,
col_from=0, col_to=None, dst_col_shift=0):
"""
Скопировать блок ячеек из диапазона строк [row_from, row_to] и колонок
@ -27,13 +26,11 @@ def copy_cells(src_sheet, dst_sheet, style_list,
height_rows(src_sheet, dst_sheet, row_from, row_to, dst_row_shift)
# объединить ячейки
merge_cells(src_sheet, dst_sheet, style_list,
row_from, row_to, dst_row_shift,
col_from, col_to, dst_col_shift)
merge_cells(src_sheet, dst_sheet, style_list, row_from,
row_to, dst_row_shift, col_from, col_to, dst_col_shift)
def height_rows(src_sheet, dst_sheet,
row_from=0, row_to=None, dst_row_shift=0):
def height_rows(src_sheet, dst_sheet, row_from=0, row_to=None, dst_row_shift=0):
"""Задать в диапазоне строк [row_from, row_to] высоту как в исходном листе.
"""
row_to = row_to or src_sheet.nrows - 1
@ -44,9 +41,8 @@ def height_rows(src_sheet, dst_sheet,
dst_sheet.row(row + dst_row_shift).height_mismatch = True
def merge_cells(src_sheet, dst_sheet, style_list,
row_from=0, row_to=None, dst_row_shift=0,
col_from=0, col_to=None, dst_col_shift=0):
def merge_cells(src_sheet, dst_sheet, style_list, row_from=0,
row_to=None, dst_row_shift=0, col_from=0, col_to=None, dst_col_shift=0):
"""
Объединить ячейки в заданном блоке нового листа, ограниченном строками
[row_from, row_to] и колонками [col_from, col_to], если в исходном листе
@ -64,20 +60,6 @@ def merge_cells(src_sheet, dst_sheet, style_list,
cell = src_sheet.cell(r1, c1)
style = style_list[cell.xf_index]
# сохранить границы "крайней" ячейки
# нафиг пока эту фичу - из-за нее повылазили какие-то границы,
# которых не было вообще
# brd_1 = style.borders
# cell_2 = src_sheet.cell(r2-1, c2-1)
# brd_2 = style_list[cell_2.xf_index].borders
# print r1,c1,r2,c2,
# print 'borders 1 (left, right, top, bottom)',
# print brd_1.left, brd_1.right, brd_1.top, brd_1.bottom,
# print 'border 2 (same)',
# print brd_2.left, brd_2.right, brd_2.top, brd_2.bottom
# brd_1.right = brd_2.right
# brd_1.right_colour = brd_2.right_colour
dst_sheet.merge(
r1 + dst_row_shift, r2 + dst_row_shift - 1,
c1 + dst_col_shift, c2 + dst_col_shift - 1,
@ -104,10 +86,7 @@ def horz_page_break(dst_sheet, row):
dst_sheet.horz_page_breaks.append((row, 0, 255))
# -------------------------------------------------------------- прочие хелперы
def clone_row(src_sheet, dst_sheet, style_list,
src_row, n_times=1, dst_row_shift=0):
def clone_row(src_sheet, dst_sheet, style_list, src_row, n_times=1, dst_row_shift=0):
"""
Размножить n_times раз строку из исходного листа, с сохранением стилей
форматирования.
@ -138,7 +117,8 @@ def merge_cells_in_row(src_sheet, dst_sheet, style_list, src_row, dst_row):
def sum_src_heights(src_sheet, row_from, row_to):
"""Суммарная высота всех строк диапазона [row_from, row_to]
"""
Суммарная высота всех строк диапазона [row_from, row_to]
исходного листа.
"""
result = 0
@ -150,7 +130,8 @@ def sum_src_heights(src_sheet, row_from, row_to):
def sum_dst_heights(dst_sheet, row_from, row_to):
"""Суммарная высота всех строк диапазона [row_from, row_to]
"""
Суммарная высота всех строк диапазона [row_from, row_to]
на новом листе.
"""
result = 0

Loading…
Cancel
Save