python_docx制作word文档
一、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
用它来计算出其他的适当换算值。这样的高宽比是保留的,你的图像看起来不拉伸。
在Inches
和Cm
提供课程,让你指定派上用场单位进行测量。在内部,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文档的更多相关文章
- python_docx制作word文档详细使用说明【转】
目前网上对这一个库的介绍得很少,很零散,所以很多功能我是尽量参考其官网,但是官网上面很多功能目前只有说明文档,而代码并还没有及时更新,以至于按照官网上面做了,python却报错.比如:自定义表格的 ...
- C#实现通过模板自动创建Word文档的方法
原文地址:http://www.jb51.net/article/55332.htm 本文实例讲述了C#实现通过模板自动创建Word文档的方法,是非常实用的技巧.分享给大家供大家参考.具体实现方法 ...
- PowerDesigner将PDM导出生成WORD文档
PowerDesigner将PDM导出生成WORD文档 环境 PowerDesigner15 1.点击Report Temlates 制作模板 2.如果没有模板,单击New图标创建.有直接双击进入. ...
- 如何在PowerDesigner将PDM导出生成WORD文档或者html文件
a) 使用PowerDesigner打开pdm文件 b) 点击Report Temlates 制作模板 点击PowerDesigner菜单栏“Report” -> ...
- PowerDesigner将PDM导出生成WORD文档--温习老知识
转:http://www.cnblogs.com/wudiwushen/archive/2010/05/13/1734812.html 今天的温习老知识,是如何将一个PD设计的PDM来导出WORD文档 ...
- C# 导出word文档及批量导出word文档(1)
这里用到了两个dll,一个是aspose.word.dll,另外一个是ICSharpCode.SharpZipLib.dll,ICSharpCode.SharpZipLib.dll是用于批量 ...
- iText操作word文档总结
操作word文档的工具有很多,除了iText之外还有POI,但是POI擅长的功能是操作excel,虽然也可以操作word,但是能力有限,而且还有很多的bug,技术并不成熟,下面就重点介绍一种操作wor ...
- 使用Spire.Doc组件利用模板导出Word文档
以前一直是用Office的组件实现Word文档导出,但是让客户在服务器安装Office,涉及到版权:而且Office安装,包括权限配置也是比较麻烦. 现在流行使用第三方组件来实现对Office的操作, ...
- Java解析word文档
背景 在互联网教育行业,做内容相关的项目经常碰到的一个问题就是如何解析word文档. 因为系统如果无法智能的解析word,那么就只能通过其他方式手动录入word内容,效率低下,而且人工成本和录入出错率 ...
随机推荐
- SSH框架测试
1.struts的测试:目的是能否正确显示页面. 流程如图: 2.spring测试:目的是能否得到bean 3.Hibernate测试:目的是能否跟数据库操作,测试事务 事务测试: 这个要向数据库中保 ...
- Chapter3 (字符串,向量,数组) --C++Prime笔记
1.using用法:using namespace ::name;注意事项:一般不在头文件使用using否则很容易导致运用命名空间不对错误. 2.string的方法: ①getline(输入流,str ...
- 「Vue」Vue cli3中引用mui-ui问题及解决办法
1.引用mui.js无效,top-bar划动,numbox点击无效等问题 解决办法: -main.js中import mui from './lib/mui/js/mui.js' Vue.protot ...
- 序列内第k小查询(线段树)
最近请教了一下大佬怎么求序列内第k大查询,自己又捣鼓了一下,虽然还没有懂得区间第k大查询,不过姑且做一个记录先吧 因为每个元素大小可能很大而元素之间不连续,所以我们先离散化处理一下,程序中的ori[ ...
- 转:iPhone上关于相机拍照的图片的imageOrientation的问题
用相机拍摄出来的照片含有EXIF信息,UIImage的imageOrientation属性指的就是EXIF中的orientation信息.如果我们忽略orientation信息,而直接对照片进行像素处 ...
- python字符中加入变量
有时候,我们需要在字符串中加入相应的变量,以下提供了几种字符串加入变量的方法: 1.+ 连字符 name = 'zhangsan' print('my name is '+name) #结果为 my ...
- shell的父子进程
2017年1月11日, 星期三 shell的父子进程 启动/执行方式: 当前shell: #!/bin/bash 必须行首 ...
- 《PHP和MySQL Web开发》读书笔记(上篇)
最近过得太浮躁了,实在自己都看不下去了,看了PHP圣经之后,觉得非常有必要要总结一下. Chapter1.快速入门 ·PHP标记:总共有三种风格,常用的还是XML风格为主 <?php echo ...
- [php]php总结(1)
1.变量可以连续传递赋值2.var_dump()打印变量信息3.isset()与unset()4.可变变量$p = "temp";$$p则表示$temp变量,即最右边的变量的值为下 ...
- 如何在python的字符串中输入纯粹的{}
python的format函数通过{}来格式化字符串 >>> a='{0}'.format(123) >>> a ' 如果需要在文本中包含{}字符,这样使用就会报错 ...