Python вывод неправильно форматируется с выводом в LibreOffice от openpyxl - PullRequest
0 голосов
/ 03 февраля 2020

Попытка отформатировать вывод в документе LibreOffice cal c (ie, linux на основе Excel), но синтаксис формата python не применяется должным образом.

Используя новое форматирование строки, запустите следующее:

import openpyxl as xl
wb = xl.Workbook()
ws = wb.active

ws['A3'] = '{:>}'.format('rundate:')
ws['A4'] = '{:>}'.format('name:')
ws['A5'] = '{:>}'.format('comments:')

wb.save('test.xlsx')

Неожиданно дает это, которое выглядит как выровненное по левому краю, а не по правому:

enter image description here

Попытка выравнивания по левому краю с вероятностью выключения. Я изменил их:

import openpyxl as xl
wb = xl.Workbook()
ws = wb.active

ws['A3'] = '{:<}'.format('rundate:')
ws['A4'] = '{:<}'.format('name:')
ws['A5'] = '{:<}'.format('comments:')

wb.save('test.xlsx')

Возвращает то же самое:

enter image description here

И еще одна версия (с указанием общего числа символов) проясняет, что текст не выровнен по правому краю. Во всяком случае, текст, выровненный по правому краю, должен пролиться на левую сторону ячейки, а не на правую.

import openpyxl as xl
wb = xl.Workbook()
ws = wb.active

ws['A3'] = '{:>12}'.format('rundate:')
ws['A4'] = '{:>12}'.format('name:')
ws['A5'] = '{:>12}'.format('comments:')

wb.save('test.xlsx')

enter image description here

1 Ответ

1 голос
/ 03 февраля 2020

Из модуля выравнивание :

Параметры выравнивания для использования в стилях.

горизонтальное Значение должно быть одним из {'left', 'centerContinuous' , 'center', 'shared', 'fill', 'justify', 'right', 'general'}

Я думаю, что это будет работать:

from openpyxl.styles import Alignment
alignment=Alignment(horizontal='left')

import openpyxl as xl
wb = xl.Workbook()
ws = wb.active

for row in ws.iter_rows(min_col=1, max_col=1, min_row=3, max_row=5):
    for cell in row:
        cell.alignment = alignment

wb.save('test.xlsx')

или просто:

ws['A3'].alignment = Alignment(horizontal='left')
ws['A4'].alignment = Alignment(horizontal='left')
ws['A5'].alignment = Alignment(horizontal='left')
...