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?
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
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
Ş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'})