Файл Excel, сохраненный с текстом переноса, открывается без переноса в Libreoffice и soffice - PullRequest
0 голосов
/ 05 декабря 2018

Я установил текст переноса для ячейки и автоматической высоты в Microsoft Office 2007 с новым форматом xlsx (он работает так же для старого xls).

Когда я сохраняю файл и открываю его с помощью Libreoffice, текст переноса не работает (он показывает ячейку в одной строке, в то время как текст внутри может быть обернут - но я его не вижу).Затем я захожу в меню File -> Text -> и вижу здесь Wrap text selected.Я отменяю выбор, и тогда высота столбца автоматически изменяется на высоту, которая является высотой ячейки с обернутым текстом, но текст находится в одной строке.Затем я иду в File -> Text -> Wrap text снова и выбираю его, и, наконец, все выглядит нормально.

Проблема в том, что мне нужно, чтобы высота столбца обернутого текста как-то распознавалась Libreoffice, чтобы все работало сразу после открытия файла xlsx, без каких-либо изменений в нем.

Итак, есть способ установить высоту строки из офиса Microsoft таким образом, чтобы это распознавалось Libreoffice.Для создания файла Microsoft Excel я использую template + openpyxl.Я установил текст переноса в python поверх шаблона xlsx (используя openpyxl) и в шаблоне ранее.

Но я думаю, что это не является специфичным для openpyxl, потому что использование только Microsoft Office, сохранение файла xlsx и открытие с помощью Libreoffice показывают ячейку неправильно.Использование всей процедуры 1.Microsoft xlsx 2.python openpyxl 3. сохранение файла приводит к нормальной работе файла Microsoft с высотой строки и наличию одной строковой ячейки внутри Libreoffice для переноса текста.Так что я не знаю, как это решить.Может быть решение с использованием openpyxl или с использованием только Microsoft Office, но мне нужно иметь файл, чтобы открыть в libre Office с этим работающим упакованным текстом (высота строки), потому что после этого я посылаю файл программно в soffice, чтобы экспортировать его как pdf

subprocess.call(['soffice', '--headless', '--convert-to', 'pdf', path_xlsx, '--outdir', directory_xlsx])

и, следовательно, у меня нет возможности открыть файл и изменить его вручную. Изменение решения для экспорта в pdf недоступно

==============

Перед редактированием параметра переноса в Libreoffice строкавыглядит так на листе (этот код извлекается из архива xlsx из файла листа xl / worksheets / sheet1.xml):

<row r="4" spans="1:13">

после редактирования выглядит так:

<row r="4" customFormat="false" ht="41.95" hidden="false" customHeight="false" outlineLevel="0" collapsed="false">

Так может быть, если есть способ добавить collapsed = "false", customHeight = "false" и customFormat = "false" через openpyxl, это может решить проблему.

Редактировать 1: Я нашел их в модуле openpyxl.worksheet.dimensions.Но они не могут быть установлены.

1 Ответ

0 голосов
/ 08 декабря 2018

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

...