Редактирование книг с форматированным текстом в openpyxl

Мне было интересно, может ли openpyxl читать и / или писать богатый текст в Excel. Я знаю, что этот вопрос задавался один раз раньше, в 2012 году, по ссылке ниже, но я не уверен, изменилось ли это.

В его нынешнем виде load_workbook (), кажется, отбрасывает форматирование текста.

Что касается конкретной проблемы, мне нужно открыть, отредактировать и сохранить книгу, в которой в некоторых ячейках есть как надстрочный, так и обычный текст в одной ячейке. Когда я сохраняю книгу, формат первого символа ячейки применяется к остальной части ячейки.

Вот вопрос 2012 года:
Как найти форматирование для подмножества текста в ячейке документа Excel

Осмотревшись, кажется, что форматированный текст был реализован в openpyxl (на основе списка проблем в битбакете openpyxl):
https://bitbucket.org/openpyxl/openpyxl/issues?q=rich+text

Но я до сих пор не понимаю, как его использовать (правильно ли я истолковал список проблем). Если это вообще помогает, я на самом деле не редактирую содержимое этих ячеек просто для того, чтобы они не теряли форматирование при сохранении.

Приветствуются любые мысли.

Спасибо! Лучший


person fpes    schedule 27.02.2015    source источник
comment
Может быть довольно сложно не редактировать содержимое ячеек при работе на уровне файла (т. Е. Полностью обходя Excel). Структура файлов Excel очень похожа на сеть и не очень похожа на поток, поэтому концепция локализованной хирургической модификации файла Excel на самом деле не существует. Практически всегда приходится загружать практически все данные в память, а затем переписывать все с нуля при сохранении, независимо от того, насколько незначительными кажутся ваши изменения, интуитивно. Даже сам Excel делает это, но это гигантская программа, которая скрывает большую часть этого от пользователя.   -  person John Y    schedule 28.02.2015
comment
Итак, когда дело доходит до того, чтобы возиться с форматированием (или, скорее, пытаться внести некоторые изменения, НЕ возясь с форматированием!), Я считаю, что проще всего просто позволить Excel справиться со всем, если вы можете это повернуть. (Другими словами, если вы используете компьютер, на котором установлен Excel.) Вы можете программно управлять работающим экземпляром Excel через Python, если по какой-то причине вы не хотите использовать VBA, VBScript или язык .NET. .   -  person John Y    schedule 28.02.2015
comment
Спасибо! Я понял, как много. Я пытался избежать использования пакетов, использующих COM, чтобы я мог запускать кросс-платформу сценариев, но я думаю, что это неизбежно (если, конечно, не появится другой ответ).   -  person fpes    schedule 28.02.2015
comment
Используйте xlwings для удаленного управления Excel в Windows или Mac OS.   -  person Charlie Clark    schedule 01.03.2015
comment
xlwings выглядит отличной реализацией ... Я попробую. Спасибо!   -  person fpes    schedule 01.03.2015
comment
См. BoldDemo с кодом и загрузкой экрана.   -  person flywire    schedule 22.04.2018


Ответы (1)


Форматирование ниже уровня ячейки не поддерживается openpyxl. Чтобы использовать его, вам нужно будет реализовать свой собственный код при написании, поскольку openpyxl просто сохраняет все строки, которые он получает. Полная поддержка чтения / записи значительно усложнит.

person Charlie Clark    schedule 01.03.2015
comment
Ссылка на выпуск репо. bitbucket.org/openpyxl/openpyxl/issues/20/richtext-request - person Damon; 12.08.2015
comment
Можете ли вы пояснить, что вы имеете в виду, записывая новое содержимое ячейки с форматированием? Необработанный RTF работает или что-то в этом роде? - person Don Kirkby; 05.09.2019
comment
openpyxl не поддерживает RTF для ячеек, но ничто не мешает вам написать для него собственную реализацию на основе openpyxl. - person Charlie Clark; 07.09.2019
comment
@DonKirkby: у рабочего листа нет атрибута RichText () - person Vineesh TP; 13.09.2019
comment
Частично реализованная функция здесь: bitbucket.org / openpyxl / openpyxl / запросы на вытягивание / 224 / - person David Foster; 19.12.2019