def _to_html(row_col_dict, **kwargs):
'''
Args:
row_col_dict: dict with (0, 0, 0, 0) : (Value, Style)
'''
def wrap_tr(offsets):
s = []
nesting_level = row_col_dict[offsets[0]].nesting_level
for offset in offsets:
row_span = offset.end_row - offset.start_row + 1
col_span = offset.end_col - offset.start_col + 1
value = row_col_dict[offset].value
style = row_col_dict[offset].style_wrapper.user_style
style = HTMLWriter.style_to_str(style)
td_attr = dict(
rowspan=row_span,
colspan=col_span, style=style)
if nesting_level > row_col_dict[offset].nesting_level:
# we have encountered a nested table
inner_html = HTMLWriter._to_html(value)
else:
inner_html = value
td = HTMLWriter._wrap_table_element('td', td_attr, inner_html)
s.extend(td)
tr = HTMLWriter._wrap_table_element('tr', {}, ''.join(s))
return tr
trs = []
for _, offsets in groupby(sorted(row_col_dict), key=lambda x: (x[0])):
trs.append(wrap_tr(list(offsets)))
table_attrs = kwargs or dict()
return HTMLWriter._wrap_table_element(
'table',
table_attrs,
''.join(trs))
评论列表
文章目录