在OpenPyxl中将边框应用于单元格

时间:2014-07-23 17:36:10

标签: python openpyxl

我正在尝试使用Openpyxl将边框应用于单元格,但我在最基本的“将任何类型的边框应用于任何位置的任何单元格”任务上都失败了。我尝试从Openpyxl文档(http://pythonhosted.org/openpyxl/styles.html#introduction)默认样式进行复制并修改,但这给了我

  

“TypeError: init ()得到了一个意外的关键字参数'superscript'”

我尝试直接从另一个例子中复制(Apply borders to all cells in a range with openpyxl),但这给了我

  

AttributeError:类型对象'Border'没有属性'BORDER_THIN'

(即使在我修正拼写错误和导入错误不足之后)。

有没有人知道如何使用Python 3.3和OpenPyxl 2.0.4应用边框?我正在寻找的是一段代码,如果我将其复制粘贴到空白脚本中,将在工作簿中的任何单元格周围放置边框。

4 个答案:

答案 0 :(得分:23)

使用openpyxl 2.2.5版本,此代码段适用于我:

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')

答案 1 :(得分:6)

使用openpyxl版本2.0.4,此代码段适用于我:

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')

答案 2 :(得分:3)

此答案适用于版本 2.4.8 。与前两个答案的区别在于Side的属性是 border_style,而不是style

.then

使用样式: https://openpyxl.readthedocs.io/en/2.5/styles.html

答案 3 :(得分:0)

如果我只想把底线放在一个单元格中,那么只提到一个单元格的底部,就像下面的代码,

from openpyxl.styles.borders import Border, Side

wb = Workbook()
ws = wb.active

thin_border = Border(bottom=Side(style='thin'))
ws.cell(row=3, column=2).border = thin_border

wb.save("test.xlsx")