Python docx庫(kù)代碼演示
Python docx庫(kù)代碼演示
安裝
需要lxml pip install python-docx
主業(yè)務(wù)代碼
from openpyxl import Workbook
from openpyxl import load_workbook
from docx import Document
from docx.oxml.ns import qn
from docx.shared import Pt,RGBColor,Cm
from docx.enum.style import WD_STYLE_TYPE
import os
# 新建輸出
if os.path.exists('test_out.docx'):
os.remove('test_out.docx')
# 讀表
i1 = load_workbook('業(yè)務(wù)節(jié)點(diǎn)分析20211022103647(1).xlsx')
print('讀表結(jié)束')
i = i1['業(yè)務(wù)節(jié)點(diǎn)分析']
out = []
# range(x,y) x到y(tǒng)-1行
for h in range(523,528):
lie = []
for l in i[h]:
lie.append(l.value)
out.append(lie[8])
print(out)
print(len(out))
print('等待生成word文檔')
# 創(chuàng)建word
doc = Document()
doc.styles['Normal'].font.name = u'宋體'
doc.styles['Normal'].font.size = Pt(10.5)
# 設(shè)置黑體字樣式
style_hei = doc.styles.add_style('hei', WD_STYLE_TYPE.CHARACTER)
style_hei.font.name = '黑體'
doc.styles['hei']._element.rPr.rFonts.set(qn('w:eastAsia'), u'黑體')
# 設(shè)置宋體字樣式
style_hei = doc.styles.add_style('song', WD_STYLE_TYPE.CHARACTER)
style_hei.font.name = '宋體'
doc.styles['song']._element.rPr.rFonts.set(qn('w:eastAsia'), u'宋體')
# 完成進(jìn)度
# 段1
p1 = doc.add_paragraph()
# 文字
r1 = p1.add_run('完成進(jìn)度',style='song')
r1.font.size = Pt(22)
r1.font.bold = True
p1.paragraph_format.space_before = Pt(17)
p1.paragraph_format.space_after = Pt(16.5)
p1.paragraph_format.line_spacing = 1.0
# 表1
table1 = doc.add_table(rows=len(out)+1,cols=4,style='Table Grid')
table1.cell(0,0).paragraphs[0].add_run('序號(hào)',style='song')
# 第二行的cell會(huì)改變?cè)镜男袑?
table1.cell(0,0).width=Cm(2)
table1.cell(0,1).paragraphs[0].add_run('案例名稱(chēng)',style='song')
table1.cell(0,2).paragraphs[0].add_run('測(cè)試狀態(tài)',style='song')
table1.cell(0,3).paragraphs[0].add_run('時(shí)間',style='song')
for i in range(1,len(out)+1):
table1.cell(i,0).paragraphs[0].add_run(str(i),style='song')
table1.cell(i,0).width=Cm(2)
table1.cell(i,1).paragraphs[0].add_run(out[i-1],style='song')
table1.cell(i,2).paragraphs[0].add_run('待測(cè)試/測(cè)試中/完成',style='song')
'''
# 產(chǎn)品變更
# 段2
p2 = doc.add_paragraph()
# 文字
r2 = p2.add_run('\n一、產(chǎn)品變更',style='song')
r2.font.size = Pt(22)
r2.font.bold = True
p2.paragraph_format.space_before = Pt(17)
p2.paragraph_format.space_after = Pt(16.5)
p2.paragraph_format.line_spacing = 1.0
'''
# 前置條件+測(cè)試步驟描述
for i in range(1,len(out)+1):
st = str(i)+'.'+out[i-1]
# 段3
p3 = doc.add_paragraph()
# 文字
r3 = p3.add_run(st,style='hei')
r3.font.size = Pt(16)
r3.font.bold = True
p3.paragraph_format.space_before = Pt(13)
p3.paragraph_format.space_after = Pt(13)
p3.paragraph_format.line_spacing = 1.0
# 段4
p4 = doc.add_paragraph()
# 文字
r4 = p4.add_run('前置條件',style='song')
r4.font.size = Pt(18)
r4.font.bold = True
p4.paragraph_format.line_spacing = 1.0
# 表2
table2 = doc.add_table(rows=4, cols=6,style ='Table Grid')
t0 = table2.cell(0,0).paragraphs[0].add_run('號(hào)碼',style='song')
t0.font.size = Pt(12)
t0.font.color.rgb = RGBColor(0, 0, 255)
table2.cell(0,1).merge(table2.cell(0,2)).merge(table2.cell(0,3)).merge(table2.cell(0,4)).merge(table2.cell(0,5))
t1 = table2.cell(1,0).paragraphs[0].add_run('user_ID',style='song')
t1.font.size = Pt(12)
t1.font.color.rgb = RGBColor(0, 0, 255)
table2.cell(1,1).merge(table2.cell(1,2)).merge(table2.cell(1,3)).merge(table2.cell(1,4)).merge(table2.cell(1,5))
t2 = table2.cell(2,0).paragraphs[0].add_run('acct_ID',style='song')
t2.font.size = Pt(12)
t2.font.color.rgb = RGBColor(0, 0, 255)
table2.cell(2,1).merge(table2.cell(2,2)).merge(table2.cell(2,3)).merge(table2.cell(2,4)).merge(table2.cell(2,5))
t3 = table2.cell(3,0).paragraphs[0].add_run('cust_ID',style='song')
t3.font.size = Pt(12)
t3.font.color.rgb = RGBColor(0, 0, 255)
table2.cell(3,1).merge(table2.cell(3,2)).merge(table2.cell(3,3)).merge(table2.cell(3,4)).merge(table2.cell(3,5))
# 段5
p5 = doc.add_paragraph()
# 文字
r5 = p5.add_run('\n測(cè)試步驟描述',style='song')
r5.font.size = Pt(18)
r5.font.bold = True
p5.paragraph_format.line_spacing = 1.0
# 表3
table3 = doc.add_table(rows=2, cols=6,style ='Table Grid')
t0 = table3.cell(0,0).paragraphs[0].add_run('Order_id',style='song')
t0.font.size = Pt(12)
t0.font.color.rgb = RGBColor(0, 0, 255)
table3.cell(0,1).merge(table3.cell(0,2)).merge(table3.cell(0,3)).merge(table3.cell(0,4)).merge(table3.cell(0,5))
t1 = table3.cell(1,0).paragraphs[0].add_run('Trade_id',style='song')
t1.font.size = Pt(12)
t1.font.color.rgb = RGBColor(0, 0, 255)
table3.cell(1,1).merge(table3.cell(1,2)).merge(table3.cell(1,3)).merge(table3.cell(1,4)).merge(table3.cell(1,5))
# 段6
p6 = doc.add_paragraph()
# 文字
r6 = p6.add_run('\n(1)測(cè)試結(jié)果前臺(tái)截圖\n\n(2)測(cè)試結(jié)果后臺(tái)驗(yàn)證\n相關(guān)TRADE表:\n相關(guān)SQL驗(yàn)證:\n ①\n ②',style='song')
r6.font.size = Pt(12)
r6.font.color.rgb = RGBColor(0, 0, 255)
p6.paragraph_format.space_after = Pt(10)
p6.paragraph_format.line_spacing = 1.5
# 保存
doc.save('test_out.docx')
print('生成test_out.docx成功')
測(cè)試代碼(設(shè)置字體)
from openpyxl import Workbook
from openpyxl import load_workbook
from docx import Document
from docx.oxml.ns import qn
from docx.shared import Pt,RGBColor
from docx.enum.style import WD_STYLE_TYPE
import os
document = Document() # 新建docx文檔
style_song = document.styles.add_style('Song', WD_STYLE_TYPE.CHARACTER) # 設(shè)置Song字樣式
style_song.font.name = '宋體'
document.styles['Song']._element.rPr.rFonts.set(qn('w:eastAsia'), u'宋體') # 將段落中的所有字體
style_song = document.styles.add_style('Kai', WD_STYLE_TYPE.CHARACTER)
style_song.font.name = '楷體'
document.styles['Kai']._element.rPr.rFonts.set(qn('w:eastAsia'), u'楷體') # 將段落中的所有字體
style_song = document.styles.add_style('Lishu', WD_STYLE_TYPE.CHARACTER)
style_song.font.name = '隸書(shū)'
document.styles['Lishu']._element.rPr.rFonts.set(qn('w:eastAsia'), u'隸書(shū)') # 將段落中的所有字體
paragraph1 = document.add_paragraph() # 添加段落
run = paragraph1.add_run(u'aBCDefg這是中文', style='Song') # 設(shè)置宋體樣式
font = run.font #設(shè)置字體
font.name = 'Cambira' # 設(shè)置西文字體
paragraph1.add_run(u'aBCDefg這是中文', style='Kai').font.name = 'Cambira'
paragraph1.add_run(u'aBCDefg這是中文', style='Lishu').font.name = 'Cambira'
document.save('1.docx')
總結(jié)
本篇文章就到這里了,希望能夠給你帶來(lái)幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
經(jīng)驗(yàn)豐富程序員才知道的8種高級(jí)Python技巧
這篇文章主要介紹了經(jīng)驗(yàn)豐富程序員才知道的8種高級(jí)Python技巧,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-07-07
Flask框架實(shí)現(xiàn)debug模式下計(jì)算pin碼
pin碼也就是flask在開(kāi)啟debug模式下,進(jìn)行代碼調(diào)試模式的進(jìn)入密碼。本文為大家整理了Flask框架在debug模式下計(jì)算pin碼的方法,需要的可以參考一下2023-02-02
基于python實(shí)現(xiàn)檢索標(biāo)記敏感詞并輸出
這篇文章主要介紹了基于python實(shí)現(xiàn)檢索敏感詞并輸出,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-05-05
Python實(shí)現(xiàn)yaml與json文件批量互轉(zhuǎn)
這篇文章主要為大家詳細(xì)介紹了如何利用Python語(yǔ)言實(shí)現(xiàn)yaml與json文件的批量互轉(zhuǎn),文中的示例代碼講解詳細(xì),感興趣的小伙伴可以動(dòng)手嘗試一下2022-07-07
DRF之請(qǐng)求與響應(yīng)的實(shí)現(xiàn)
本文主要介紹了DRF請(qǐng)求與響應(yīng)的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-07-07
python實(shí)現(xiàn)實(shí)時(shí)監(jiān)控文件的方法
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)實(shí)時(shí)監(jiān)控文件的3種方法,感興趣的小伙伴們可以參考一下2016-08-08
Python+pyplot繪制帶文本標(biāo)注的柱狀圖方法
今天小編就為大家分享一篇Python+pyplot繪制帶文本標(biāo)注的柱狀圖方法,具有很好的價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-07-07
Python入門(mén)教程(二十)Python的Lambda表達(dá)式
這篇文章主要介紹了Python入門(mén)教程(二十)Python的Lambda表達(dá)式,lambda表達(dá)式是一行的函數(shù)。它們?cè)谄渌Z(yǔ)言中也被稱(chēng)為匿名函數(shù),lambda表達(dá)式非常有用,可以讓代碼簡(jiǎn)單,簡(jiǎn)潔,需要的朋友可以參考下2023-04-04
python實(shí)現(xiàn)批量移動(dòng)文件
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)批量移動(dòng)文件,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-04-04

