Jak zapisać ramkę danych zawierającą wartości ciągów do pliku programu Excel jako sformatowane wartości liczbowe?

Jan 05 2021

Zasadniczo mam listę wartości ciągów, które mają zostać przekonwertowane na numeryczne i wydrukowane w arkuszu programu Excel. Jestem w stanie to zrobić już, ale chcę, aby te wartości były drukowane jako „wartości liczbowe programu Excel” . Oto co mam:

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

Mój wynik to:

Wynikowy Excel

Ale chcę, aby był drukowany jako wartości liczbowe oddzielone kropkami, aby było łatwiejsze do przygotowania, w ten sposób:

Co chcę w rezultacie mieć

(Rozwiązanie, którego szukam, nie może być wydrukowane jako ciągi w wynikowym programie Excel, musi to być wartości liczbowe, tak jakbyśmy używali opcji „Formatuj jako liczbę (Shift + ctrl + 1)” w libreoffice calc).

(Do testowania używam Pythona 3.8.5 i LibreOffice Calc, ale wynik ma działać w programie Excel 2016).

Czy to możliwe? Dziękuję za pomoc i przepraszam za mój angielski!

Odpowiedzi

DonLarry Jan 06 2021 at 07:11

Znalazłem to drugie pytanie , jest inne, ale myślę, że odpowiedź jest taka sama.

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

Działa z tym formatem, ale wygląda na to, że nie działa z tym '#.##0,00'formatem

DonLarry Jan 05 2021 at 21:55

Sprawdź to https://xlsxwriter.readthedocs.io/working_with_pandas.html

Możliwe jest sformatowanie dowolnych innych danych kolumny bez daty / daty i godziny za pomocą metody set_column ()

Spróbuj zmienić przykładowy kod formatowania z tego:

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

do tego:

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