五一马上就要结束了,趁着今天休息的一天,给大家说说在python对办公文档处理 文章中说要详细的介绍python中几个对文档处理的库,今天就介绍一下word文档处理的python-docx库,好了废话不多说开始吧,哈哈哈哈哈哈哈啊哈哈~
python-docx的安装
python-docx它既有读取文档也有写入文档。它的安装方法和官方文档:
安装方法:pip install python-docx
官方文档: python-docx 0.8.10
文档Document的结构
通过官方文档的分析,我现在直接给大家两个结构图,如下:
下面我们就是根据这两张结构图进行分析和学习python-docx对word文档的处理的。
word文档的创建和段落操作
不管对文档什么样的操作,首先需要创建或者打开文档,代码如下:
from docx import Document
doc = Document() # 新建文档对象
doc1 = Document("test.docx") #打开test.docx文档
从第一张图,我们知道,有了文档之后,文档的内容进行操作,在这里我们先给一些常用的函数,如下表格:
方法 | 描述 |
add_heading (text, level=1) | 标题段落,text标题内容, level决定段落样式 |
add_paragraph (text, style=None) | 添加段落,text段落内容,style为段落样式 |
add_page_break ( ) | 添加一个分页 |
add_picture (image, width=None, height=None) | 添加图片,image图片文件,width和height图片的图片尺寸大小, 使用Cm或者Inches换算 |
add_section (start_type=2) | 添加节,start_type为节符的类型 |
add_table (rows, cols, style=None) | 添加表格,rows和cols为行列, style为表格样式 |
save (path_or_stream) | 保存文档,path_or_stream保存文件名 |
add_run(text) | 添加文字块儿, text内容 |
add_style (name, style_type, builtin=False) | 添加样式 |
其实到这里我们就可以操作大部分的文档内容,那么怎么设置一些常用的属性呢?比如对齐方式,行间距,加粗等,下面列举一些常用的属性设置方式,如下:
属性 | 描述 |
alignment | 对齐样式。 WD_ALIGN_PARAGRAPH. LEFT左对齐;WD_ALIGN_PARAGRAPH. CENTER:居中对其; WD_ALIGN_PARAGRAPH. RIGHT右对齐; WD_ALIGN_PARAGRAPH. JUSTIFY:两端对齐; |
font.bold | 字体是否加粗 |
font.italic | 斜体 |
font.underline | 下划线 |
font.font.strike | 删除线 |
font.size | 字体大小 |
font.color.rgb | 字体颜色 |
font.name | 使用什么字体 |
font.highlight_color | 字体高亮 |
paragraph_format.line_spacing | 行间距 |
paragraph_format.space_before | 段前间距 |
paragraph_format.space_after | 段后间距 |
paragraph_format.left_indent | 调整左缩进,使用Pt衡量 |
paragraph_format.right_indent | 调整右缩进,使用Pt衡量 |
到这里我们可以基本知道所有的文字段落相关的操作了,下面我们来点实际的东西吧,代码如下:
from docx import Document
from docx.shared import Pt #设置像素、缩进等
from docx.shared import RGBColor #设置字体颜色
from docx.oxml.ns import qn
from docx.enum.style import WD_STYLE_TYPE
doc = Document("test.docx")
style = doc.styles.add_style('tstyle', WD_STYLE_TYPE.PARAGRAPH)
style.font.color.rgb = RGBColor(0x42, 0x22, 0)
p = doc.add_paragraph("添加段落", style=style)
text = p.add_run("add_run")
for paragraph in doc.paragraphs:
paragraph.paragraph_format.line_spacing = 3.0
paragraph.alignment = WD_ALIGN_PARAGRAPH.CENTER
paragraph.paragraph_format.space_before = Pt(10)
paragraph.paragraph_format.space_after = Pt(10)
for run in paragraph.runs:
run.font.bold = True
run.font.italic = True
run.font.underline = True
run.font.strike = True
run.font.shadow = True
run.font.size = Pt(20)
run.font.color.rgb = RGBColor(0x42, 0x24, 0xE9)
run.font.name = "仿宋"
r = run._element.rPr.rFonts
r.set(qn("w:eastAsia"),"微软雅黑")
doc.save("test.docx")
word文档的添加表格
从上面的表格我们知道添加表格我们使用的是add_table方法,但添加表格还有两个函数就是
add_row()和add_column()。add_row()函数默认添加在表格的底部,而add_column()函数默认添加到列最右侧。从添加函数add_row()和add_column()我们可以知道表格是有两个属性,那就是行列了,哈哈哈哈~那么我们怎么访问呢?但是是通过表格的table.rows和table.columns两个属性获取行和列的的总对象,然后使用索引获取指定的行或者列对象。但是表格单元格是按行存储的,所以操作的时候要注意的,特别是删除列的时候不能像“行”使用row._element.getparent().remove()函数来删除,但可以使用单元格进行删除。代码如下:
from docx import Document
from docx.shared import Inches
from docx.enum.text import WD_ALIGN_PARAGRAPH
from docx.shared import Cm, Pt
from docx.oxml.ns import qn
from docx.shared import RGBColor
doc=Document( )
tobj = doc.add_table(3, 2)
tobj .add_column()
tobj .add_row()
cell_obj = tobj .cell(1,1)
cell_obj.add_paragraph(text='22', style=None)
tobj.cell(1, 1).text = ''
paragraph = tobj .cell(0, 1).text='33'
paragraph = tobj .cell(0, 1).text=''
c2 =cell_obj.merge(table_obj.cell(2,2))
c2.add_paragraph(text='22', style=None)
tables = doc.tables # 获取文档中所有表格对象的列表
table0 = tables[0] # 获取表格对象
cells = table0._cells
cells_string = [cell.text for cell in cells]
col_num = len(table0.columns)
row_num = len(table0.rows)
row0 = table0.rows[0]
col0 = table0.columns[0]
总结
这篇文章重点主要是介绍一些python-docx使用比较多的一些方法和属性,包括介绍python-docx对文档操作的结构,如果想更深入的研究python-docx的使用或者python-docx怎么实现的,我推荐观看python-docx官方文档(英语要比较好)。也许还会有人问,那word统计分析的图形怎么没有,其实我们可以通过将表格转到Excel中,然后使用openpyxl来完成;或者通过pandas分析统计数据,然后使用matplotlib批量生成图表;pandas和matplotlib也会介绍,哈哈哈哈哈哈哈~