Como escrever um quadro de dados de valores de string em um arquivo do Excel como valores numéricos formatados?
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
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
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'})