Wie schreibe ich einen Datenrahmen mit Zeichenfolgenwerten als formatierte numerische Werte in eine Excel-Datei?

Jan 05 2021

Grundsätzlich habe ich eine Liste von Zeichenfolgenwerten, die in numerische konvertiert und in ein Excel-Blatt gedruckt werden sollen. Ich kann das schon, aber ich möchte, dass diese Werte als "Excel-Zahlenwerte" gedruckt werden . Folgendes habe ich bekommen:

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

Mein Ergebnis ist:

Resultierendes Excel

Aber ich möchte, dass es als numerische Werte gedruckt wird, die durch Punkte getrennt sind, um die Vorbereitung zu erleichtern:

Was ich als Ergebnis haben möchte

(Die gewünschte Lösung kann im resultierenden Excel nicht als Zeichenfolge gedruckt werden. Es müssen numerische Werte sein, als ob wir die Option "Als Zahl formatieren (Umschalt + Strg + 1)" in libreoffice calc verwenden würden.)

(Ich verwende Python 3.8.5 und LibreOffice Calc zum Testen, aber das Ergebnis soll in Excel 2016 funktionieren.)

Ist das möglich? Vielen Dank für Ihre Hilfe und Entschuldigung für mein Englisch!

Antworten

DonLarry Jan 06 2021 at 07:11

Ich habe diese andere Frage gefunden , sie ist anders, aber die Antwort ist dieselbe, denke ich.

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

Es funktioniert mit diesem Format, aber es sieht so aus, als würde es mit dem '#.##0,00'Format nicht funktionieren

DonLarry Jan 05 2021 at 21:55

Überprüfen Sie dies https://xlsxwriter.readthedocs.io/working_with_pandas.html

Es ist möglich, andere, nicht datums- / datumszeitliche Spaltendaten mit set_column () zu formatieren.

Versuchen Sie, den Formatierungsbeispielcode folgendermaßen zu ändern:

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

dazu:

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