Como escrever um quadro de dados de valores de string em um arquivo do Excel como valores numéricos formatados?

Jan 05 2021

Basicamente, eu tenho uma lista de valores de string que devem ser convertidos em numéricos e impressos em uma planilha do Excel. Já consigo fazer isso, mas quero que esses valores sejam impressos como "valores numéricos do excel" . Aqui está o que eu tenho:

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()

Meu resultado é:

Excel Resultante

Mas quero que seja impresso como valores numéricos separados por pontos para facilitar a preparação, assim:

O que eu quero ter como resultado

(A solução que desejo não pode ser impressa como strings no excel resultante, precisa ser valores numéricos, como se estivéssemos usando a opção "Formatar como número (Shift + ctrl + 1)" no libreoffice calc).

(Estou usando Python 3.8.5 e LibreOffice Calc para teste, mas o resultado foi projetado para funcionar no Excel 2016).

Isso é possível? Obrigado pela ajuda e desculpe pelo meu inglês!

Respostas

DonLarry Jan 06 2021 at 07:11

Eu encontrei essa outra pergunta , é diferente, mas a resposta é a mesma eu acho.

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()

Funciona com esse formato, mas parece que não funciona com o '#.##0,00'formato

DonLarry Jan 05 2021 at 21:55

Verifique isto https://xlsxwriter.readthedocs.io/working_with_pandas.html

É possível formatar qualquer outro dado de coluna que não seja data / data e hora usando set_column ()

Tente alterar o código de exemplo de formatação deste:

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

para isso:

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