Python对word文档进行操作

Python-docx

Python-docx是专门针对于word文档的一个模块,只能操作docx 不能读取doc文件。在这里python-docx主要的功能是对docx文件进行操作,管理等。

官方文档:https://python-docx.readthedocs.io/en/latest/index.html

 

安装Python-docx

pip install python-docx

 

编辑word文档

导入Document模块

从 docx模块中,导入Document类,并实例化生成一个Document对象,通过它对word文档进行操作。

 

from docx import Document

Doc = Document()

 

添加标题

Doc.add_heading("使用Python操作word文档")

Doc.add_heading("添加标题2",level=2)

Doc.add_heading("添加标题3",level=3)

 

添加段落(paragraph)

这里paragraph指的就是一个段落的意思

Doc.add_paragraph("Python是一种面向对象的编程语言")

Doc.add_paragraph("Python可以操作word文档")

Doc.add_paragraph("看看操作的结果吧")

 

插入图片

doc.add_picture('./images/img1.jpg', width=Inches(5),height=Inches(3))

 

插入表格

 

 

# 插入表格

table = doc.add_table(rows=1, cols=3)  # 插入表格

table.style ='Table Grid'

#设置列宽

table.cell(0,0).width=Cm(20)

table.cell(0,1).width=Cm(15)

table.cell(0,2).width=Cm(15)

#设置整个表格字体属性

table.style.font.size=Pt(10)

table.style.font.color.rgb=RGBColor(255, 0, 0)

table.style.paragraph_format.alignment=WD_PARAGRAPH_ALIGNMENT.CENTER

 

hdr_cells = table.rows[0].cells

#hdr_cells[0].text = '名称'

hdr_cells[1].text = '品牌'

hdr_cells[2].text = '价格'

#单个单元格设置

cell=table.cell(0,0)

p=cell.paragraphs[0]

run = p.add_run("名称")

run.font.color.rgb = RGBColor(0, 0, 255) # 颜色设置,这里是用RGB颜色

run.font.size = Pt(12) # 字体大小设置,和word里面的字号相对应

#设置水平对齐方式(LEFT,RIGHT,CENTER

p.paragraph_format.alignment = WD_PARAGRAPH_ALIGNMENT.CENTER

#设置垂直对齐方式(TOP,BOTTOM,CENTER

cell.vertical_alignment = WD_CELL_VERTICAL_ALIGNMENT.CENTER

 

ls = [

    ["秋梨润肺膏", "同仁堂", "32.00"],

    ["夏桑菊颗粒", "白云山", "19.90"],

    ["急支糖浆", "太极", "26.80"],

    ["虫草清肺胶囊", "同济堂", "88.00"],

    ["布洛芬缓释胶囊", "芬必得", "30.20"],

    ["小儿氨酚烷胺颗粒", "葵花药业", "15.20"]

]

for item in ls:

     row_cells = table.add_row().cells

     row_cells[0].text = item[0]

     row_cells[1].text = item[1]

     row_cells[2].text = item[2]

边框样式

table_style = 'Normal Table'  #无线框表格

 

单元格对齐

在对单元格对齐方式设置的时候,将单元格视为一个整体,要使用单元格中的垂直对齐(cell.vertical_alignment)和单元格中的段落的对齐(paragraph.alignment)等2种对齐方式配合使用。

在docx.enum.table.WD_ALIGN_VERTICAL定义了TOP、CENTER和BOTTOM等3种类型,含义如下:

from docx.enum.table import WD_CELL_VERTICAL_ALIGNMENT

 

WD_CELL_VERTICAL_ALIGNMENT.TOP:单元格内容靠上对齐

WD_CELL_VERTICAL_ALIGNMENT.CENTER:单元格内容居中对齐

WD_CELL_VERTICAL_ALIGNMENT.BOTTOM:单元格内容靠下对齐

 

在WD_PARAGRAPH_ALIGNMENT中定义了4中类型,分别是LEFT、CENTER、RIGHT和JUSTIFY等4中类型,含义如下:

from docx.enum.text import WD_PARAGRAPH_ALIGNMENT # 导入段落对齐

 

WD_PARAGRAPH_ALIGNMENT.LEFT:段落左对齐

WD_PARAGRAPH_ALIGNMENT.CENTER:段落居中对齐

WD_PARAGRAPH_ALIGNMENT.RIGHT:段落右对齐

WD_PARAGRAPH_ALIGNMENT.JUSTIFY:段落两端对齐

 

合并单元格

cell_1=table.cell(1, 0)

cell_2=table.cell(2, 1)

cell_1.merge(cell_2)

 

保存word文档

Doc.save("Python_word.docx")

 

 

读取word文档

from docx import Document

 

doc = Document('./data/Python_word.docx')

#输出每一段的内容

for para in doc.paragraphs:

    print(para.text)

说明:

doc.paragraphs:获取段落对象列表

编辑已有的word文档

如果是想读取其中的图片或是更复杂地编辑,首先需要先来认识下docx文档的格式组成:

docx是Microsoft Office2007之后版本使用的,用新的基于XML的压缩文件格式取代了其专有的默认文件格式,在传统的文件名扩展名后面添加了字母“x”(即“.docx”取代“.doc”、“.xlsx”取代“.xls”、“.pptx”取代“.ppt”)。

 

docx格式的文件本质上是一个ZIP文件。将一个docx文件的后缀改为ZIP后是可以用解压工具打开或是解压的。事实上,Word2007的基本文件就是ZIP格式的,他可以算作是docx文件的容器。

docx 格式文件的主要内容是保存为XML格式的,但文件并非直接保存于磁盘。它是保存在一个ZIP文件中,然后取扩展名为docx。将.docx 格式的文件后缀改为ZIP后解压, 可以看到解压出来的文件夹中有word这样一个文件夹,它包含了Word文档的大部分内容。而其中的document.xml文件则包含了文档的主要文本内容。

Python对word文档进行操作_第1张图片

 

word目录下:

Python对word文档进行操作_第2张图片

 

document.xml文件内容:

Python对word文档进行操作_第3张图片

 

所以,我们可以使用手工的方法编辑文件document.xml来对该word文档内容进行编辑,或是提取文档media中图片文件的方式来提取该word文档中所插入的所有图片。

import zipfile

 

f=zipfile.ZipFile('./data/Python_word.docx','r')

for filename in f.namelist():

    print(filename)

    f.extract(filename)

你可能感兴趣的:(python)