繁体   English   中英

openpyxl:为一系列Excel单元格分配值或应用格式而不进行迭代

[英]openpyxl: assign value or apply format to a range of Excel cells without iteration

我想应用特定的格式或为一系列Excel单元格赋值,而不迭代每个单元格。 我目前正在使用此脚本:

from openpyxl import Workbook
from openpyxl.styles import Font
wb = Workbook()
ws = wb.active

## With iterations

# Apply style
for i, rowOfCellObjects in enumerate(ws['A1':'C4']):
    for n, cellObj in enumerate(rowOfCellObjects):
        cellObj.fill = Font(name='Times New Roman')

# Assign singular value to all cells
for i, rowOfCellObjects in enumerate(ws['A1':'C4']):
    for n, cellObj in enumerate(rowOfCellObjects):
        cellObj.value = 3

wb.save("test.xlsx")

但我正在寻找一个更短的符号,像这样:

from openpyxl import Workbook
from openpyxl.styles import Font
wb = Workbook()
ws = wb.active

## Without iterations

# Apply style
ws['A1':'C4'].fill = Font(name='Times New Roman')

# Assign singular value to all cells
ws['A1':'C4'].value = 3

wb.save("test.xlsx")

openpyxl或其他模块是否提供类似的功能?

ps:我正在使用Python 3.5

这不太准确。 OpenPyxel允许将样式应用于列和行:

根据: https//openpyxl.readthedocs.io/en/stable/styles.html

样式也可以应用于列和行,但请注意,这仅适用于文件关闭后创建的单元格(在Excel中)。 如果要将样式应用于整个行和列,则必须自己将样式应用于每个单元格。 这是文件格式的限制:

col = ws.column_dimensions['A']
col.font = Font(bold=True)
row = ws.row_dimensions[1]
row.font = Font(underline="single")

在Excel中,样式必须应用于单个单元格,因为这是文件格式的工作方式。 由于它的工作方式,openpyxl不提供所需的功能,但可以使用xlsxwriter

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM