Я редактирую шаблон docx, содержащий кучу плавающих изображений и текстовых полей. Я пытаюсь редактировать эти текстовые поля с помощью python-docx или напрямую редактируя document.xml. Однако похоже, что текущая итерация python-docx позволяет редактировать только встроенные «картинки» (в данном случае текстовое поле). Конечная цель - либо отредактировать текстовое поле с помощью python-docx, либо отредактировать его, открыв и отредактировав файл document.xml (в идеале без разархивирования и последующего архивирования).
До сих пор я пытался использовать python-docx для их редактирования, но, судя по моим исследованиям, текстовое поле нельзя редактировать с помощью python-docx.
Я также попытался просто отредактировать document.xml отдельно, что мне удалось сделать, однако, когда я попытался заархивировать резервные копии каталогов и изменить расширение обратно на docx, я не смог его открыть.
import lxml.etree as ET
xmlfile = r"path\document.xml"
with open(xmlfile) as f:
tree = ET.parse(f)
root = tree.getroot()
for elem in root.getiterator():
try:
elem.text = elem.text.replace('current id in document', 'new ID in document')
except AttributeError:
pass
tree.write(r"path\documentedit.xml", xml_declaration=True, method='xml')
Это была моя первая распаковка docx без использования python. Затем используйте python для редактирования XML. Затем я бы заархивировал его без использования python, просто чтобы посмотреть, смогу ли я заставить его работать, но я не мог открыть документ.