首页 文章

将Python Dataframe编写为具有特定格式的Word / Excel文档

提问于
浏览
1

嗨,我对python比较陌生,希望你们中的任何人都可以提供关于模板问题的建议 .

我设法解析了一个excel文件,从数据中创建了一个数据帧(使用xl.parse,.loc,str.contains,str.split,sort_index等方法)并将其输出到另一个excel文件中,如下所示:Excel doc with dataframe

我坚持格式化 - 添加边框,粗体化某些字符串行(不一定在两个不同输出文件之间的相同位置),突出显示某些具有颜色的单元格等 .

我有一个模板,我必须遵循,像这样(word doc):Format to replicate (word doc)

我正在考虑两种方式:

1)从头开始通过python复制格式(作为excel或word doc)

2)使用模板将输出excel文件中的原始数据写入word doc

如果有人可以告诉我哪种方式更有效,以及我可以研究哪些库,方法/功能来完成工作,那就太棒了 .

谢谢!

2 回答

  • 1

    有一些很好的方法可以做到这一点 . 我通常采用以下两种方法之一:

    1)XLSX writer:此软件包支持更改Excel文件的格式 . 因此,我的工作流程是使用Python中的Pandas导出到Excel,然后在Excel文件中的数据后,我将使用XLSX操作格式 . 从this demo可以看到,Pandas和XLSX Writer可以很好地协同工作 .

    2)对于某些工作流程,我发现我想在Excel中执行的格式化数量/类型与XLSX Writer不合理 . 在这些情况下,最好的办法是将您的数据放在非Excel的内容中,然后将Excel链接到它 . 一种简单的方法是将数据转储到CSV,然后将格式良好的Excel文件链接到CSV . 您还可以使用Pandas将数据推送到数据库,然后让Excel文件从数据库中提取数据 .

  • 1

    我建议使用xlsxwriter . 您可以使用以下代码添加边框:

    import xlsxwriter
    
    # left
    begcol = 2 # skip first col
    endcol = ws.UsedRange.Columns.Count
    begrow = 2 # skip first row
    endrow = ws.UsedRange.Rows.Count
    
    ws.Range(ws.Cells(begrow, begcol), 
             ws.Cells(endrow, endcol)).Borders(7).LineStyle = 1 # continuous
    ws.Range(ws.Cells(begrow, begcol), 
             ws.Cells(endrow, endcol)).Borders(7).Weight = 2 # thin
    

    你可以这样加粗一行:

    # bold last row
    ws.Range(ws.Cells(endrow, begcol),
             ws.Cells(endrow, endcol)).Font.Bold = True
    

    您可以像这样设置单元格的背景颜色:

    format = workbook.add_format()
    
    format.set_pattern(1)  # This is optional when using a solid fill.
    format.set_bg_color('green')
    
    worksheet.write('A1', 'Ray', format)
    

    要写入Word文档,您可以使用docx以及如何执行此操作的示例:http://pbpython.com/python-word-template.html

相关问题