Python Xlsxwriter - заставляет даты соблюдать другой формат локали - PullRequest
2 голосов
/ 05 февраля 2020

С Xlsx Writer я хочу записывать даты, которые будут соответствовать формату локали, установленному в настройках региона / языка ОС. Например, формат по умолчанию, установленный ОС в Канаде, - «гггг-мм-дд», а в Германии - «дд.мм.гг». Как мне сделать даты адаптивными?

Я прочитал документацию, но все еще не могу понять это.

Это то, что я пробовал:

import xlsxwriter
from datetime import date

workbook = xlsxwriter.Workbook('sample.xlsx')
worksheet = workbook.add_worksheet()

my_date = date(2020, 1, 31)
my_format = workbook.add_format({'num_format': 'mm/dd/yyyy'})
worksheet.write(0, 0, my_date, my_format)

workbook.close()

  • В Excel установлено значение Engli sh -Canada, я ожидаю '2020-01-31', но получаю '01 -31-2020 '

  • В Excel на немецком языке я ожидаю «31,010,20», но получаю «01,30,2020».

Так что ему удается использовать правильные разделители, но остальное не так.

Заранее спасибо

1 Ответ

2 голосов
/ 06 февраля 2020

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

Если вы установите какой-либо формат стиля «мм-дд-гггг» в Excel, то вы получите этот формат в других локалях (кроме разделителя).

Таким образом, если это невозможно в Excel, это не будет возможно в XlsxWriter (и в равной степени, если это возможно в Excel, тогда это будет работать так же в XlsxWriter).

Один частичный обходной путь - использовать один встроенных числовых форматов Excel в XlsxWriter. Это числовые индексы, а не строки:

import xlsxwriter
from datetime import date

workbook = xlsxwriter.Workbook('sample.xlsx')
worksheet = workbook.add_worksheet()

my_date = date(2020, 1, 31)
my_format = workbook.add_format({'num_format': 14})
worksheet.write(0, 0, my_date, my_format)

workbook.close()

Эта дата (31 декабря 2020 года) дает 20-12-31 в канадской локали и 31.12.20 в немецкой локали. Однако не существует встроенного формата, который бы давал 4 ди git года.

См. Также Категории числовых форматов и Числовые форматы в разных локалях в документы XlsxWriter.

...