Bagaimana cara menulis kerangka data nilai string ke file excel sebagai nilai numerik yang diformat?
Pada dasarnya saya memiliki daftar nilai string yang dimaksudkan untuk diubah menjadi numerik dan dicetak ke lembar excel. Saya sudah dapat melakukannya tetapi saya ingin nilai-nilai itu dicetak sebagai "nilai nomor excel" . Inilah yang saya dapatkan:
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()
Hasil saya adalah:
Excel yang dihasilkan
Tetapi saya ingin itu dicetak sebagai nilai numerik yang dipisahkan oleh titik-titik agar lebih mudah disiapkan, seperti itu:
Apa yang ingin saya dapatkan sebagai hasilnya
(Solusi yang saya inginkan tidak dapat dicetak sebagai string di excel yang dihasilkan, itu harus berupa nilai numerik, seolah-olah kami menggunakan opsi "Format sebagai Angka (Shift + ctrl + 1)" di libreoffice calc).
(Saya menggunakan Python 3.8.5 dan LibreOffice Calc untuk pengujian tetapi hasilnya dimaksudkan untuk berfungsi di Excel 2016).
Mungkinkah itu? Terima kasih atas bantuan Anda, dan maaf atas bahasa Inggris saya!
Jawaban
Saya telah menemukan pertanyaan lain ini , ini berbeda, tetapi jawabannya sama menurut saya.
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()
Ini berfungsi dengan format itu, tetapi sepertinya itu tidak berfungsi dengan '#.##0,00'
format itu
Periksa ini https://xlsxwriter.readthedocs.io/working_with_pandas.html
Dimungkinkan untuk memformat data kolom non tanggal / tanggal waktu lainnya menggunakan set_column ()
Coba ubah kode contoh pemformatan dari ini:
format1 = workbook.add_format({'num_format': '#,##0.00'})
untuk ini:
format1 = workbook.add_format({'num_format': '#.##0,00'})