我想用Python用某种字体写多张纸,像这样:
from openpyxl.styles import colors
from openpyxl.styles import Font, Color
from openpyxl import Workbook
import openpyxl as op
from openpyxl.styles import PatternFill, Border, Side, Alignment, Protection, Font
def style_range_multiple_entries(file, cells_description, font):
book = op.load_workbook(file)
for k, description in enumerate(cells_description):
for t, list_item in enumerate(description[k]):
ws = book.worksheets[description[1]]
cell = ws.cell(description[2])
cell.value = description[0]
cell.font = font
book.save("styled.xlsx")
names = [[['apple', 'banana', 'strawberry'], [0,0,0],['B2','B20',''B25]], (...) ]
font1 = Font(name='Calibri', size=16, bold=True)
style_range_multiple_entries('styled.xlsx',names, font1)
但是循环有问题。
我想在一张纸上在多个地方书写多个单元格,但是要使用相同的字体。像这样:
Sheet 1:
Cell'B2' = apple
Cell 'B20' = banana
Cell 'B25' = strawberry
您知道我的代码有什么问题吗?
提前谢谢!
P.S。
我构建了一个适用于我的代码,如下所示:
def style_range(file, cells_description, font):
book = op.load_workbook(file)
for k, description in enumerate(cells_description):
ws = book.worksheets[description[2]]
cell = ws.cell(description[1])
cell.value = description[0]
cell.font = font
book.save("styled.xlsx")
但是我需要为列表指定类似以下内容:
list = [['apple','B2',0], ['banana','B20',0], ['strawberry','B25',0], (...) ]
,而我想针对像我在“名称”上方定义的列表进行操作。
答案 0 :(得分:1)
*问题**:我想针对像我在“名称”上方定义的列表进行操作
您必须从names
构建一个 Matrix 。
注意:与其立即构建
Matrix
,不如立即构建它!
数据== list
中list
的{{1}}
list
获取矩阵
的尺寸names = [[['apple', 'banana', 'strawberry', 'raspberry'],
[0, 0, 0, 0],
['B2', 'B20', 'B25', 'B30']
]]
从x_range = len(names[0])
y_range = len(names[0][0])
names
替代:全部一行
names2 = [] for y in range(y_range): names2.append([]) for x in range(x_range): names2[y].append(names[0][x][y])
输出:
names2 = [[names[0][x][y] for x in range(x_range)] for y in range(y_range)]
在print("names2:{}".format(names2))
names2:[['apple', 0, 'B2'], ['banana', 0, 'B20'], ['strawberry', 0, 'B25'], ['raspberry', 0, 'B30']]
的{{1}}中读取list
,并建立一组项目:
注意:没有理由在循环中反复使用
list
。
一次获取,并将其传递给您的参数,例如list
ws = book.worksheets[...
输出:
style_one_cell(ws, names2, font)
经过Python:3.5.3
的测试