【问题标题】:Add formats to dataframe and insert in excel using python?使用python将格式添加到数据框并插入到excel中?
【发布时间】:2020-11-03 12:56:29
【问题描述】:

我必须将数据库插入到带有边框的 excel 中,并且数据框中的所有值都应该居中我尝试对单元格进行格式化但不起作用

df1.to_excel(writer,index=False,header=True,startrow=12,sheet_name='Sheet1')
    writer.close()
    writer=pd.ExcelWriter(s, engine="xlsxwriter")
    writer.book = load_workbook(s)
    workbooks= writer.book
    worksheet = workbooks['Sheet1']
    f1= workbooks.add_format()
    worksheet.conditional_format(12,0,len(df1)+1,7,{'format':f1})

你能帮我解决这个问题吗

【问题讨论】:

    标签: python pandas xlsxwriter openxlsx


    【解决方案1】:

    我不会撒谎:我现在是第一次这样做,所以这可能不是一个很好的解决方案。我正在使用openpyxl,因为它对我来说似乎比XlsxWriter 更灵活。我希望你也可以使用它。

    我的假设是变量file_name 包含一个有效的文件名。

    首先你的 Pandas 步骤:

    with pd.ExcelWriter(file_name, engine='xlsxwriter') as writer:
        df1.to_excel(writer, index=False, header=True, startrow=12, sheet_name='Sheet1')
    

    然后从openpyxl进行必要的导入:

    from openpyxl import load_workbook
    from openpyxl.styles import NamedStyle, Alignment, Border, Side
    

    加载工作簿并选择工作表:

    wb = load_workbook(file_name)
    ws = wb['Sheet1']
    

    定义所需的样式:

    centered_with_frame = NamedStyle('centered_with_frame')
    centered_with_frame.alignment = Alignment(horizontal='center')
    bd = Side(style='thin')
    centered_with_frame.border = Border(left=bd, top=bd, right=bd, bottom=bd)
    

    选择相关单元格:

    cells = ws[ws.cell(row=12+1, column=1).coordinate:
               ws.cell(row=12+1+df1.shape[0], column=df1.shape[1]).coordinate]
    

    将定义的样式应用于选定的单元格:

    for row in cells:
        for cell in row:
            cell.style = centered_with_frame
    

    最后保存工作簿:

    wb.save(file_name)
    

    正如我所说:这可能不是最佳选择。

    【讨论】:

    • 感谢您的回复,但我是通过将格式直接应用于数据框来做到这一点的,因为 add_format() [属性错误]
    猜你喜欢
    • 2017-08-05
    • 1970-01-01
    • 2020-11-23
    • 2023-03-18
    • 1970-01-01
    • 2022-01-25
    • 2019-10-23
    • 1970-01-01
    相关资源
    最近更新 更多