如何使用python-docx将复选框表单插入.docx文件?

如何使用python-docx将复选框表单插入.docx文件?,第1张

如何使用python-docx将复选框表单插入.docx文件?

经过@scanny的大量挖掘和帮助,我终于能够完成此任务。

可以

python-docx
使用以下功能将复选框插入任何段落。我将复选框插入表中的特定单元格。

def addCheckbox(para, box_id, name):  run = para.add_run()  tag = run._r  fldchar = docx.oxml.shared.OxmlElement('w:fldChar')  fldchar.set(docx.oxml.ns.qn('w:fldCharType'), 'begin')  ffdata = docx.oxml.shared.OxmlElement('w:ffData')  name = docx.oxml.shared.OxmlElement('w:name')  name.set(docx.oxml.ns.qn('w:val'), cb_name)  enabled = docx.oxml.shared.OxmlElement('w:enabled')  calconexit = docx.oxml.shared.OxmlElement('w:calcOnExit')  calconexit.set(docx.oxml.ns.qn('w:val'), '0')  checkbox = docx.oxml.shared.OxmlElement('w:checkBox')  sizeauto = docx.oxml.shared.OxmlElement('w:sizeAuto')  default = docx.oxml.shared.OxmlElement('w:default')  if checked:    default.set(docx.oxml.ns.qn('w:val'), '1')  else:    default.set(docx.oxml.ns.qn('w:val'), '0')  checkbox.append(sizeauto)  checkbox.append(default)  ffdata.append(name)  ffdata.append(enabled)  ffdata.append(calconexit)  ffdata.append(checkbox)  fldchar.append(ffdata)  tag.append(fldchar)  run2 = para.add_run()  tag2 = run2._r  start = docx.oxml.shared.OxmlElement('w:bookmarkStart')  start.set(docx.oxml.ns.qn('w:id'), str(box_id))  start.set(docx.oxml.ns.qn('w:name'), name)  tag2.append(start)  run3 = para.add_run()  tag3 = run3._r  instr = docx.oxml.OxmlElement('w:instrText')  instr.text = 'FORMCHECKBOX'  tag3.append(instr)  run4 = para.add_run()  tag4 = run4._r  fld2 = docx.oxml.shared.OxmlElement('w:fldChar')  fld2.set(docx.oxml.ns.qn('w:fldCharType'), 'end')  tag4.append(fld2)  run5 = para.add_run()  tag5 = run5._r  end = docx.oxml.shared.OxmlElement('w:bookmarkEnd')  end.set(docx.oxml.ns.qn('w:id'), str(box_id))  end.set(docx.oxml.ns.qn('w:name'), name)  tag5.append(end)  return

fldData.text
对象似乎是随机的,但是是从生成的XML中带一个带有现有复选框的Word文档中提取的。如果不设置此文本,该功能将失败。我还没有确认,但是我听说过一种情况,开发人员可以随意更改字符串,但是一旦保存,它将恢复为原始生成的值。



欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5673789.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存