Используйте openpyxl для форматирования xlsx (числовой формат, подгонка текста и сокращение текста) - PullRequest
0 голосов
/ 28 февраля 2019

Я хочу использовать openpyxl (не использовать другие библиотеки) для редактирования xlsx с помощью следующего кода:

from openpyxl import Workbook
book = Workbook()
sheet = book.active
rows = [['name', 'This is number1', 'This is number2', 'longstr'],
['a', 312318.231, -2312.2, 'aaaaaaaaaaaa\naaaaaaaaaaaa\naaaaaaaaaaaa'],
['a', 312318.231, -2312.2, 'aaaaaaaaaaaa\naaaaaaaaaaaa\naaaaaaaaaaaa']
]
for row in rows:
    sheet.append(row)
book.save('text.xlsx')

и вот результат:

enter image description here

То, что я хочу, это

  1. Отформатируйте числа в столбце 2, 3 в стиле запятой (разделитель тысяч) и уменьшите до десятичного знака.Я использовал "{:,.0f}".format() в коде, но вывод в xlsx становится строкой.

  2. Пусть ячейки соответствуют тексту для столбца 1, 2, 3

  3. Сократите тексты, чтобы они соответствовали ячейкам для столбца 4 (не для заголовка).В Excel операции: Format Cells -> Alignment -> Shrink to fit

enter image description here

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

Я новичок в использовании openpyxl, не могли бы вы помочь мне достичь своей цели?

1 Ответ

0 голосов
/ 28 февраля 2019

формат столбца

Чтобы управлять форматом отображения чисел в Excel, вы устанавливаете атрибут ячейки следующим образом:

cell.number_format = "0.0000" # 4 decimal places

ширина столбца

Установить ширину аналогично, но в качестве атрибута столбца:

sheet.column_dimensions['A'].width = 12.5

К сожалению, вам нужно рассчитать ширину вручную, и нет хорошего способа сделать это.Я нашел пример в Интернете , в котором перечислены все метрики ширины для шрифта Calibri 11 (по умолчанию в Excel).Вы можете посмотреть, как там вычисляется ширина столбца.

...