Богатая строка с форматированием выравнивания ячеек с использованием xlsxwriter - PullRequest
0 голосов
/ 23 марта 2020

Я пишу парсер HTML, который генерирует файл XLSX из таблицы HTML. Таблица содержит цветные данные, такие как:

<td>Some <mark color="red"><b>coloured, bolded</b></mark> text</td>

Во время синтаксического анализа я генерирую массив токенов, готовых для передачи в write_rich_string или write_string, в зависимости от того, сколько строк генерируется синтаксическим анализатором HTML .

Есть довольно много случаев, когда парсер HTML генерирует массив из 2 строк и формат для записи в ячейку, например:

['string 1', 'string2', format]

Я не могу использовать write_string потому что существует более 1 строки. Но я также не могу использовать write_rich_string, потому что write_rich_string выводит формат и блокирует массив из 2 строк. Передача следующих данных в write_rich_string не вызывает никаких проблем, что выглядит странно в сравнении:

['string1', 'string2', 'string3', format]

Я что-то упустил?

1 Ответ

0 голосов
/ 25 марта 2020

Обходной путь мог бы состоять в том, чтобы присоединиться к string1 и string2, а затем передать его на write_string. Хотя это делало код излишне сложным.

Я решил использовать вместо этого 3-ю невидимую пользователем строку. Это легко достижимо благодаря пространству нулевой ширины (\u200b):

string_parts = [...]

count = len(string_parts)
if count > 2:
    wb.write_rich_string(row, col, *string_parts)
elif count == 2:
    string_parts = ['\u200b'] + string_parts
    wb.write_rich_string(row, col, *string_parts)
elif count == 1:
    wb.write_string(row, col, string_parts[0])
...