網(wǎng)站首頁(yè) 編程語(yǔ)言 正文
寫在前面
python-docx 不支持 doc 文檔,一定要注意該點(diǎn),如果使用 doc 文檔,需要提前將其用 Word 相關(guān)軟件轉(zhuǎn)換為 docx 格式。 doc 和 docx 是存在本質(zhì)差異的,一個(gè)是二進(jìn)制,另一個(gè) XML 格式的文件。
模塊的安裝 pip install python-docx
。
以下網(wǎng)址首先準(zhǔn)備好
- 官方手冊(cè):https://python-docx.readthedocs.io/en/latest/index.html
- pypi 官方地址:https://pypi.org/project/python-docx/
資料準(zhǔn)備完畢,即可進(jìn)入編碼環(huán)節(jié)。
創(chuàng)建一個(gè)文檔
第一個(gè)需求,創(chuàng)建一個(gè)文檔,并在里面寫入各種信息。
先實(shí)現(xiàn)第一步,寫入一個(gè)標(biāo)題
注意下文中的 add_heading()
函數(shù)的用法。
from docx import Document # 創(chuàng)建 Document 對(duì)象,等價(jià)于在電腦上打開(kāi)一個(gè) Word 文檔 document = Document() # 在 Word 文檔中添加一個(gè)標(biāo)題 document.add_heading('這是一個(gè)標(biāo)題',level=0) # 保存文檔 document.save('demo.docx')
添加文字段落
注意下文中 add_paragraph()
函數(shù)添加段落,使用 add_run()
追加文本
from docx import Document # 創(chuàng)建 Document 對(duì)象,等價(jià)于在電腦上打開(kāi)一個(gè) Word 文檔 document = Document() # 在 Word 文檔中添加一個(gè)標(biāo)題 document.add_heading('這是一個(gè)標(biāo)題', level=0) # 文檔添加段落 p = document.add_paragraph('這是白給的段落') # 添加帶樣式的文字 # 添加段落,文本可以包含制表符(\t)、換行符(\n)或回車符(\r)等 # add_run() 在段落后面追加文本 p.add_run('\n我傾斜了').italic = True # 添加一個(gè)傾斜文字 p.add_run('\n我加粗了').bold = True # 添加一個(gè)加粗文字 # 保存文檔 document.save('demo.docx')
在段落前面增加文字
p.add_run('\n我傾斜了').italic = True # 添加一個(gè)傾斜文字 p.add_run('\n我加粗了').bold = True # 添加一個(gè)加粗文字 # 段落前面插入內(nèi)容 prep_p = p.insert_paragraph_before('段落之前插入內(nèi)容')
段落還可以添加分頁(yè)符,代碼如下所示:
# 段落前面插入內(nèi)容 prep_p = p.insert_paragraph_before('段落之前插入內(nèi)容') document.add_page_break() p1 = document.add_paragraph('新頁(yè)新段落')
列表的添加
無(wú)序列表的添加
# 添加列表(前面一個(gè)小圓點(diǎn)) document.add_paragraph('我前面是小圓點(diǎn)', style='List Bullet') # 添加列表(前面一個(gè)小圓點(diǎn)) document.add_paragraph('第二個(gè)小圓點(diǎn)', style='List Bullet')
有序列表的添加
# 添加列表(前面數(shù)字) document.add_paragraph('我前面是數(shù)字', style='List Number') # 添加列表(前面數(shù)字) document.add_paragraph('第二個(gè)數(shù)字', style='List Number')
圖片的添加
Document 對(duì)象具備的方法如下所示:
-
add_heading(self, text='', level=1)
:添加標(biāo)題; -
add_page_break(self)
:分頁(yè)符; -
add_paragraph(self, text='', style=None)
:添加段落; -
add_picture(self, image_path_or_stream, width=None, height=None)
:添加圖片; -
add_section(self, start_type=2)
:添加節(jié); -
add_table(self, rows, cols, style=None)
:添加表格;
本部分重點(diǎn)學(xué)習(xí) add_picture()
方法。
document.add_picture(r"../9.png", width=Inches(1))
add_picture()
函數(shù)中參數(shù) image_path_or_stream
可以為相對(duì)地址或者絕對(duì)地址,也可以是一個(gè)圖片數(shù)據(jù)流,上述代碼中 Inches
表示英寸,除此之外, python-docx
還提供了厘米 (Cm) ,如設(shè)置 1厘米: Cm(1) ,使用的時(shí)候需要提前導(dǎo)入 from docx.shared import Inches, Cm
。
表格添加
使用 add_table()
函數(shù),可以在 Word 文檔中添加表格。
p1 = document.add_paragraph('新頁(yè)新段落') # 添加一個(gè) 2×2 表格 table = document.add_table(rows=2, cols=2) # 獲取第1行第2列單元格 cell = table.cell(0, 1) # 設(shè)置單元格文本 cell.text = '第1行第2列' # 獲取第2行 row = table.rows[1] row.cells[0].text = '橡皮擦' row.cells[1].text = '喬喻'
學(xué)習(xí)的時(shí)候注意一下相關(guān)注釋,即可掌握該部分內(nèi)容。
相關(guān)樣式設(shè)置
設(shè)置格式需要用 add_run()
,直接使用 add_paragraph()
生成的段落不能直接設(shè)置字體等樣式。
# 模塊的導(dǎo)入 from docx.shared import Pt, Cm, Inches from docx.oxml.ns import qn from docx.enum.text import WD_ALIGN_PARAGRAPH from docx.shared import RGBColor # 一級(jí)標(biāo)題 level=0 head0 = document.add_heading(level=0) # 標(biāo)題居中 head0.alignment = WD_ALIGN_PARAGRAPH.CENTER title_run = head0.add_run('這是一個(gè)居中的標(biāo)題', ) title_run.font.size = Pt(24) # 標(biāo)題英文字體 title_run.font.name = 'Times New Roman' # 標(biāo)題中文字體 title_run.element.rPr.rFonts.set(qn('w:eastAsia'), '微軟雅黑') # 字體顏色 title_run.font.color.rgb = RGBColor(4, 60, 169)
其中 WD_ALIGN_PARAGRAPH
對(duì)象表示段落對(duì)其的方式,其值包括如下內(nèi)容
-
WD_ALIGN_PARAGRAPH. LEFT
:左對(duì)齊; -
WD_ALIGN_PARAGRAPH. CENTER
:居中對(duì)其; -
WD_ALIGN_PARAGRAPH. RIGHT
:右對(duì)齊; -
WD_ALIGN_PARAGRAPH. JUSTIFY
:兩端對(duì)齊;
行距,段間距 line_spacing
屬性用來(lái)設(shè)置行距, space_before
表示段前距, space_after
表示段后距。
斜體,下劃線,粗體設(shè)置
font.italic = True #設(shè)置斜體 font.underline = True #設(shè)置下劃線 font.bold = True #設(shè)置粗體
首行縮進(jìn) paragraph_format_line_indent
可以設(shè)置縮進(jìn)值。
其它設(shè)置 除了上述內(nèi)容外,還可以通過(guò) document.styles.add_style('textstyle', WD_STYLE_TYPE. PARAGRAPH)
,使用 add_style()
方法創(chuàng)建新的樣式對(duì)象,后續(xù)就可以通過(guò)提供的屬性進(jìn)行樣式設(shè)置,設(shè)置字體使用 font.size
,設(shè)置字體顏色為 font.color
。
然后在添加段落的時(shí)候,就可以應(yīng)用該屬性了。
from docx.shared import RGBColor from docx.enum.style import WD_STYLE_TYPE style = document.styles.add_style('textstyle', WD_STYLE_TYPE.PARAGRAPH) # 字體大小 style.font.size = Pt(16) # 字體顏色 style.font.color.rgb = RGBColor(66, 100, 0) p1 = document.add_paragraph('神人橡皮擦',style=style)
頁(yè)眉和頁(yè)腳
頁(yè)眉和頁(yè)腳可以直接設(shè)置,參考代碼如下所示
header = document.sections[0].header header.add_paragraph('橡皮擦的頁(yè)眉')
頁(yè)腳設(shè)置
footer = document.sections[0].footer
原文鏈接:https://juejin.cn/post/7054355419170340877
相關(guān)推薦
- 2022-03-27 c++模擬實(shí)現(xiàn)string類詳情_(kāi)C 語(yǔ)言
- 2022-10-11 云服務(wù)器搭建redis主從復(fù)制以及哨兵模式(附踩坑記錄)
- 2024-04-07 mybatis-plus插入數(shù)據(jù)庫(kù)值無(wú)效(插入不對(duì),沒(méi)有插入數(shù)據(jù)庫(kù)默認(rèn)值,int的類型的null會(huì)變
- 2023-03-23 Flutter生命周期超詳細(xì)講解_Android
- 2022-08-22 Android中關(guān)于Binder常見(jiàn)面試問(wèn)題小結(jié)_Android
- 2022-03-15 When allowCredentials is true, allowedOrigins cann
- 2022-03-03 react引入antd按需加載警告“You are using a whole package of
- 2021-12-06 Flutter多項(xiàng)選擇彈窗實(shí)現(xiàn)詳解_Android
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲(chǔ)小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過(guò)濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯(cuò)誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡(jiǎn)單動(dòng)態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對(duì)象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支