Jak zapisać ramkę danych zawierającą wartości ciągów do pliku programu Excel jako sformatowane wartości liczbowe?
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
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
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'})