在openpyxl中使用`append`时如何应用单元格样式?

时间:2015-03-20 17:52:25

标签: python-2.7 openpyxl

我正在使用openpyxl创建Excel工作表。我想在插入数据时应用样式。问题是append方法获取数据列表并自动将它们插入到单元格中。我似乎无法指定要应用于此操作的字体。

我可以返回并在事后将样式应用于单个单元格,但这需要开销来查找列表中有多少数据点,以及我当前追加到哪一行。有更简单的方法吗?

此说明性代码显示了我想要做的事情:

def create_xlsx(self, header):
    self.ft_base = Font(name='Calibri', size=10)
    self.ft_bold = self.ft_base.copy(bold=True)
    if header:
        self.ws.append(header, font=ft_bold) # cannot apply style during append

1 个答案:

答案 0 :(得分:7)

ws.append()旨在轻松添加数据行。但是,它确实允许您在行中包含无场单元格,以便您可以在添加数据时应用格式。这在使用write_only=True时非常有用,但适用于普通的工作簿。

您的代码看起来像:

data = [1, 3, 4, 9, 10]


def styled_cells(data):
    for c in data:
       if c == 1:
            c = Cell(ws, column="A", row=1, value=c)
            c.font = Font(bold=True)
       yield c

ws.append(styled_cells(data))

openpyxl将更正此类单元格的坐标。