Applying borders to a cell in OpenPyxl

后端 未结 3 1374
鱼传尺愫
鱼传尺愫 2020-12-29 06:52

I am trying to use Openpyxl to apply a border to a cell, but I have failed on the most basic \"apply any kind of border to any cell anywhere\" task. I tried copying from th

相关标签:
3条回答
  • 2020-12-29 07:27

    With openpyxl version 2.2.5, this snippet works for me:

    from openpyxl.styles.borders import Border, Side
    from openpyxl import Workbook
    
    thin_border = Border(left=Side(style='thin'), 
                         right=Side(style='thin'), 
                         top=Side(style='thin'), 
                         bottom=Side(style='thin'))
    
    wb = Workbook()
    ws = wb.get_active_sheet()
    # property cell.border should be used instead of cell.style.border
    ws.cell(row=3, column=2).border = thin_border
    wb.save('border_test.xlsx')
    

    The documentation mentions other values for the style attribute :

    Value must be one of {‘double’, ‘dashed’, ‘thin’, ‘medium’, ‘mediumDashDot’, ‘dashDot’, ‘thick’, ‘mediumDashed’, ‘hair’, ‘dotted’, ‘slantDashDot’, ‘mediumDashDotDot’, ‘dashDotDot’}

    0 讨论(0)
  • 2020-12-29 07:36

    This answer works with version 2.4.8 The difference with the previous two answers is that the property for Side is border_style, not style

    from openpyxl.styles.borders import Border, Side, BORDER_THIN
    thin_border = Border(
        left=Side(border_style=BORDER_THIN, color='00000000'),
        right=Side(border_style=BORDER_THIN, color='00000000'),
        top=Side(border_style=BORDER_THIN, color='00000000'),
        bottom=Side(border_style=BORDER_THIN, color='00000000')
    )
    ws.cell(row=3, column=2).border = thin_border
    

    Working with styles: https://openpyxl.readthedocs.io/en/2.5/styles.html

    0 讨论(0)
  • 2020-12-29 07:41

    With openpyxl version 2.0.4, this snippet works for me:

    from openpyxl.styles.borders import Border, Side
    from openpyxl.styles import Style
    from openpyxl import Workbook
    
    thin_border = Border(left=Side(style='thin'), 
                         right=Side(style='thin'), 
                         top=Side(style='thin'), 
                         bottom=Side(style='thin'))
    my_style = Style(border=thin_border)
    
    wb = Workbook()
    ws = wb.get_active_sheet()
    ws.cell(row=3, column=2).style = my_style
    wb.save('border_test.xlsx')
    
    0 讨论(0)
提交回复
热议问题