当前位置: 首页 > news >正文

python-docx - 读写更新 .docx 文件(Microsoft Word 2007+ )

文章目录

    • 一、关于 python-docx
      • 关于 OpenXML
      • 安装
    • 二、使用示例


一、关于 python-docx

python-docx 是一个Python库,用来 读写更新 Microsoft Word 2007+ (.docx) 文件。

  • GitHub : https://python-docx.readthedocs.io/en/latest/
  • 官方文档:https://python-docx.readthedocs.io/en/latest/

关于 OpenXML

OpenXML,是微软Office 2007及以上版本文档的存储格式,它将文档内容以XML形式存储,使得文档内容可以被程序直接读取和修改。

处理OpenXML所需的库主要是python-docx。


  • 使用Python和OpenXML高效处理Word文档的技巧与实践
    https://www.oryoy.com/news/shi-yong-python-he-openxml-gao-xiao-chu-li-word-wen-dang-de-ji-qiao-yu-shi-jian.html
  • 关于 Open XML SDK for Office
    https://learn.microsoft.com/zh-cn/office/open-xml/about-the-open-xml-sdk

注:不支持 doc 文档

doc 和 docx 有本质诧异,doc 是 二进制,docx 是 XML 格式文件


安装

pip install python-docx

二、使用示例

>>> from docx import Document

>>> document = Document()
>>> document.add_paragraph("It was a dark and stormy night.")
<docx.text.paragraph.Paragraph object at 0x10f19e760>
>>> document.save("dark-and-stormy.docx")

>>> document = Document("dark-and-stormy.docx")
>>> document.paragraphs[0].text
'It was a dark and stormy night.'

from docx import Document
from docx.shared import Inches

document = Document()

document.add_heading('Document Title', 0)

p = document.add_paragraph('A plain paragraph having some ')
p.add_run('bold').bold = True
p.add_run(' and some ')
p.add_run('italic.').italic = True

document.add_heading('Heading, level 1', level=1)
document.add_paragraph('Intense quote', style='Intense Quote')

document.add_paragraph(
    'first item in unordered list', style='List Bullet'
)
document.add_paragraph(
    'first item in ordered list', style='List Number'
)

document.add_picture('monty-truth.png', width=Inches(1.25))

records = (
    (3, '101', 'Spam'),
    (7, '422', 'Eggs'),
    (4, '631', 'Spam, spam, eggs, and spam')
)

table = document.add_table(rows=1, cols=3)
hdr_cells = table.rows[0].cells
hdr_cells[0].text = 'Qty'
hdr_cells[1].text = 'Id'
hdr_cells[2].text = 'Desc'
for qty, id, desc in records:
    row_cells = table.add_row().cells
    row_cells[0].text = str(qty)
    row_cells[1].text = id
    row_cells[2].text = desc

document.add_page_break()

document.save('demo.docx')

2025-03-03

相关文章:

  • Django系列教程(7)——路由配置URLConf
  • SpringBoot 入门基础
  • OBS推WebRTC流,并添加毫秒级时间显示
  • 【C++11】auto decltype nullptr
  • C++ 函数重载
  • 【Linux篇】进程状态(僵尸进程,孤儿进程),优先级与调度机制
  • BUUCTF逆向刷题笔记(13-?)持续更新
  • 【leetcode hot 100 24】两两交换链表中的节点
  • vulnhub-DC-9 SQL注入、“ssh端口敲门”、hydra爆破
  • 题解:AT_arc093_b [ABC092D] Grid Components
  • Python规则引擎DIY:从零开始构建规则引擎
  • Linux》》Ubuntu22.04下Docker的安装 Docker
  • 【VS】vs生成前事件,复制脚本文件至运行目录
  • Python Numpy面试题及参考答案 草
  • Prompt 工程
  • MySQL中IN关键字与EXIST关键字的比较
  • JAVA:利用 Jsoup 轻松解析和操作 HTML 的技术指南
  • 展望 AIGC 前景:通义万相 2.1 与蓝耘智算平台共筑 AI 生产力高地
  • 如何在Android中实现SQLite数据库操作
  • 【设计模式】设计模式介绍
  • 新加坡选情渐热:播客、短视频各显神通,总理反对身份政治
  • 葛兰西的三位一体:重提并复兴欧洲共产主义的平民圣人
  • 106岁东江纵队老战士、四川省侨联名誉主席邱林逝世
  • 京东美团开打,苦了商家?
  • 持续更新丨伊朗内政部长:港口爆炸已致8人死亡750人受伤
  • 应勇:以法治力量服务黄河流域生态保护和高质量发展