我编写了代码,用于打开启用宏的 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 循环中?
您所拥有的将起作用,但您没有正确地将注释添加到单元格中;
改变
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
第二个字符串值应该是评论的作者。