python操作word
doc文件所占用空间更小。docx格式的文件本质上是一个ZIP文件,所以其实也可以把.docx文件直接改成.zip,解压后,里面的
word/document.xml包含了Word文档的大部分内容,图片文件则保存在word/media里面。
python-docx不支持.doc文件,间接解决方法是在代码里面先把.doc转为.docx。
一、安装包
pip3 install python-docx
二、创建word文档
下面是在官文示例基础上对个别地方稍微修改,并加上函数的使用说明
from docx importDocumentfrom docx.shared importInches
document=Document()#添加标题,并设置级别,范围:0 至 9,默认为1
document.add_heading('Document Title', 0)#添加段落,文本可以包含制表符(\t)、换行符(\n)或回车符(\r)等
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('second item in unordered list', style='List Bullet')#添加项目列表(前面数字)
document.add_paragraph('first item in ordered list', style='List Number')
document.add_paragraph('second 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')
)#添加表格:一行三列#表格样式参数可选:#Normal Table#Table Grid#Light Shading、 Light Shading Accent 1 至 Light Shading Accent 6#Light List、Light List Accent 1 至 Light List Accent 6#Light Grid、Light Grid Accent 1 至 Light Grid Accent 6#太多了其它省略...
table = document.add_table(rows=1, cols=3, style='Light Shading Accent 2')#获取第一行的单元格列表
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 inrecords:#表格添加行,并返回行所在的单元格列表
row_cells =table.add_row().cells
row_cells[0].text=str(qty)
row_cells[1].text =id
doc
查看了网上的各种方法,大部分还是接受将doc文件强制另存为docx文件(使用代码转换,而不是直接修改后缀),在读取即可,需要另外安装win32com模块,注意就是直接使用 pip install win32com 安装不成功,需要用
python -m pip install pypiwin32
即可,简单使用如下
import docx
import win32com.client as wc
#doc文件另存为docx
word = wc.Dispatch("Word.Application")
doc = word.Documents.Open(r"F:\\***\\***\\append\\***.doc")
#上面的地方只能使用完整绝对地址,相对地址找不到文件,且,只能用“\\”,不能用“/”,哪怕加了 r 也不行,涉及到将反斜杠看成转义字符。
doc.SaveAs(r"F:\\***\\***\\appendDoc\\***.docx", 12, False, "", True, "", False, False, False, False)#转换后的文件,12代表转换后为docx文件
#doc.SaveAs(r"F:\\***\\***\\appendDoc\\***.docx", 12)#或直接简写
#注意SaveAs会打开保存后的文件,有时可能看不到,但后台一定是打开的
doc.Close
word.Quit
path = "appendDoc/***.docx"
file = docx.Document(path)
for p in file.paragraphs:
print(p.text)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了