Как записать фрейм данных строковых значений в файл Excel в виде форматированных числовых значений?

Jan 05 2021

В основном у меня есть список строковых значений, которые предназначены для преобразования в числовые и печати на листе Excel. Я уже могу это сделать, но я хочу, чтобы эти значения были напечатаны как «числовые значения Excel» . Вот что у меня получилось:

writer = pd.ExcelWriter('test.xlsx', engine='openpyxl')

listOfValues = ['3913375,45','126179,15','22324,72','26335,28','3699901,34']

df_values = pd.DataFrame({'TOTAL': listOfValues}).apply(pd.to_numeric)

df_values.to_excel(writer, sheet_name='test')

writer.save()

Мой результат:

Результирующий Excel

Но я хочу, чтобы он был напечатан как числовые значения, разделенные точками, чтобы облегчить подготовку, например:

Что я хочу получить в результате

(Решение, которое я хочу, не может быть напечатано в виде строк в результирующем Excel, оно должно быть числовым, как если бы мы использовали опцию «Форматировать как число (Shift + ctrl + 1)» в libreoffice calc).

(Я использую Python 3.8.5 и LibreOffice Calc для тестирования, но результат предназначен для работы в Excel 2016).

Это возможно? Спасибо за вашу помощь и извините за мой английский!

Ответы

DonLarry Jan 06 2021 at 07:11

Я нашел этот другой вопрос , он другой, но ответ, я думаю, тот же.

from openpyxl import load_workbook

wb = load_workbook('a.xlsx')
ws = wb[wb.sheetnames[0]]
cell11 = ws.cell(1, 1)
cell11.number_format = '#,##0.00'
wb.save('b.xlsx')
wb.close()

Он работает с этим форматом, но похоже, что он не работает с '#.##0,00'форматом

DonLarry Jan 05 2021 at 21:55

Проверь это https://xlsxwriter.readthedocs.io/working_with_pandas.html

Можно отформатировать любые другие данные столбца без даты / даты и времени с помощью set_column ()

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

format1 = workbook.add_format({'num_format': '#,##0.00'})

к этому:

format1 = workbook.add_format({'num_format': '#.##0,00'})