cqwcns 发表于 2021-1-18 22:51

大openpyxl竟然没有整列格式化的函数?

pandas数据通过openpyxl输出xlsx,想对某列进行百分比格式化,百度搜了半天,又查了官方文档,都没找到整理格式化的函数。
百度的方法都是for循环,逐个单元格格式,这么不优雅?

print("[操作] 输出EXCEL文件")
writer = pd.ExcelWriter(xlsx_notification, engine='openpyxl')
writer.book = bookResult
df_personnel.to_excel(writer, sheet_name='代维系统人员', index=False)
df_sign_in.to_excel(writer, sheet_name='签到系统记录', index=False)
df_sign_in_drop_duplicates.to_excel(writer, sheet_name='签到去重记录', index=False)

# 签到率列(U列)百分比格式化
column_attendance_rate = writer.book['代维系统人员']['U']
for cell in column_attendance_rate:
    cell.number_format = '0.00%'

writer.save()
writer.close()


事实上我也尝试过这个方法,但发现同网友的问题一样,有数据的单元格无法正常应用格式化,空单元格则可以,脑阔疼。
writer.book['代维系统人员'].column_dimensions['U'].number_format = '0.00%'

cqwcns 发表于 2021-1-18 22:55

另外,选择列的那一句column_attendance_rate = writer.book['代维系统人员']['U'],我希望类似pandas那样通过直接选择字段名,而不是['U']。
但好像openpyxl也不行,脑阔疼 Plus

fanvalen 发表于 2021-1-18 22:59

cqwcns 发表于 2021-1-18 22:55
另外,选择列的那一句column_attendance_rate = writer.book['代维系统人员']['U'],我希望类似pandas那样 ...

那就先写到pd呗,最后导出csv

Richex 发表于 2021-1-18 23:00

有没有类似范围选择的,比如 U1:U100
页: [1]
查看完整版本: 大openpyxl竟然没有整列格式化的函数?