使用 OPENPYXL 使用行号和列号向单元格写入注释(注释)

问题描述 投票:0回答:1

我编写了代码,用于打开启用宏的 Excel 模板文件 (

.xltm
)、将 pandas 数据帧写入该文件中的特定位置,并将文件保存为常规的启用宏的工作簿 (
.xlsm
)。数据框的一些单元格是字符串,而其他单元格是字典。

import openpyxl
from openpyxl.utils.dataframe import dataframe_to_rows

wb = openpyxl.load_workbook(stemplatepath, keep_vba=True)
ws = wb['Health']
rows = dataframe_to_rows(dflower, index=False, header=False)
for r_idx, row in enumerate(rows, 1):
    for c_idx, value in enumerate(row, 1):
        if isinstance(value, dict):
            ws.cell(row=r_idx+10, column=c_idx, value=value['status'])
            if value['comment']:
                ws.cell(row=r_idx+10, column=c_idx).comment = value['comment'] # This line doesn't work
        else:
            ws.cell(row=r_idx+10, column=c_idx, value=value)
wb.template = False
wb.save(soutputpath)

文档仅显示按地址添加注释的语法:

comment = Comment("Text", "Author")
ws["A1"].comment = comment

有没有一种方法可以按行号和列号添加注释,以便我可以将其保留在 for 循环中?

python-3.x openpyxl
1个回答
0
投票

您所拥有的将起作用,但您没有正确地将注释添加到单元格中;

改变

 ws.cell(row=r_idx+10, column=c_idx).comment = value['comment'] # This line doesn't work

 ws.cell(row=r_idx+10, column=c_idx).comment = Comment(value['comment'], "<author>")

并导入评论

from openpyxl.comments import Comment

第二个字符串值应该是评论的作者。

© www.soinside.com 2019 - 2024. All rights reserved.