Biçimlendirilmiş sayısal değerler olarak bir excel dosyasına dize değerlerinden oluşan bir veri çerçevesi nasıl yazılır?

Jan 05 2021

Temel olarak, sayısal olarak dönüştürülmesi ve bir excel sayfasına yazdırılması gereken dize değerlerinin bir listesine sahibim. Bunu zaten yapabiliyorum ama bu değerlerin "excel sayı değerleri" olarak yazdırılmasını istiyorum . İşte sahip olduğum şey:

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

Benim sonucum:

Sonuç Excel

Ancak, hazır olmasını kolaylaştırmak için noktalarla ayrılmış sayısal değerler olarak yazdırılmasını istiyorum, şöyle:

Sonuç olarak sahip olmak istediğim şey

(İstediğim çözüm, sonuçta ortaya çıkan excel'de dizeler olarak yazdırılamaz, sanki libreoffice calc'de "Sayı Olarak Biçimlendir (Shift + ctrl + 1)" seçeneğini kullanıyormuşuz gibi sayısal değerler olması gerekir).

(Test için Python 3.8.5 ve LibreOffice Calc kullanıyorum, ancak sonucun Excel 2016'da çalışması amaçlanmıştır).

Bu mümkün mü? Yardımınız için teşekkürler ve ingilizcem için özür dilerim!

Yanıtlar

DonLarry Jan 06 2021 at 07:11

Bu diğer soruyu buldum , farklı ama yanıtı aynı sanırım.

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

O formatı ile çalışır, ancak çalışmaz gibi görünüyor '#.##0,00'biçimi

DonLarry Jan 05 2021 at 21:55

Şunu bir kontrol et https://xlsxwriter.readthedocs.io/working_with_pandas.html

Set_column () kullanarak diğer tarih / tarih / saat olmayan sütun verilerini biçimlendirmek mümkündür.

Biçimlendirme örnek kodunu buradan değiştirmeyi deneyin:

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

buna:

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