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 the Openpyxl documentation (http://pythonhosted.org/openpyxl/styles.html#introduction) default style and modifying, but that gives me
TypeError:__init__() got an unexpected keyword argument 'superscript'
I tried copying straight out of another example here (Apply borders to all cells in a range with openpyxl), but that gives me
AttributeError: type object 'Border' has no attribute 'BORDER_THIN'
(even after I fix the typos and insufficient imports errors).
Does anyone know how to apply borders using Python 3.3 and OpenPyxl 2.0.4? All I'm looking for is a snippet of code that, if I copy-paste it into a blank script, will put a border around any cell in a workbook.
Openpyxl write to a cell There are two basic ways to write to a cell: using a key of a worksheet such as A1 or D3, or using a row and column notation with the cell method. In the example, we write two values to two cells. Here, we assing a numerical value to the A1 cell.
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’}
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')
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With