Python有许多第三方库。如果要使用Python处理word文档,则需要安装Python docx库。
1.安装Python docx库
首先找到python根目录(就是有python.exe的文件夹)打开Scripts文件夹
Shift+鼠标右键选择在此处打开
powershell窗口或者cmd窗口输入
pip install python-docx按下回车等待安装完成。
2、基本操作语法
2.1打开文档
document = Document() 复制代码
第一行从docx模块中引入Document类;
第二行是声明一个Document()对象,相当于创建了一个docx文档,为文档增加一些内容。
第三行进行了一些操作的文档保存到一个文件中。
不填默认为新建一个文档。
如果大家在学习中遇到困难,想找一个python学习交流环境,可以加入我们的python裙,关注小编,并私信“01”即可进裙,领取python学习资料,会节约很多时间,减少很多遇到的难题。
from docx import Documentdocument = Document()document.save("演示如何操作Word文档.docx")# 要打开一个已存在的文件document = Document("已存在的文件名.docx")复制代码
2.2加入不同等级的标题
document.add_heading(u'总标题',0) document.add_heading(u'一级标题',1) document.add_heading(u'二级标题',2)复制代码
add_heading()方法会在文档的末尾添加标题,可以带两个参数,参数text是标题的文本,level是标题的级别,可以设置的范围是0-9,0代表文档标题,从1开始分别对应一级标题、二级标题一直到九级标题,默认值是1。
如果设置的数字超过这个范围,编译器会报ValueError。
2.3添加文本、段落
paragraph = document.add_paragraph(u'文本内容')复制代码
add_paragraph()会在文档末尾添加段落,此方法可以接受两个参数,text为段落的文本内容,这个文本内容可以包含\t、\n等特殊字符。style参数用来设置样式
from docx import Documentlyric = "那一年的雪花飘落梅花开枝头\n那一年的华清池旁留下太多愁\n"lyric = lyric + "不要说谁是谁非感情错与对\n只想梦里与你一起再醉一回\n"lyric_add = "爱恨就在一瞬间\n举杯对月情似天\n"lyric_add = lyric_add + "爱恨两茫茫\n问君何时恋"document = Document()paragraph = document.add_paragraph(text=lyric)paragraph.add_run(text= lyric_add)prior_paragraph = paragraph.insert_paragraph_before('新贵妃醉酒')document.save("1-使用段落.docx")复制代码
add_paragraph()方法会返回Paragraph()对象。该对象包含了对此段文本进行操作的一些方法和属性,如下:
- add_run():用来追加段落内容,设置样式等。
- clear():将段落删除,并返回该段内容,但是格式和样式会保留
- insert_paragraph_before():在本段落之前插入新段落。
- alignment:设置对齐方式
- paragraph_format:设置段落格式
- style:返回样式
- text:返回文本
2.4设置字号
run = paragraph.add_run(u'设置字号、') run.font.size = Pt(24)复制代码
2.5设置英文字体
run = paragraph.add_run('Set Font,') run.font.name = 'Consolas'复制代码
2.6设置中文字体
run = paragraph.add_run(u'设置中文字体、') run.font.name=u'宋体' r = run._element r.rPr.rFonts.set(qn('w:eastAsia'), u'宋体')复制代码
2.7设置斜体
run = paragraph.add_run(u'斜体、') run.italic = True复制代码
2.8 设置粗体
run = paragraph.add_run(u'粗体').bold = True复制代码
2.9增加引用
document.add_paragraph('Intense quote', style='Intense Quote')复制代码
2.10 增加列表
document.add_paragraph( u'无序列表元素1', style='List Bullet' ) document.add_paragraph( u'无序列表元素2', style='List Bullet' )复制代码
Style=’List Bullet’为无序列表
Style=’List Number’为有序列表
2.11添加图片
add_picture(image_path_or_stream, width=None, height=None)复制代码
可以调整图片的宽和高,此处不讨论
from docx import Documentdocument = Document()document.add_picture('1.png', width=Inches(1.25))复制代码
1.png为图片名称(图片位置必须与代码文件在同一个文件夹内)
2.12增加表格
add_table()方法会返回一个Table对象。rows代表行数,cols代表列数;style代表样式,暂时不谈。
table = document.add_table(rows=1, cols=3) hdr_cells = table.rows[0].cells hdr_cells[0].text = 'Name' hdr_cells[1].text = 'Id' hdr_cells[2].text = 'Desc'复制代码
Table()对象中报了对表格进行操作的方法和属性,如下:
- add_column(width):添加列(需要设置列宽)
- add_row():添加行
- cell(row_idx, col_idx):访问单个单元格
- row_cells(row_idx):返回一个序列(行号为row_idx的行内所有单元格)
- column_cells(column_idx):返回一个序列(列号为column_idx的列内所有单元格)
- rows:返回的是_Rows对象,是一个包含了所有行(_Row对象)的列表
- columns:返回的是_Columns对象,是一个包含了所有列(_Column对象)的列表
想要熟练使用python-docx操作Word文档:需要认识Table()、_Cell()、 _Row()、 _Rows() _Column() 和 _Columns()五个类。
2.13 再增加3行表格元素
cell()方法实际上是返回了一个_Cell()对象。_Cell()对象代表的是一个具体的单元格,包含了操作一个单个单元格的方法与属性,如下:
- add_paragraph(text=u”, style=None):在单元格内添加段落。
- add_table(rows, cols):在单元格中添加表格
- merge(other_cell):合并单元格
for i in range(3): row_cells = table.add_row().cells row_cells[0].text =
‘test’+str(i) row_cells[1].text = str(i) row_cells[2].text =
‘desc’+str(i) 复制代码
2.14增加分页
document.add_page_break()
要在Word文档中使用分页,要使用Document()对象中的add_page_break()方法,会返回一个包含一个分页符的Paragraph对象。
from docx import Documentdocument = Document()document.add_paragraph('这是第一页')document.add_page_break()document.add_paragraph('这是第二页')document.save("5-使用分页.docx")
2.15增加章节
默认是增加一个新页
document.add_section(start_type=2)复制代码
2.16保存文件
document.save(u'测试.docx')复制代码
2.17读取文档中的内容
方向:反向利用属性
(1)读取段落文本
from docx import Documentdocument = Document("1-使用段落.docx")for each in document.paragraphs: print(each.text)复制代码
document的paragraphs属性,会返回一个列表,列表内容为文档中所有段落(为Paragraph对象)的合集。
(2)读取标题
需要注意的是,对于一个Document来说,标题也是Paragraph。所谓标题,严格上说是一种带了格式的段落。
from docx import Documentdocument = Document("0-使用标题.docx")for each in document.paragraphs: print(each.text)复制代码
(3)读取表格单元格内容
使用tables属性,可以读取所有的表格;
from docx import Documentdocument = Document("3-使用表格.docx")for each in document.tables: print(each)print(document.tables[0].cell(0,0).text)<docx.table.Table object at 0x0000025F43F97390> # 表格对象1 # 第一个表格中第一个单元格的内容复制代码
(4)读取图片
需要使用inline_shapes属性;
from docx import Documentdocument = Document("7-使用图片.docx")for each in document.inline_shapes: print(each)<docx.shape.InlineShape object at 0x00000196D29F0A58> # 图片对象
最后多说一句,小编是一名python开发工程师,这里有我自己整理的整套python学习资料和路线,想要这些资料的都可以关注小编,并私信“01”领取。