gpt4 book ai didi

xml - 编辑文档 Python-docx 标题中的内容

转载 作者:行者123 更新时间:2023-12-04 00:05:55 32 4
gpt4 key购买 nike

我正在尝试查找和替换文档的 标题中的文本框 中的文本。但搜索了一段时间后,似乎无法通过 python-docx 访问标题或“ float ”文本框中的内容(我阅读了 issue here )

所以,这意味着我们必须直接在文档的xml格式上进行查找和替换。你知道怎么做吗?

最佳答案

我找到了解决这个问题的方法。例如,我有一个 template.docx文件,我想如上所述更改 Header 中的文本框 中的文本。下面的流程步骤,我解决了我的问题:

  1. 重命名文件 template.docxtemplate.zip
  2. 解压template.ziptemplate文件夹
  3. header<number>.xml 中查找并替换我想更改的文本/template/word/ 中的文件文件夹。
  4. 压缩 /template 中的所有文件文件夹回到template.zip
  5. 重命名 template.zip返回template.docx

我用Python来操作这些

import os
import shutil
import zipfile

WORKING_DIR = os.getcwd()
TEMP_DOCX = os.path.join(WORKING_DIR, "template.docx")
TEMP_ZIP = os.path.join(WORKING_DIR, "template.zip")
TEMP_FOLDER = os.path.join(WORKING_DIR, "template")

# remove old zip file or folder template
if os.path.exists(TEMP_ZIP):
os.remove(TEMP_ZIP)
if os.path.exists(TEMP_FOLDER):
shutil.rmtree(TEMP_FOLDER)

# reformat template.docx's extension
os.rename(TEMP_DOCX, TEMP_ZIP)

# unzip file zip to specific folder
with zipfile.ZipFile(TEMP_ZIP, 'r') as z:
z.extractall(TEMP_FOLDER)

# change header xml file
header_xml = os.path.join(TEMP_FOLDER, "word", "header1.xml")
xmlstring = open(header_xml, 'r', encoding='utf-8').read()
xmlstring = xmlstring.replace("#TXTB1", "Hello World!")
with open(header_xml, "wb") as f:
f.write(xmlstring.encode("UTF-8"))

# zip temp folder to zip file
os.remove(TEMP_ZIP)
shutil.make_archive(TEMP_ZIP.replace(".zip", ""), 'zip', TEMP_FOLDER)

# rename zip file to docx
os.rename(TEMP_ZIP, TEMP_DOCX)
shutil.rmtree(TEMP_FOLDER)

关于xml - 编辑文档 Python-docx 标题中的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45228136/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com