如何用Python在Excel工作表中插入文本框?已试多库未成功
解决Python向Excel插入文本框的问题
原代码存在的问题
- 未初始化
Workbook和Worksheet实例,直接调用sheet.add_shape会抛出未定义错误 - 未导入
GraphicalProperties类,代码执行会报错 - 创建的
Shape未指定为文本框类型,也未设置位置、大小和文本内容,无法生成有效文本框
使用openpyxl实现文本框插入
openpyxl需要通过指定形状类型为textbox,并配置文本内容、位置和大小来创建文本框:
from openpyxl import Workbook from openpyxl.drawing.shape import Shape, GraphicalProperties from openpyxl.drawing.text import RichText, Paragraph, CharacterProperties # 创建工作簿和工作表 wb = Workbook() ws = wb.active # 创建文本框形状,指定类型为textbox textbox = Shape(shape_type="textbox") # 设置文本框位置和大小(单位:EMU,1英寸=914400 EMU) textbox.width = 3*914400 # 3英寸宽 textbox.height = 1*914400 # 1英寸高 textbox.left = 1*914400 # 距离左侧1英寸 textbox.top = 1*914400 # 距离顶部1英寸 # 设置文本内容 rich_text = RichText() p = Paragraph() cp = CharacterProperties(size=1200) # 字体大小12pt(1pt=100 EMU) p.text = "这是用openpyxl插入的文本框" p.rPr = cp rich_text.append(p) textbox.txBody = rich_text # 添加文本框到工作表 ws.add_shape(textbox) # 保存文件 wb.save("openpyxl_textbox.xlsx")
使用xlsxwriter实现文本框插入
xlsxwriter提供了更简洁的insert_textbox方法,直接指定位置、大小和文本即可:
import xlsxwriter # 创建工作簿和工作表 wb = xlsxwriter.Workbook("xlsxwriter_textbox.xlsx") ws = wb.add_worksheet() # 插入文本框:参数依次为起始单元格、宽度、高度、文本 # 单元格位置支持A1格式或(row, col)元组 ws.insert_textbox("B2", 3, 1, "这是用xlsxwriter插入的文本框") # 可选:设置文本框样式 textbox = ws.insert_textbox("B5", 3, 1, "带样式的文本框") textbox.set_font_color("#FF0000") # 设置字体颜色 textbox.set_fill("#FFFFCC") # 设置背景填充色 # 保存文件 wb.close()
内容的提问来源于stack exchange,提问作者Berny
相关产品推荐
相关产品推荐

