一、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[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') #保存文檔
執行程序,打開文檔,效果如下:

本文參考鏈接:
https://blog.csdn.net/sinat_30711195/article/details/80725435
https://www.cnblogs.com/ontheway703/p/5266041.html
