zoukankan      html  css  js  c++  java
  • python3 获取docx书签

    前提 手上有个活,要获取到docx格式的word文档,通过书签定位然后去更改书签处的图片或者问题。例如:签名章的应用。

    因为一些原因,需要用到python去处理

    下载python

    版本如下图,下载的最新python版本。过程略

    官网下载地址https://www.python.org/downloads/windows/ 版本看自己选择

    image-20210812170105720

    部署环境

    使用VScode 集成python环境,之前做前端开发的时候下载的。就懒的处理.

    过程略 参考链接VSCode集成python环境

    处理书签

    关于docx

    感叹微软的强大,今天才知道 docx是一个压缩包:举例demo.docx文件

    1. 修改文件demo.docx 为 demo.zip 直接改后缀名即可

    2. 解压demo.zip 可以得到下图的内容

      image-20210812172041450

      其中 word文件夹里边是存放的具体文字内容,打开里边的document.xml文件(建议用浏览器打开查看,层次更清晰一些) 可以对比出来docx文档中的内容:如下图

      image-20210812171211228

    python解析代码

    获取书签

    代码处尽量能注释的都给注释了

    下载的组件

    pip install python-docx 处理document文档的

    from zipfile import ZipFile  
    from xml.dom.minidom import parse  #官网获取xml类
    
    from docx import Document  # 需要下载  具体 python install python-docx
    from docx import shared
    
    document=ZipFile(r'd://demo2.docx')
    xml=document.read("word/document.xml")
    
    booklist=['编制','校对','审核','标审','会签','批准']
    
    with ZipFile('d://demo2.docx') as zin:
        with zin.open('word/document.xml') as dxml:
            domTree = parse(dxml)
            # 文档根元素
            rootNode = domTree.documentElement
            # print(rootNode.nodeName)
            bookMark = rootNode.getElementsByTagName("w:bookmarkStart")
            print("所有的书签↓↓↓↓↓↓↓↓↓↓↓")
            for mark in bookMark: 
                bookname = mark.getAttribute("w:name")
                if bookname in booklist:
                    print("书签:",mark.getAttribute("w:name"))
    print('读取结束') 
    
  • 相关阅读:
    POI使用介绍
    Git的使用简介
    SOA架构搭建---duboo+zookeeper+SSM实现
    分布式事务介绍
    兼容安卓微信调用摄像头
    cookie
    js对手机软键盘的监听
    input 改变placeholder默认样式
    VisualVm使用JMX的方式连接远程JVM
    update批量根据条件更新
  • 原文地址:https://www.cnblogs.com/kangzi/p/15133801.html
Copyright © 2011-2022 走看看