python 合并两个enum python 合并两个word中的图片_python docx 合并文档 图片

我们都是Python可以操作表格文本,以及图片处理,但是今天我就给大家分享一个Python 是如何操作world文档​。

  1. 安装python-docx
  2. docx的详细操作
  3. 实战经验分享

很熟悉的1,2,3 就像那个看似简单又时难的问题,把大象放进冰箱怎么操作? 对的就是那么简单分三步:

  1. 打开冰箱(安装python-docx)
  2. 放进大象(docx的详细操作)
  3. 关上冰箱(实战经验分享)

无论现在你对于Python-docx是陌生还是了解,接下来和我走进Python学习的三部曲中,你会得到不一样的收获。

安装python-docx

首先Python的版本选择,一般选择Python3.4,由于官方对于Python2版本的不更新处理,所有没有任何犹豫,直接选择Python3版本以上就可以。

windows和linux的Python 环境下安装操作如下:

pip install python-docx 


也可以选择 直接从官网搜索 Python python-docx 进入官网下载版本解压安装

tar xvzf python-docx-{version}.tar.gz
cd python-docx-{version}
python setup.py install

本地的Pycharm编辑器安装的话,点击Settings -->>Project Interpreter-->>点击+输入python-docx进行搜索安装即可。

docx的详细操作

首先导入需要的类库类库

from docx import Document
from docx.oxml.ns import qn
from docx.shared import Pt
from docx.shared import Inches

新建一个文档

document = Document() 

创建字体样式

document.styles['Normal'].font.name = u'宋体'
document.styles['Normal']._element.rPr.rFonts.set(qn('w:eastAsia'), u'宋体')

字体和文档已经建好之后,开始添加一个标题,每一个wolrd的文档都是从标题开始

document.add_heading('Python is the best programming language') 

标题设置,还可以选择等级,一般是从1-9等级

document.add_heading('Python is the best programming language', level=4) 

关于文档的编辑,分页是需要的

document.add_page_break() 

Python-docx的操作基本就入门了,段落+分页+标题已经是文档的标配。

接下来我们将一步一步的深入docx的操作,远远不止段落和标题的操作。

添加表格,在文档中添加表格是一种数据展示最好的方式。

#添加2行2列的表格
table = document.add_table(rows=2, cols=2)


定位单元格属性之后并可以操作改单元格的内容以及其他的样式设置

cell = table.cell(0, 1) cell.text = 'Python 是最好的编程语言' 

单元格可以定位,同样的表格的行也可以实现定位,还可以进行批量的内容输入,for循环搞定逐行写入。

row = table.rows[1]
row.cells[0].text = 'Python可以实现文档的编辑操作'
row.cells[1].text = 'Python也可以实现网络爬虫'

for row in table.rows:
    for cell in row.cells:
        print(cell.text)

再给表格添加一个样式:

table.style = 'LightShading-Accent1'

Python-docx可以操作表格,那么也少不了图片的的添加。

document.add_picture('Python_images.png')

这个的图片路径是一般还是选择本地的路径吧,如果引入网络地址或者服务器上的图片资源路径可能会非常的缓慢。

指定图片尺寸大小

document.add_picture('image-filename.png', width=Inches(1.0))

接下来我们就给文档内容添加一些样式。

paragraph = document.add_paragraph()
paragraph.add_run('Python is the best programming language')
paragraph.add_run('Python可以实现文档的编辑操作').bold = True
paragraph.add_run(' XXX还可以继续添加内容')

字体设置一般包括(字体、大小、颜色、粗体、斜体)

paragraph = document.add_paragraph('ython is the best programming language')
paragraph.add_run('Python可以实现文档的编辑操作', '宋体')

另外一种字体设置方式

paragraph = document.add_paragraph('ython is the best programming language')
run = paragraph.add_run('Python可以实现文档的编辑操作')
run.style = '宋体'

字体的格式

from docx.shared import Pt
from docx import Document
document = Document()
run = document.add_paragraph().add_run()
font = run.font
font.name = 'Calibri'
font.size = Pt(12)
#斜体设置 True是开,False是关
font.italic = True
# 下划线 
font.underline = True
#字体颜色
from docx.shared import RGBColor
font.color.rgb = RGBColor(0x42, 0x24, 0xE9)
#恢复字体颜色
font.color.rgb = None

设置段落的水平对齐

from docx.enum.text import WD_PARAGRAPH_ALIGNMENT
document = Document()
paragraph = document.add_paragraph()
paragraph_format = paragraph.paragraph_format
paragraph_format.alignment
paragraph_format.alignment = WD_ALIGN_PARAGRAPH.CENTER

设置段落左侧缩进

from docx.shared import Inches
paragraph = document.add_paragraph()
paragraph_format = paragraph.paragraph_format
paragraph_format.left_indent = Inches(0.5)

设置段落右侧缩进

from docx.shared import Pt
paragraph_format.right_indent
paragraph_format.right_indent = Pt(24)

第一行缩进使用first_line_indent属性指定,并相对于左缩进进行解释。负值表示挂起缩进

paragraph_format.first_line_indent
paragraph_format.first_line_indent = Inches(-0.25)
paragraph_format.first_line_indent

设置制表符

tab_stop = tab_stops.add_tab_stop(Inches(1.5)) tab_stop.position 

设置段落间距

paragraph_format.space_before = Pt(18) 

设置行间距

from docx.shared import Length paragraph_format.line_spacing = Pt(18) 

添加分页:

 paragraph_format.keep_with_next = True 

属性基本设置完毕后就可以指定路径保存并生成文档

document.save('test.docx') 

以上是文档的编辑,Python-docx对于文档的读取如下:

f = open('test.docx', 'rb')
document = Document(f)
f.close()

# 或者

with open('test.docx', 'rb') as f:
    s = StringIO(f.read())
document = Document(s)
s.close()

实战经验分享:附加我个人实战经验分享

python 合并两个enum python 合并两个word中的图片_python docx 合并文档 图片_02

python 合并两个enum python 合并两个word中的图片_python保存图片到指定路径_03

python 合并两个enum python 合并两个word中的图片_缩进_04