posts - 225, comments - 62, trackbacks - 0, articles - 0
   :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理
df.to_excel底层默认优先用的是xlsxwriter,sheet对象的类型是 xlsxwriter.worksheet.Worksheet,它没有column_dimensions属性。
可以通过在创建ExcelWriter的时候指定engine="openpyxl"让底层使用openpyxl,sheet对象的类型会变成openpyxl.worksheet.worksheet.Worksheet,它是有column_dimensions属性的。
网上的代码没有指定engine仍然可以工作可能是因为他们的环境没有安装xlwt只安装了openpyxl。

with pd.ExcelWriter(f"./净值列表{datetime.datetime.now().date()} ({i}).xlsx",
                    engine="openpyxl",
                    date_format="YYYY-MM-DD",
                    datetime_format="YYYY-MM-DD HH:MM:SS"
                    ) as writer:
    df.to_excel(writer)
    sheet = writer.sheets["Sheet1"]
    # 设置列宽
    sheet.column_dimensions['A'].width = 12.5
    # 设置行高
    sheet.row_dimensions[1].height = 72
    # 设置表头(第一行)自动换行
    r = sheet[1]
    for c in r:
        c.alignment = openpyxl.styles.Alignment(wrapText=True)
    # 设置表体数字格式显示4位小数
    for i, r in enumerate(sheet):
        for j, c in enumerate(r):
            if i != 0 and j != 0:
                c.number_format = "0.0000"
只有注册用户登录后才能发表评论。