จะเขียน dataframe ของค่าสตริงไปยังไฟล์ excel เป็นค่าตัวเลขที่จัดรูปแบบได้อย่างไร
โดยทั่วไปฉันมีรายการค่าสตริงที่ตั้งใจจะแปลงเป็นตัวเลขและพิมพ์ลงในแผ่นงาน excel Im สามารถที่จะทำอยู่แล้ว แต่ฉันต้องการค่าเหล่านั้นที่จะพิมพ์เป็น "ค่าจำนวน Excel" นี่คือสิ่งที่ฉันได้รับ:
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()
ผลลัพธ์ของฉันคือ:
ผลลัพธ์ Excel
แต่ฉันต้องการให้พิมพ์เป็นค่าตัวเลขแยกจากจุดต่างๆเพื่อให้พร้อมง่ายขึ้นเช่น:
สิ่งที่ฉันต้องการเป็นผล
(โซลูชันที่ฉันต้องการไม่สามารถพิมพ์เป็นสตริงใน excel ที่เป็นผลลัพธ์ได้ต้องเป็นค่าตัวเลขเหมือนกับว่าเราใช้ตัวเลือก "Format as Number (Shift + ctrl + 1)" ใน libreoffice calc)
(ฉันใช้ Python 3.8.5 และ LibreOffice Calc ในการทดสอบ แต่ผลลัพธ์มีไว้เพื่อใช้งานใน Excel 2016)
เป็นไปได้หรือไม่? ขอบคุณสำหรับความช่วยเหลือและขออภัยเกี่ยวกับภาษาอังกฤษของฉัน!
คำตอบ
ฉันได้พบคำถามอื่นนี้มันแตกต่างกัน แต่คำตอบก็เหมือนกันที่ฉันคิด
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()
มันใช้งานได้กับรูปแบบนั้น แต่ดูเหมือนว่าจะใช้ไม่ได้กับ'#.##0,00'
รูปแบบ
ตรวจสอบสิ่งนี้ https://xlsxwriter.readthedocs.io/working_with_pandas.html
เป็นไปได้ที่จะจัดรูปแบบข้อมูลคอลัมน์อื่น ๆ ที่ไม่ใช่วันที่ / วันที่และเวลาโดยใช้ set_column ()
ลองเปลี่ยนโค้ดตัวอย่างการจัดรูปแบบจากสิ่งนี้:
format1 = workbook.add_format({'num_format': '#,##0.00'})
สำหรับสิ่งนี้:
format1 = workbook.add_format({'num_format': '#.##0,00'})