excel - 单个 Excel 工作表中的多个 NamedStyle - Python openpyxl
问题描述
我正在尝试为 Excel 工作表中的多个单元格设置样式。工作表中有多个表格。表格标题有粗体和正常边框,而表格数据只有顺序。
我已经定义了 2 NamedStyle 并附加到工作簿。但是当单元格的样式我得到低于错误时。
book.add_named_style(tableHeaderStyle)
File "C:\Users\bsingh\AppData\Local\Programs\Python\Python36-32\lib\site-packages\openpyxl\workbook\workbook.py", line 303, in add_named_style
self._named_styles.append(style)
File "C:\Users\bsingh\AppData\Local\Programs\Python\Python36-32\lib\site-packages\openpyxl\styles\named_styles.py", line 194, in append
raise ValueError("""Style {0} exists already""".format(style.name))
ValueError: Style TableHeaderStyle exists already
代码:
from openpyxl.styles import Border, Side, Color, PatternFill, Font, Alignment, NamedStyle
my_border = Border(left=Side(border_style='thin', color='000000'),
right=Side(border_style='thin', color='000000'),
top=Side(border_style='thin', color='000000'),
bottom=Side(border_style='thin', color='000000'))
normalBorderStyle = NamedStyle(name="NormalBorderStyle",
alignment=Alignment(horizontal='center', vertical='center', wrap_text=True), border=my_border)
tableHeaderStyle = NamedStyle(name="TableHeaderStyle", alignment=Alignment(horizontal='center', vertical='center'), border=my_border, \
font=Font(bold=True), \
fill=PatternFill(patternType='solid', fill_type='solid', fgColor=Color('C4D79B')))
#This function is called for a table in worksheet "ws" with the cell range as the start and end column of table "B3:G7".
def set_border(ws, cell_range):
flag = 0
for row in ws.iter_rows(cell_range):
for cell in row:
cell.style = "NormalBorderStyle"
if flag ==0 :
cell.border = "TableHeaderStyle"
flag = 1
book = load_workbook(xlsfile)
book.add_named_style(tableHeaderStyle)
book.add_named_style(normalBorderStyle)
ws_active = book.get_sheet_by_name("Summary")
set_border(ws_active, "B3:G7")
解决方案
它看起来很像您正在加载的书中已经存在的样式,因为异常与您的功能无关。您可能想使用book.named_styles
.
推荐阅读
- python - matplotlib 是如何工作的?
- python - 计算最小公倍数的内置模块
- node.js - 错误:网络错误:使用 axios.put 方法多次请求服务器。但随后捕获错误
- ruby-on-rails - 当我使用 .includes 时,Rails 测试失败 500
- php - 替换字符串中的多个十六进制颜色
- python - 多框笔记本
- c - 如何让套接字服务器只接受一次
- c# - 如何缩小 UWP App (C#) 中的像素值?
- unity3d - 在 Unity 中为 VideoPlayer 切换视频剪辑会大大降低 FPS
- podio - Podio Webform 重定向未触发分析目标