excel 有没有办法从python中的一个单元格创建一个NamedStyle?

yhuiod9q  于 2023-02-17  发布在  Python
关注(0)|答案(1)|浏览(157)

这似乎是一个基本的问题,但我在网上找不到任何东西。
我想在python中基于excel中的一个单元格创建一个样式模板/NamedStyle,我想基本上复制一个单元格的所有格式样式并存储起来,然后根据需要使用。
示例:

A=NamedStyle(name="OFF")     #Creating a NamedStyle

稍后,就像这样:

A=NamedStyle(cell_obj.style)  #Importing the style of an existing cell into the NamedStyle

后来,

cell_obj.style=A             #Applying NamedStyle to a cell

我得到了一个"TypeError: 'Cell' object does not support item assignment" for A=NamedStyle(cell_obj.style)
我知道这个语法可能是错误的,但是什么是正确的语法呢?我在互联网上能找到的就是创建NamedStyle和个人编辑属性,然后使用它。我想基本上导入一个Excel现有单元格的样式到一个NamedStyle,这样我就可以在未来的时间点在另一个Excel中重用它。我该怎么做呢?
此致,
维韦克

niknxzdl

niknxzdl1#

你想做这样的事?
现有单元格“B2”a应用了样式、字体、边框、对齐方式、填充、日期格式。这些都被复制到名为“namedstyle”的样式中。
将原始值输入单元格“B4”并应用“namedstyle”。

from openpyxl import load_workbook
from openpyxl.styles import NamedStyle, 
from copy import copy

wb = load_workbook("foo.xlsx")
ws = wb['Sheet1']

### Select cell to copy from
style_cell = ws['B2']

### Create Named Style
namedstyle = NamedStyle(name="namedstyle")

### Copy Styles
namedstyle.font = copy(style_cell.font)
namedstyle.alignment = copy(style_cell.alignment)
namedstyle.border = copy(style_cell.border)
namedstyle.fill = copy(style_cell.fill)

namedstyle.number_format = style_cell.number_format

### Register style with the workbook:
wb.add_named_style(namedstyle)

### Add a value to cell 'B4' and apply style
ws['B4'].value = 36194
ws['B4'].style = namedstyle

wb.save("foo_out.xlsx")

该样式也可在Excel工具栏的“样式”部分中找到。

相关问题