2015-02-27 3 views
1

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

Поскольку это load_workbook(), похоже, отбрасывает форматирование форматированного текста.

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

Вот до 2012 вопроса:
How do I find the formatting for a subset of text in an Excel document cell

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

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

Любые мысли были бы весьма благодарны.

Спасибо! Best

+0

Может быть довольно сложно «не редактировать содержимое» ячеек при работе на уровне файла (то есть в обход Excel полностью). Структура файлов Excel очень похожа на веб-интерфейс и не очень похожа на поток, поэтому концепция «локализованной хирургической модификации» файла Excel на самом деле не существует. Вы почти всегда должны загружать практически все данные в память, а затем переписывать все это с нуля при сохранении, независимо от того, насколько малы ваши изменения, похоже, интуитивно. Даже сам Excel делает это, но это гигантская программа и скрывает большую часть этого от пользователя. –

+0

Итак, когда дело доходит до возиться с форматированием (точнее, пытаюсь внести некоторые изменения, а НЕ испортить форматирование!), Я считаю, что проще всего позволить Excel обрабатывать все, если вы можете его размахивать. (Другими словами, если вы используете компьютер, на котором установлен Excel.) Вы можете программно управлять запущенным экземпляром Excel через Python, если по какой-то причине вы не хотите использовать VBA или VBScript или язык .NET , –

+0

Спасибо! Я понял, как много. Я пытался избежать использования пакетов, которые используют COM, чтобы я мог запускать кросс-платформу скрипта, но я думаю, что это неизбежно (если, конечно, не возникает другой ответ). –

ответ

2

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

+0

Ссылка на проблему репо. https://bitbucket.org/openpyxl/openpyxl/issues/20/richtext-request – Damon

Смежные вопросы