最近有一个做excel表格的任务,是从一个已存在的表格里面提取数据,然后创建一个新的表格,新表格的样式需要和原表格相同。
我的方案就是从原表格里定位某个单元格,并且调用openpyxl.style库里的库
from openpyxl.styles import Border, PatternFill, Font, Side, Color
把这个单元格的属性全抓下来,代码如下:
border = sheet1['H1'].border # 获取边框样式
fill_red = sheet1['H1'].fill # 获取红色底色样式
font = sheet1['H1'].font # 获取字体样式
然后在新表格中定位单元格,并修改其样式,代码如下:
for row in sheet_out:
for cell in row:
cell.border = border
cell.font = font
cell.fill = fill_red
但是报了一个莫名其妙的错:
...
File "E:\test5.py", line 79, in output
cell.border = border
...
TypeError: unhashable type: 'StyleProxy'
最终的解决办法是调用copy库:
import copy
border = copy.copy(sheet1['H1'].border) # 获取边框样式
fill_red = copy.copy(sheet1['H1'].fill) # 获取红色底色样式
font = copy.copy(sheet1['H1'].font) # 获取字体样式