网站首页 > 技术文章 正文
Python读写docx文件
Python读写word文档有现成的库可以处理
pip install python-docx安装一下。
https://python-docx.readthedocs.io/en/latest/
学习官网: http://python-docx.readthedocs.org/en/latest/
Bash
import docx
# 新建,打开,保存文件。
import docx
#新建文档
doc_new = docx.Document()
# 保存文档
doc_new.save('demo.docx')
#读取文档
doc = docx.Document('demo.docx')
python-docx包含了word文档的相关对象
- doc.paragraphs #段落
- doc.tables #表格
- doc.sections #节
- doc.styles #样式
- doc.inline_shapes #内置图形
段落样式
Bash
# 插入段落。
doc.add_paragraph('第一段',style=None) #插入一个段落,文本为“第一段”
#默认是不应用样式,这里也可以不写style参数,或者指定一个段落样式
doc.add_paragraph('第二段',style='Heading 2')
#这些样式都是word默认带有的样式,可以直接罗列出来有哪些段落样式
print ([s.name for s in doc.styles if s.type==1])
段落样式 :
['Normal', 'Header', 'Footer', 'Heading 1', 'Heading 2', 'Heading 3', 'Heading 4', 'Heading 5', 'Heading 6', 'Heading 7', 'Heading 8', 'Heading 9', 'No Spacing', 'Title', 'Subtitle', 'List Paragraph', 'Body Text', 'Body Text 2', 'Body Text 3', 'List', 'List 2', 'List 3', 'List Bullet', 'List Bullet 2', 'List Bullet 3', 'List Number', 'List Number 2', 'List Number 3', 'List Continue', 'List Continue 2', 'List Continue 3', 'macro', 'Quote', 'Caption', 'Intense Quote', 'TOC Heading']
# 新增样式
from docx.shared import RGBColor #这个是docx的颜色类
#新建文档
#新增样式(第一个参数是样式名称,第二个参数是样式类型:1代表段落;2代表字符;3代表表格)
style = doc.styles.add_style('style name 1', 2)
#设置具体样式(修改样式字体为蓝色,当然还可以修改其他的)
style.font.color.rgb = RGBColor(0x0, 0x0, 0xff)
字符样式
# 字符样式
# 插入一个空白段落
p = doc.add_paragraph('')
# 写入
p.add_run('毛利1', style="Heading 1 Char")
p.add_run('毛利2')
p.add_run('毛利3', style="Heading 2 Char")
#这样一个段落就应用了两个字符样式,中间“毛利”就没应用样式
print(p.text) #输出结果是u'123456789' 也还是连续的
毛利1毛利2毛利3
# 设置字体
r = p.add_run('毛利4')
r.font.bold = True #加粗
r.font.italic = True #倾斜
表格操作
# 表格操作
#新建一个2x3的表格,style可以不写
table=doc.add_table(rows=2,cols=3,style=None)
#可以用table 的rows和columns得到这个表格的行数和列数
print (len(table.rows))
print (len(table.columns))
#遍历表格rows
for index,row in enumerate(table.rows):
row.cells[0].text = '毛利{}'.format(index)
print(row.cells[0].text)
#新增行或列
table.add_row()
table.add_column(width=1)
2
3
毛利0
毛利1
<docx.table._Column at 0x17a7f928128>
官方例子
# 官方例子
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('demo1.docx')
效果如下图所示

总结

参考: http://python-docx.readthedocs.org/en/latest/
- 上一篇: Python 文件操作全指南:从读写到高级操作
- 下一篇: python中读取图片的6种方式
猜你喜欢
- 2025-01-06 3分钟教会你用Python读取MySQL中的数据
- 2025-01-06 Python高效管理JSON文件:读写、更新、删除全攻略
- 2025-01-06 读取txt、doc、docx、pdf文件——python
- 2025-01-06 20 天学 Python 文件操作:Day 2 深入理解文件读取方法
- 2025-01-06 python 利用python读取DOC文件
- 2025-01-06 一日一技:在Python中逐行读取文件
- 2025-01-06 python中读取图片的6种方式
- 2025-01-06 Python 文件操作全指南:从读写到高级操作
- 2025-01-06 python读取文件
- 2025-01-06 Python如何读写xml
- 06-24Python调用Docker API的使用方式(pycharm docker 调试)
- 06-24青少年Python编程系列28:Python中函数的递归调用
- 06-24python调用sqlite数据库案例(python 调用数据库)
- 06-24【Python机器学习系列】基于Flask来构建API调用机器学习模型服务
- 06-24通过pybind11来实现python调用C++接口(一)
- 06-24Python编程调用Deepseek API创建智能体
- 06-24python多装饰器针对函数、类、方法的调用顺序说明
- 06-24Python Qt GUI设计:Python调用UI文件的两种方法(基础篇—3)
- 270℃Python短文,Python中的嵌套条件语句(六)
- 268℃python笔记:for循环嵌套。end=""的作用,图形打印
- 266℃PythonNet:实现Python与.Net代码相互调用!
- 262℃Python实现字符串小写转大写并写入文件
- 261℃Python操作Sqlserver数据库(多库同时异步执行:增删改查)
- 121℃原来2025是完美的平方年,一起探索六种平方的算吧
- 101℃Python 和 JavaScript 终于联姻了!PythonMonkey 要火?
- 95℃Ollama v0.4.5-v0.4.7 更新集合:Ollama Python 库改进、新模型支持
- 最近发表
-
- Python调用Docker API的使用方式(pycharm docker 调试)
- 青少年Python编程系列28:Python中函数的递归调用
- python调用sqlite数据库案例(python 调用数据库)
- 【Python机器学习系列】基于Flask来构建API调用机器学习模型服务
- 通过pybind11来实现python调用C++接口(一)
- Python编程调用Deepseek API创建智能体
- python多装饰器针对函数、类、方法的调用顺序说明
- Python Qt GUI设计:Python调用UI文件的两种方法(基础篇—3)
- Python | Django 外部脚本调用 models 数据库
- 自学Python第九天——操作列表(python操作步骤)
- 标签列表
-
- python中类 (31)
- python 迭代 (34)
- python 小写 (35)
- python怎么输出 (33)
- python 日志 (35)
- python语音 (31)
- python 工程师 (34)
- python3 安装 (31)
- python音乐 (31)
- 安卓 python (32)
- python 小游戏 (32)
- python 安卓 (31)
- python聚类 (34)
- python向量 (31)
- python大全 (31)
- python次方 (33)
- python桌面 (32)
- python总结 (34)
- python浏览器 (32)
- python 请求 (32)
- python 前端 (32)
- python验证码 (33)
- python 题目 (32)
- python 文件写 (33)
- python中的用法 (32)