一、docx模块

Python可以利用python-docx模块处理word文档,处理方式是面向对象的。也就是说python-docx模块会把word文档,文档中的段落、文本、字体等都看做对象,对对象进行处理就是对word文档的内容处理。

二、相关概念

如果需要读取word文档中的文字(一般来说,程序也只需要认识word文档中的文字信息),需要先了解python-docx模块的几个概念。

1. Document对象,表示一个word文档。
2. Paragraph对象,表示word文档中的一个段落
3. Paragraph对象的text属性,表示段落中的文本内容。

三、模块的安装和导入

安装模块

pip3 install python-docx

注意在导入模块时,用的是import docx。

也真是奇了怪了,怎么安装和导入模块时,很多都不用一个名字。

四、读取word文本

在了解了上面的信息之后,就很简单了,下面先创建一个D:\temp\word.docx文件,并在其中输入如下内容。

写一段python代码读取

#!/usr/bin/env python
# coding: utf-8 import docx
#获取文档对象
file=docx.Document("test1.docx")
print("段落数:"+str(len(file.paragraphs)))#段落数为6,每个回车隔离一段 #输出每一段的内容
for para in file.paragraphs:
print(para.text) #输出段落编号及段落内容
for i in range(len(file.paragraphs)):
print("第"+str(i)+"段的内容是:"+file.paragraphs[i].text)

执行输出:

段落数:6
清平调·其一
【朝代】唐 云想衣裳花想容,春风拂槛露华浓。
若非群玉山头见,会向瑶台月下逢。 第0段的内容是:清平调·其一
第1段的内容是:【朝代】唐
第2段的内容是:
第3段的内容是:云想衣裳花想容,春风拂槛露华浓。
第4段的内容是:若非群玉山头见,会向瑶台月下逢。
第5段的内容是:

本文参考链接:

https://www.jb51.net/article/133405.htm

五、制作word文档

1. 创建文档

from docx import Document
document = Document()
document.save('ceshi.docx') #保存文档

执行之后,它会创建一个ceshi.docx,打开之后,内容是空的。

2. 添加标题

document.add_heading('琅琊榜', 0)

完整代码如下:

from docx import Document
document = Document() document.add_heading('琅琊榜', 0) # 添加标题 document.save('ceshi.docx') #保存文档

执行程序,打开文档,效果如下

但是,这个有个问题是标题下面有一条横线,对于重度强迫症的我是无法容忍的。所以我直接添加段落文字表示标题

3. 添加段落文字

document.add_paragraph('剧情简介')

完整代码如下:

from docx import Document
document = Document() document.add_paragraph('剧情简介') # 添加段落 document.save('ceshi.docx') #保存文档

执行程序,打开文档,效果如下

但是,这只实现了默认格式的段落文字添加,且这里的文字只能是英文。如果要设置中文字体,且对文字设置对齐,颜色,大小等设置,则:

需要使用add_run()方法添加文字。

4. 设置文字大小

字体是不是太小了,可以设置文字大小。

关于word中的字体大小对应表,请参考链接:

https://blog.csdn.net/zhushouchen/article/details/50236817

现在需要设置字体大小为一号,那么对应的数字为26

完整代码如下:

from docx import Document
from docx.shared import Pt document = Document()
p = document.add_paragraph()
run = p.add_run('琅琊榜') # 使用add_run添加文字
run.font.size = Pt(26) #字体大小设置,和word里面的字号相对应,小一 document.save('ceshi.docx') #保存文档

执行程序,打开文档,效果如下

可以发现,它的大小就是一号!

5. 设置对齐

我需要将这些文件居中对齐,怎么办?需要导入一个类WD_ALIGN_PARAGRAPH

完整代码如下:

from docx import Document
from docx.shared import Pt
from docx.enum.text import WD_ALIGN_PARAGRAPH document = Document()
p = document.add_paragraph()
run = p.add_run('琅琊榜') # 使用add_run添加文字
run.font.size = Pt(26) #字体大小设置,和word里面的字号相对应,小一
p.paragraph_format.alignment = WD_ALIGN_PARAGRAPH.CENTER #段落文字居中设置 document.save('ceshi.docx') #保存文档

注意:这段代码,导入类方法WD_ALIGN_PARAGRAPH时,Pycharm会飘红,但是不要紧,执行不会报错!

执行程序,打开文档,效果如下:

左对齐,WD_ALIGN_PARAGRAPH.LEFT

右对齐,WD_ALIGN_PARAGRAPH.RIGHT

其他更多方式,请参考链接:

https://python-docx.readthedocs.org/en/latest/api/enum/WdAlignParagraph.html#wdparagraphalignment

6. 设置字体加粗

设置run.bold = True 就可以实现加粗

完整代码如下:

from docx import Document
from docx.shared import Pt
from docx.enum.text import WD_ALIGN_PARAGRAPH document = Document()
p = document.add_paragraph()
run = p.add_run('琅琊榜') # 使用add_run添加文字
run.font.size = Pt(26) #字体大小设置,和word里面的字号相对应,小一
p.paragraph_format.alignment = WD_ALIGN_PARAGRAPH.CENTER #段落文字居中设置
run.bold = True # 字体加粗 document.save('ceshi.docx') #保存文档

执行程序,打开文档,效果如下:

7. 设置字体

我需要将文字设置为 "宋体",使用

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

网上很多文章说,只需要上面一行就可以了。其实根本就没有效果,要2行代码一起设置才会有效果!

完整代码如下:

from docx import Document
from docx.shared import Pt
from docx.enum.text import WD_ALIGN_PARAGRAPH
from docx.oxml.ns import qn document = Document()
p = document.add_paragraph()
run = p.add_run('琅琊榜') # 使用add_run添加文字
run.font.size = Pt(26) #字体大小设置,和word里面的字号相对应,小一
p.paragraph_format.alignment = WD_ALIGN_PARAGRAPH.CENTER #段落文字居中设置
run.bold = True # 字体加粗
document.styles['Normal'].font.name = '宋体' # 设置字体
document.styles['Normal']._element.rPr.rFonts.set(qn('w:eastAsia'), '宋体') document.save('ceshi.docx') #保存文档

执行程序,打开文档,效果如下:

可以发现,它已经是宋体了!之前的字体是MS Mincho

8. 设置文字颜色

我需要将标题设置为红色,需要使用RGB颜色,关于RGB颜色对照表,请参考链接:

http://tool.oschina.net/commons?type=3

那么红色对应的RGB就是255.0.0,代码就是

run.font.color.rgb = RGBColor(255,0,0)

完整代码如下:

from docx import Document
from docx.shared import Pt
from docx.enum.text import WD_ALIGN_PARAGRAPH
from docx.oxml.ns import qn
from docx.shared import RGBColor document = Document()
p = document.add_paragraph()
run = p.add_run('琅琊榜') # 使用add_run添加文字
run.font.size = Pt(26) #字体大小设置,和word里面的字号相对应,小一
p.paragraph_format.alignment = WD_ALIGN_PARAGRAPH.CENTER #段落文字居中设置
run.bold = True # 字体加粗
document.styles['Normal'].font.name = '宋体' # 设置字体
document.styles['Normal']._element.rPr.rFonts.set(qn('w:eastAsia'), '宋体')
run.font.color.rgb = RGBColor(255,0,0) #颜色设置,这里是用RGB颜色 document.save('ceshi.docx') #保存文档

执行程序,打开文档,效果如下:

9. 添加图片

先从网络上下载一张图片lyb.jpb,请确保图片和python程序在同一目录

图像大小

默认情况下,添加图像出现在本地的大小。这通常比你想要的更大。本机大小的计算方法。因此,具有300dpi分辨率的300×300像素图像出现在一平方英寸。问题是大多数图像不包含dpi属性,它默认为72 dpi。这将使同一图像在一边,在一半左右的某处出现4.167英寸。pixels / dpi

要获得所需的图像大小,您可以以方便的单位指定其宽度或高度,如英寸或厘米:

from docx.shared import Inches
document.add_picture('image-filename.png', width=Inches(1.0))

你可以自由地指定宽度和高度,但通常你不想要。如果仅指定一个,python-docx用它来计算出其他的适当换算值。这样的高宽比是保留的,你的图像看起来不拉伸。

InchesCm提供课程,让你指定派上用场单位进行测量。在内部,python-docx使用英语公制单位,914400为英寸。所以,如果你忘记了,只是把喜欢的东西width=2,你会得到一个非常小的图像:)。你需要从导入docx.shared 子包。你可以在算术中使用它们,就像它们是一个整数,事实上它们是。因此,像一个表达式的作品就好了。width = Inches(3) /thing_count

完整代码如下:

from docx import Document
from docx.shared import Pt
from docx.enum.text import WD_ALIGN_PARAGRAPH
from docx.oxml.ns import qn
from docx.shared import RGBColor
from docx.shared import Inches document = Document()
p = document.add_paragraph()
run = p.add_run('琅琊榜') # 使用add_run添加文字
run.font.size = Pt(26) #字体大小设置,和word里面的字号相对应,小一
p.paragraph_format.alignment = WD_ALIGN_PARAGRAPH.CENTER #段落文字居中设置
run.bold = True # 字体加粗
document.styles['Normal'].font.name = '宋体' # 设置字体
document.styles['Normal']._element.rPr.rFonts.set(qn('w:eastAsia'), '宋体')
run.font.color.rgb = RGBColor(255,0,0) #颜色设置,这里是用RGB颜色 pic = document.add_picture('lyb.jpg',width = Inches(5)) # 添加图片 document.save('ceshi.docx') #保存文档

执行程序,打开文档,效果如下:

图片居中

默认情况下,图片在文档中是左对齐的,如果要对图片进行居中显示,在网上找了很多方法都不可行,最后找到一种方法是直接加入以下代码:

last_paragraph = document.paragraphs[-1]
last_paragraph.alignment = WD_ALIGN_PARAGRAPH.CENTER #图片居中设置

完整代码如下:

from docx import Document
from docx.shared import Pt
from docx.enum.text import WD_ALIGN_PARAGRAPH
from docx.oxml.ns import qn
from docx.shared import RGBColor
from docx.shared import Inches document = Document()
p = document.add_paragraph()
run = p.add_run('琅琊榜') # 使用add_run添加文字
run.font.size = Pt(26) #字体大小设置,和word里面的字号相对应,小一
p.paragraph_format.alignment = WD_ALIGN_PARAGRAPH.CENTER #段落文字居中设置
run.bold = True # 字体加粗
document.styles['Normal'].font.name = '宋体' # 设置字体
document.styles['Normal']._element.rPr.rFonts.set(qn('w:eastAsia'), '宋体')
run.font.color.rgb = RGBColor(255,0,0) #颜色设置,这里是用RGB颜色 pic = document.add_picture('lyb.jpg',width = Inches(5)) # 添加图片
last_paragraph = document.paragraphs[-1]
last_paragraph.alignment = WD_ALIGN_PARAGRAPH.CENTER #图片居中设置 document.save('ceshi.docx') #保存文档

执行程序,打开文档,效果如下:

10. 文字缩进

我需要实现以下效果,就需要用到缩进了

关于缩进,有3中方式

from docx.shared import Inches
from docx.shared import Pt #设置段落从左开始缩进,使用Inches来衡量
paragraph_format.left_indent = Inches(0.5) #设置段落从右开始缩进,使用Pt来衡量
paragraph_format.right_indent = Pt(20) #设置段落第一行缩进,可以与上两个缩进叠加
paragraph_format.first_line_indent = Inches(0.5)

仔细观察,上面的段落只需要用到首行缩进!

完整代码如下:

#!/usr/bin/env python
# coding: utf-8 from docx import Document
from docx.shared import Pt
from docx.enum.text import WD_ALIGN_PARAGRAPH
from docx.oxml.ns import qn
from docx.shared import RGBColor
from docx.shared import Inches document = Document()
p = document.add_paragraph()
run = p.add_run('琅琊榜') # 使用add_run添加文字
run.font.size = Pt(26) #字体大小设置,和word里面的字号相对应,小一
p.paragraph_format.alignment = WD_ALIGN_PARAGRAPH.CENTER #段落文字居中设置
run.bold = True # 字体加粗
document.styles['Normal'].font.name = '宋体' # 设置字体
document.styles['Normal']._element.rPr.rFonts.set(qn('w:eastAsia'), '宋体')
run.font.color.rgb = RGBColor(255,0,0) #颜色设置,这里是用RGB颜色 pic = document.add_picture('lyb.jpg',width = Inches(5)) # 添加图片
last_paragraph = document.paragraphs[-1]
last_paragraph.alignment = WD_ALIGN_PARAGRAPH.CENTER #图片居中设置 p = document.add_paragraph()
run = p.add_run('剧情简介')
run.font.size = Pt(22) # 二号
run.bold = True p = document.add_paragraph()
run = p.add_run('梅长苏(胡歌饰)本远在江湖,却名动帝辇。江湖传言:“江左梅郎,麒麟之才,得之可得天下。”作为天下第一大帮“江左盟”的首领,梅长苏“梅郎”之名响誉江湖。然而,有着江湖至尊地位的梅长苏,却是一个病弱青年、弱不禁风,背负着十多年前巨大的冤案与血海深仇,就连身世背后也隐藏着巨大的秘密。')
p_format = p.paragraph_format
p_format.first_line_indent = Inches(0.2) # 首行缩进 document.save('ceshi.docx') #保存文档

执行程序,打开文档,效果如下:

11. 表格

我需要实现下面的表格

换行

在剧情简介和音乐原声之间,需要有一个换行,否则就太紧凑了,使用

document.add_paragraph(text='\r', style=None)  # 换行

表格

表格坐标体系

一张图,就可以看明白了

完整代码如下:

#!/usr/bin/env python
# coding: utf-8 from docx import Document
from docx.shared import Pt
from docx.enum.text import WD_ALIGN_PARAGRAPH
from docx.oxml.ns import qn
from docx.shared import RGBColor
from docx.shared import Inches document = Document()
p = document.add_paragraph()
run = p.add_run('琅琊榜') # 使用add_run添加文字
run.font.size = Pt(26) #字体大小设置,和word里面的字号相对应,小一
p.paragraph_format.alignment = WD_ALIGN_PARAGRAPH.CENTER #段落文字居中设置
run.bold = True # 字体加粗
document.styles['Normal'].font.name = '宋体' # 设置字体
document.styles['Normal']._element.rPr.rFonts.set(qn('w:eastAsia'), '宋体')
run.font.color.rgb = RGBColor(255,0,0) #颜色设置,这里是用RGB颜色 pic = document.add_picture('lyb.jpg',width = Inches(5)) # 添加图片
last_paragraph = document.paragraphs[-1]
last_paragraph.alignment = WD_ALIGN_PARAGRAPH.CENTER #图片居中设置 p = document.add_paragraph()
run = p.add_run('剧情简介')
run.font.size = Pt(22) # 二号
run.bold = True p = document.add_paragraph()
run = p.add_run('梅长苏(胡歌饰)本远在江湖,却名动帝辇。江湖传言:“江左梅郎,麒麟之才,得之可得天下。”作为天下第一大帮“江左盟”的首领,梅长苏“梅郎”之名响誉江湖。然而,有着江湖至尊地位的梅长苏,却是一个病弱青年、弱不禁风,背负着十多年前巨大的冤案与血海深仇,就连身世背后也隐藏着巨大的秘密。')
p_format = p.paragraph_format
p_format.first_line_indent = Inches(0.2) # 首行缩进 document.add_paragraph(text='\r', style=None) # 换行 p = document.add_paragraph()
run = p.add_run('音乐原声')
run.font.size = Pt(22) # 二号
run.bold = True table = document.add_table(rows=4, cols=5) # 4行5列的表格
table.cell(0,0).text = "歌曲"
table.cell(0,1).text = "演唱者"
table.cell(0,2).text = "作曲"
table.cell(0,3).text = "作词"
table.cell(0,4).text = "类型" table.cell(1,0).text = "《风起时》"
table.cell(1,1).text = "胡歌"
table.cell(1,2).text = "孟可"
table.cell(1,3).text = "海宴"
table.cell(1,4).text = "主题曲、片尾曲" table.cell(2,0).text = "《红颜旧》"
table.cell(2,1).text = "刘涛"
table.cell(2,2).text = "赵佳霖"
table.cell(2,3).text = "袁亮"
table.cell(2,4).text = "插曲" table.cell(3,0).text = "《赤血长殷》"
table.cell(3,1).text = "王凯"
table.cell(3,2).text = "于海航"
table.cell(3,3).text = "清彦、冰封"
table.cell(3,4).text = "插曲" document.save('ceshi.docx') #保存文档

执行程序,打开文档,效果如下:

可以发现,默认的表格是没有线条的。需要设置表格样式

表格样式

关于表格样式,可以参考链接:

https://blog.csdn.net/ibiao/article/details/78595295

上面的链接,列举了所有的样式。注意:这些样式,都是隔行换色的!

喜欢哪个,将样式名复制一下,使用以下代码实现!

下面的代码,表示使用Table Grid样式

table.style = document.styles['Table Grid']  # 表格样式

完整代码如下:

#!/usr/bin/env python
# coding: utf-8 from docx import Document
from docx.shared import Pt
from docx.enum.text import WD_ALIGN_PARAGRAPH
from docx.oxml.ns import qn
from docx.shared import RGBColor
from docx.shared import Inches document = Document()
p = document.add_paragraph()
run = p.add_run('琅琊榜') # 使用add_run添加文字
run.font.size = Pt(26) #字体大小设置,和word里面的字号相对应,小一
p.paragraph_format.alignment = WD_ALIGN_PARAGRAPH.CENTER #段落文字居中设置
run.bold = True # 字体加粗
document.styles['Normal'].font.name = '宋体' # 设置字体
document.styles['Normal']._element.rPr.rFonts.set(qn('w:eastAsia'), '宋体')
run.font.color.rgb = RGBColor(255,0,0) #颜色设置,这里是用RGB颜色 pic = document.add_picture('lyb.jpg',width = Inches(5)) # 添加图片
last_paragraph = document.paragraphs[-1]
last_paragraph.alignment = WD_ALIGN_PARAGRAPH.CENTER #图片居中设置 p = document.add_paragraph()
run = p.add_run('剧情简介')
run.font.size = Pt(22) # 二号
run.bold = True p = document.add_paragraph()
run = p.add_run('梅长苏(胡歌饰)本远在江湖,却名动帝辇。江湖传言:“江左梅郎,麒麟之才,得之可得天下。”作为天下第一大帮“江左盟”的首领,梅长苏“梅郎”之名响誉江湖。然而,有着江湖至尊地位的梅长苏,却是一个病弱青年、弱不禁风,背负着十多年前巨大的冤案与血海深仇,就连身世背后也隐藏着巨大的秘密。')
p_format = p.paragraph_format
p_format.first_line_indent = Inches(0.2) # 首行缩进 document.add_paragraph(text='\r', style=None) # 换行 p = document.add_paragraph()
run = p.add_run('音乐原声')
run.font.size = Pt(22) # 二号
run.bold = True table = document.add_table(rows=4, cols=5) # 4行5列的表格
table.cell(0,0).text = "歌曲"
table.cell(0,1).text = "演唱者"
table.cell(0,2).text = "作曲"
table.cell(0,3).text = "作词"
table.cell(0,4).text = "类型" table.cell(1,0).text = "《风起时》"
table.cell(1,1).text = "胡歌"
table.cell(1,2).text = "孟可"
table.cell(1,3).text = "海宴"
table.cell(1,4).text = "主题曲、片尾曲" table.cell(2,0).text = "《红颜旧》"
table.cell(2,1).text = "刘涛"
table.cell(2,2).text = "赵佳霖"
table.cell(2,3).text = "袁亮"
table.cell(2,4).text = "插曲" table.cell(3,0).text = "《赤血长殷》"
table.cell(3,1).text = "王凯"
table.cell(3,2).text = "于海航"
table.cell(3,3).text = "清彦、冰封"
table.cell(3,4).text = "插曲" table.style = document.styles['Table Grid'] # 表格样式 document.save('ceshi.docx') #保存文档

执行程序,打开文档,效果如下:

表格字体加粗

上面的效果还有一点不足,哪里呢?第一行没有加粗,关于表格文字加粗,这个问题找了很久,终于找到一篇文章,链接如下:

https://www.jb51.net/article/139691.htm

在它的基础上,我做了一些改进。封装了一个函数th

完整代码如下:

#!/usr/bin/env python
# coding: utf-8 from docx import Document
from docx.shared import Pt
from docx.enum.text import WD_ALIGN_PARAGRAPH
from docx.oxml.ns import qn
from docx.shared import RGBColor
from docx.shared import Inches document = Document()
p = document.add_paragraph()
run = p.add_run('琅琊榜') # 使用add_run添加文字
run.font.size = Pt(26) #字体大小设置,和word里面的字号相对应,小一
p.paragraph_format.alignment = WD_ALIGN_PARAGRAPH.CENTER #段落文字居中设置
run.bold = True # 字体加粗
document.styles['Normal'].font.name = '宋体' # 设置字体
document.styles['Normal']._element.rPr.rFonts.set(qn('w:eastAsia'), '宋体')
run.font.color.rgb = RGBColor(255,0,0) #颜色设置,这里是用RGB颜色 pic = document.add_picture('lyb.jpg',width = Inches(5)) # 添加图片
last_paragraph = document.paragraphs[-1]
last_paragraph.alignment = WD_ALIGN_PARAGRAPH.CENTER #图片居中设置 p = document.add_paragraph()
run = p.add_run('剧情简介')
run.font.size = Pt(22) # 二号
run.bold = True p = document.add_paragraph()
run = p.add_run('梅长苏(胡歌饰)本远在江湖,却名动帝辇。江湖传言:“江左梅郎,麒麟之才,得之可得天下。”作为天下第一大帮“江左盟”的首领,梅长苏“梅郎”之名响誉江湖。然而,有着江湖至尊地位的梅长苏,却是一个病弱青年、弱不禁风,背负着十多年前巨大的冤案与血海深仇,就连身世背后也隐藏着巨大的秘密。')
p_format = p.paragraph_format
p_format.first_line_indent = Inches(0.2) # 首行缩进 document.add_paragraph(text='\r', style=None) # 换行 p = document.add_paragraph()
run = p.add_run('音乐原声')
run.font.size = Pt(22) # 二号
run.bold = True table = document.add_table(rows=4, cols=5) # 4行5列的表格
# table.cell(0,0).text = "歌曲"
# table.cell(0,1).text = "演唱者"
# table.cell(0,2).text = "作曲"
# table.cell(0,3).text = "作词"
# table.cell(0,4).text = "类型" def th(x,y,content):
"""
th样式
:param x: x坐标
:param y: y坐标
:param content: 内容
:return: None
"""
# print(grid,content)
run = table.cell(x,y).paragraphs[0].add_run(content)
run.bold = True # 加粗 th(0,0,"歌曲")
th(0,1,"演唱者")
th(0,2,"作曲")
th(0,3,"作词")
th(0,4,"类型") table.cell(1,0).text = "《风起时》"
table.cell(1,1).text = "胡歌"
table.cell(1,2).text = "孟可"
table.cell(1,3).text = "海宴"
table.cell(1,4).text = "主题曲、片尾曲" table.cell(2,0).text = "《红颜旧》"
table.cell(2,1).text = "刘涛"
table.cell(2,2).text = "赵佳霖"
table.cell(2,3).text = "袁亮"
table.cell(2,4).text = "插曲" table.cell(3,0).text = "《赤血长殷》"
table.cell(3,1).text = "王凯"
table.cell(3,2).text = "于海航"
table.cell(3,3).text = "清彦、冰封"
table.cell(3,4).text = "插曲" table.style = document.styles['Table Grid'] # 表格样式 document.save('ceshi.docx') #保存文档

执行程序,打开文档,效果如下:

那么第一行,能不能加一个背景颜色呢?不好意思,目前没有找到有效的方法。

上面有很多隔行换色的样式,可以选择。如果不想要,那么就只能这样了!

表格字体颜色

我需要将表格中的 "胡歌" 变成红色,怎么办呢?

加一个方法即可

def td_red(table,x, y,content):
"""
td红色字体
:param table: 表格对象
:param x: x坐标
:param y: y坐标
:param content: 内容
:return: None
"""
run = table.cell(x, y).paragraphs[].add_run(content)
run.font.size = Pt()
run.font.color.rgb = RGBColor(, , )

完整代码如下:

#!/usr/bin/env python
# coding: utf- from docx import Document
from docx.shared import Pt
from docx.enum.text import WD_ALIGN_PARAGRAPH
from docx.oxml.ns import qn
from docx.shared import RGBColor
from docx.shared import Inches document = Document()
p = document.add_paragraph()
run = p.add_run('琅琊榜') # 使用add_run添加文字
run.font.size = Pt() #字体大小设置,和word里面的字号相对应,小一
p.paragraph_format.alignment = WD_ALIGN_PARAGRAPH.CENTER #段落文字居中设置
run.bold = True # 字体加粗
document.styles['Normal'].font.name = '宋体' # 设置字体
document.styles['Normal']._element.rPr.rFonts.set(qn('w:eastAsia'), '宋体')
run.font.color.rgb = RGBColor(,,) #颜色设置,这里是用RGB颜色 pic = document.add_picture('lyb.jpg',width = Inches()) # 添加图片
last_paragraph = document.paragraphs[-]
last_paragraph.alignment = WD_ALIGN_PARAGRAPH.CENTER #图片居中设置 p = document.add_paragraph()
run = p.add_run('剧情简介')
run.font.size = Pt() # 二号
run.bold = True p = document.add_paragraph()
run = p.add_run('梅长苏(胡歌饰)本远在江湖,却名动帝辇。江湖传言:“江左梅郎,麒麟之才,得之可得天下。”作为天下第一大帮“江左盟”的首领,梅长苏“梅郎”之名响誉江湖。然而,有着江湖至尊地位的梅长苏,却是一个病弱青年、弱不禁风,背负着十多年前巨大的冤案与血海深仇,就连身世背后也隐藏着巨大的秘密。')
p_format = p.paragraph_format
p_format.first_line_indent = Inches(0.2) # 首行缩进 document.add_paragraph(text='\r', style=None) # 换行 p = document.add_paragraph()
run = p.add_run('音乐原声')
run.font.size = Pt() # 二号
run.bold = True table = document.add_table(rows=, cols=) # 4行5列的表格
# table.cell(,).text = "歌曲"
# table.cell(,).text = "演唱者"
# table.cell(,).text = "作曲"
# table.cell(,).text = "作词"
# table.cell(,).text = "类型" def th(x,y,content):
"""
th样式
:param x: x坐标
:param y: y坐标
:param content: 内容
:return: None
"""
# print(grid,content)
run = table.cell(x,y).paragraphs[].add_run(content)
run.bold = True # 加粗 def td_red(table,x, y,content):
"""
td红色字体
:param table: 表格对象
:param x: x坐标
:param y: y坐标
:param content: 内容
:return: None
"""
run = table.cell(x, y).paragraphs[].add_run(content)
run.font.size = Pt()
run.font.color.rgb = RGBColor(, , ) th(,,"歌曲")
th(,,"演唱者")
th(,,"作曲")
th(,,"作词")
th(,,"类型") table.cell(,).text = "《风起时》"
# table.cell(,).text = "胡歌"
td_red(table,,,"胡歌")
table.cell(,).text = "孟可"
table.cell(,).text = "海宴"
table.cell(,).text = "主题曲、片尾曲" table.cell(,).text = "《红颜旧》"
table.cell(,).text = "刘涛"
table.cell(,).text = "赵佳霖"
table.cell(,).text = "袁亮"
table.cell(,).text = "插曲" table.cell(,).text = "《赤血长殷》"
table.cell(,).text = "王凯"
table.cell(,).text = "于海航"
table.cell(,).text = "清彦、冰封"
table.cell(,).text = "插曲" table.style = document.styles['Table Grid'] # 表格样式 document.save('ceshi.docx') #保存文档

执行程序,打开文档,效果如下:

本文参考链接:

https://blog.csdn.net/sinat_30711195/article/details/80725435

https://www.cnblogs.com/ontheway703/p/5266041.html

python_docx制作word文档的更多相关文章

  1. python_docx制作word文档详细使用说明【转】

      目前网上对这一个库的介绍得很少,很零散,所以很多功能我是尽量参考其官网,但是官网上面很多功能目前只有说明文档,而代码并还没有及时更新,以至于按照官网上面做了,python却报错.比如:自定义表格的 ...

  2. C#实现通过模板自动创建Word文档的方法

    原文地址:http://www.jb51.net/article/55332.htm   本文实例讲述了C#实现通过模板自动创建Word文档的方法,是非常实用的技巧.分享给大家供大家参考.具体实现方法 ...

  3. PowerDesigner将PDM导出生成WORD文档

    PowerDesigner将PDM导出生成WORD文档 环境 PowerDesigner15 1.点击Report Temlates 制作模板 2.如果没有模板,单击New图标创建.有直接双击进入. ...

  4. 如何在PowerDesigner将PDM导出生成WORD文档或者html文件

    a)         使用PowerDesigner打开pdm文件 b)         点击Report Temlates 制作模板 点击PowerDesigner菜单栏“Report” -> ...

  5. PowerDesigner将PDM导出生成WORD文档--温习老知识

    转:http://www.cnblogs.com/wudiwushen/archive/2010/05/13/1734812.html 今天的温习老知识,是如何将一个PD设计的PDM来导出WORD文档 ...

  6. C# 导出word文档及批量导出word文档(1)

         这里用到了两个dll,一个是aspose.word.dll,另外一个是ICSharpCode.SharpZipLib.dll,ICSharpCode.SharpZipLib.dll是用于批量 ...

  7. iText操作word文档总结

    操作word文档的工具有很多,除了iText之外还有POI,但是POI擅长的功能是操作excel,虽然也可以操作word,但是能力有限,而且还有很多的bug,技术并不成熟,下面就重点介绍一种操作wor ...

  8. 使用Spire.Doc组件利用模板导出Word文档

    以前一直是用Office的组件实现Word文档导出,但是让客户在服务器安装Office,涉及到版权:而且Office安装,包括权限配置也是比较麻烦. 现在流行使用第三方组件来实现对Office的操作, ...

  9. Java解析word文档

    背景 在互联网教育行业,做内容相关的项目经常碰到的一个问题就是如何解析word文档. 因为系统如果无法智能的解析word,那么就只能通过其他方式手动录入word内容,效率低下,而且人工成本和录入出错率 ...

随机推荐

  1. [网络流]小M的作物

    小\(M\)的作物(最小割) 做的第一道网络流,因为一个智障错误调了好久嘤嘤嘤 题目描述 小\(M\)在\(MC\)里开辟了两块巨大的耕地\(A\)和\(B\)(你可以认为容量是无穷),现在,小\(P ...

  2. python之旅:常用模块

    一.time与datetime模块 在Python中,通常有这几种方式来表示时间 时间戳(timestamp):通常来说,时间戳表示的是从1970年1月1号00:00:00开始按照秒计算的偏移量.我们 ...

  3. Tcp协议三次握手四次挥手

    一.什么是TCP TCP(Transmission Control Protocol 传输控制协议)是一种面向连接(连接导向)的.可靠的. 基于IP的传输层协议.TCP在IP报文的协议号是6. 二.什 ...

  4. git "refusing to merge unrelated histories" 解决方法

    出现这个错误是因为本地的 git 历史和远程仓库的 git 历史不一样,如果我们想要合并两个不同的 git 历史(我们必须要清楚我们在做什么),就可以使用这个选项来进行强制合并不同的 git 历史,如 ...

  5. day8 java基础细节回顾

    java之父——James Gosling java吉祥物——duke 编译: 源文件(.java文件)-->java编译器==>.class文件 运行:类装载器-->字节码校验器- ...

  6. C++持有Object-C对象时容易内存泄露

    在IOS项目中,可以将C++与Object-C混编,不过必须放在实现文件.mm中. 在.mm中,我们可能创建了一个C++对象A,而它持有一个Object-C对象B作为成员变量.当A对象被释放掉的时候, ...

  7. linux split 切割大文件

    语法: split  [-l <行数>] [-b <字节>] [-C <字节>] [要切割的目标文件] [输出文件名前缀] 说明: -l <行数> 指定 ...

  8. bzoj千题计划161:bzoj1589: [Usaco2008 Dec]Trick or Treat on the Farm 采集糖果

    http://www.lydsy.com/JudgeOnline/problem.php?id=1589 tarjan缩环后拓扑排序上DP #include<cstdio> #includ ...

  9. 优先队列:POJ No 3614 Sunscreen 贪心

    Sunscreen Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 6410   Accepted: 2239 Descrip ...

  10. [HTML5和Flash视频播放器]Video.js 学习笔记(一 ) HLS库:videojs-contrib-hls

    DEMO地址:https://github.com/Tinywan/PHP_Experience https://github.com/videojs/videojs-contrib-hls 下载JS ...