广告
返回顶部
首页 > 资讯 > 后端开发 > Python >python_docx制作word文档
  • 533
分享到

python_docx制作word文档

文档python_docxword 2023-01-31 00:01:34 533人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

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

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文件,并在其中输入如下内容。

1341090-20181121161333944-1495919464.png

 

 写一段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

 

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')  #保存文档

 

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

 1341090-20181121162731109-376635879.png

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

 

3. 添加段落文字

document.add_paragraph('剧情简介')

 

完整代码如下:

from docx import Document
document = Document()

document.add_paragraph('剧情简介')  # 添加段落

document.save('ceshi.docx')  #保存文档

 

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

1341090-20181121162838207-2026425696.png

 

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

需要使用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')  #保存文档

 

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

 1341090-20181122095300296-558910315.png

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

 

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会飘红,但是不要紧,执行不会报错!

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

1341090-20181122095910938-1597578177.png

 

左对齐,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')  #保存文档

 

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

1341090-20181122101342154-886518830.png


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')  #保存文档

 

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

1341090-20181122101910303-1117048813.png

可以发现,它已经是宋体了!之前的字体是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')  #保存文档

 

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

1341090-20181122103610508-865836512.png

图片居中

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

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')  #保存文档

 

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

1341090-20181122103941616-1346865389.png

 

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')  #保存文档

 

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

1341090-20181122105709762-1360264095.png

 

11. 表格

我需要实现下面的表格

1341090-20181122110722443-627758052.png

 

换行

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

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

 

表格

表格坐标体系

一张图,就可以看明白了

1341090-20181122111053746-1409689738.png

 

完整代码如下:

#!/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')  #保存文档

 

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

1341090-20181122111139287-1028627636.png

 

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

表格样式

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

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')  #保存文档

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

1341090-20181122111651137-334097517.png

 

表格字体加粗

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

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')  #保存文档

 

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

1341090-20181122113713197-1055002757.png

 

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

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

 

表格字体颜色

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

加一个方法即可

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[0].add_run(content)
    run.font.size = Pt(11)
    run.font.color.rgb = RGBColor(255, 0, 0)

 

完整代码如下:

#!/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  # 加粗

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[0].add_run(content)
    run.font.size = Pt(11)
    run.font.color.rgb = RGBColor(255, 0, 0)

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 = "胡歌"
td_red(table,1,1,"胡歌")
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')  #保存文档

 

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

1341090-20190106144827499-1597950238.png

 

 

本文参考链接:

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

 

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


--结束END--

本文标题: python_docx制作word文档

本文链接: https://www.lsjlt.com/news/182810.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • python_docx制作word文档
    Python可以利用python-docx模块处理word文档,处理方式是面向对象的。也就是说python-docx模块会把word文档,文档中的段落、文本、字体等都看做对象,对对象进行处理就是对word文档的内容处理。二、相关概念如果需要...
    99+
    2023-01-31
    文档 python_docx word
  • word文档如何制作座位表
    制作座位表的步骤如下:1. 打开Word文档,选择一个合适的页面布局,比如横向布局。可以通过点击“布局”选项卡上的“页面方向”和“页...
    99+
    2023-09-29
    word
  • Python 读取 Word 文档操作
    目录前言Python 读取 Word 文档安装 python-docx库前言 Word 文档 (.docx) 是另一种主要用于存储文本的常见文档。它们通常由 Mi...
    99+
    2022-11-11
  • Office制作的PPT转成Word文档的两种方法
    方法1:使用复制粘贴的方法将PPT内容转成Word文档。1. 打开PPT文件,选择要转换的幻灯片。2. 按下Ctrl+A,将所有内容...
    99+
    2023-09-15
    Word
  • python之python-docx:操作 office word 文档
    在Python中,有一个名为python-docx的库,它提供了丰富的功能,可以方便地创建、修改和读取Word文档。 本文将详细介绍python-docx库的使用,并提供一些示例来演示其中的功能。为了更好地理解,我们将分为以下几个方面进行讨...
    99+
    2023-08-31
    c# 开发语言 word
  • word文档的制表位如何使用
    在Word文档中使用制表位可以对文本进行对齐操作。制表位可以设置在横向的水平线上,用于对齐文本的起始位置,常见的制表位包括左对齐、右...
    99+
    2023-09-29
    word
  • word文档里如何绘制茎叶图
    在Word文档中绘制茎叶图,可以使用Word自带的绘图工具或者插入Excel表格来实现。方法一:使用Word的绘图工具1. 打开Wo...
    99+
    2023-09-29
    word
  • Java 合并Word文档
    在日常工作中,难免会遇到需要将多个Word文档合并到一个文档中,对其进行重新整理的情况,为了能帮助大家高效快速的完成这个操作,接下来本文就将介绍两种在Java程序中合并Word文档的方法。方法一:如果需要被合并的文档默认从新的一页开始显示,...
    99+
    2023-06-02
  • Python操作word文档的示例详解
    目录写在前面创建一个文档先实现第一步,写入一个标题添加文字段落列表的添加图片的添加表格添加相关样式设置页眉和页脚写在前面 python-docx 不支持 doc 文档,一定要注意该点...
    99+
    2022-11-13
  • word文档如何分页
    要在Word文档中进行分页,可以使用以下几种方法:1. 手动插入分页符:将光标放在要插入分页符的位置,然后点击“插入”选项卡中的“分...
    99+
    2023-09-15
    Word
  • Python-docx:读写word文档
    1 Python DocX目前是Python OpenXML的一部分,你可以用它打开Word 2007及以后的文档,而用它保存的文档可以在Microsoft Office 2007/2010, Microsof...
    99+
    2023-01-31
    文档 Python docx
  • word文档复制粘贴不了怎么解决
    如果无法复制和粘贴Word文档,可以尝试以下解决方法:1. 检查剪贴板:确保剪贴板没有被其他程序占用。关闭其他程序中可能使用了剪贴板...
    99+
    2023-09-16
    Word
  • word文档无法复制粘贴如何解决
    如果Word文档无法复制粘贴,可以尝试以下解决方法:1. 检查剪贴板功能是否正常:打开其他程序(如记事本)尝试复制粘贴功能,如果在其...
    99+
    2023-10-07
    word
  • Java实现向Word文档添加文档属性
    目录程序环境:方法1:手动引入。方法2: 如果您想通过 ​​Maven​​安装,则可以在 pom.xml 文件中添加以下代码导入 JAR 文件。将内置文档属性添加到 Word 文档完...
    99+
    2023-01-29
    java如何设置word文档属性 Java 将文档属性添加到 Word 文档 Java 设置Word文档属性
  • 如何使用python docx模块操作word文档
    目录引言打开文档正文应用字符样式(字体,大小,颜色)添加标题操作段落添加段落删除段落替换文字设置段落对齐方式字体格式添加分页符添加表添加图片图像大小应用段落样式应用粗体和斜体应用字符...
    99+
    2022-11-11
  • Python批量对word文档进行操作步骤
    目录导读应用细节介绍导读 前面几章我们以经介绍了怎么批量对excel和ppt操作今天我们说说对word文档的批量操作 应用 python-docx允许您创建新文档以及对现有文档进行更...
    99+
    2022-11-13
  • word只读文档如何改成可编辑文档
    小编给大家分享一下word只读文档如何改成可编辑文档,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!方法:1、点击文件右击选择“属性”;在“常规”选项卡中查看是否被...
    99+
    2023-06-13
  • Python读取Word文档内容
    Python读取Word文档内容 在Python中,我们可以使用Python-docx模块来读取Word文档内容。这个模块提供了一种方法,即使用Python代码来读取和编辑Word文档。 安装Pyth...
    99+
    2023-09-24
    word python 开发语言
  • 如何给word文档加密
    要给Word文档加密,可以按照以下步骤操作:1. 打开Word文档,点击菜单栏中的"文件"选项。2. 在弹出的选项中,选择"信息"。...
    99+
    2023-09-15
    Word
  • Python加密word文档详解
    目录Python加密word文档总结Python加密word文档 我们先了解一下异或是什么。简单来说,如果a、b两个值不相同,则异或结果为1。如果a、b两个值相同,异或结果为0。我们简单的梳理一下代码思路。代码分为两...
    99+
    2022-06-02
    Python 加密word文档
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作