10個(gè)Python中python_docx庫(kù)的實(shí)用案例分享
在日常辦公和文檔處理中,Word文檔是我們最常用的格式之一。Python作為強(qiáng)大的編程語(yǔ)言,通過(guò)python - docx庫(kù),能夠?qū)崿F(xiàn)對(duì)Word文檔的各種自動(dòng)化操作,極大地提高工作效率。本文將分享多個(gè)實(shí)用案例,帶你領(lǐng)略Python與Word的完美結(jié)合。
1. 創(chuàng)建簡(jiǎn)單的Word文檔
from docx import Document
def create_simple_doc():
doc = Document()
doc.add_heading('這是一個(gè)新的Word文檔', level=1)
doc.add_paragraph('這是一段示例文本。')
doc.save('simple_doc.docx')
create_simple_doc()
print("簡(jiǎn)單Word文檔創(chuàng)建成功!")
解釋
此腳本使用python - docx庫(kù)創(chuàng)建了一個(gè)新的Word文檔。首先,導(dǎo)入Document類,它是操作Word文檔的核心類。接著,創(chuàng)建一個(gè)Document對(duì)象,使用add_heading方法添加了一個(gè)一級(jí)標(biāo)題,add_paragraph方法添加了一段文本,最后使用save方法保存文檔。對(duì)于需要快速生成簡(jiǎn)單模板文檔的場(chǎng)景,這個(gè)功能非常實(shí)用。
2. 在文檔中插入圖片
from docx import Document
from docx.shared import Inches
def insert_image():
doc = Document()
doc.add_heading('插入圖片示例', level=1)
doc.add_paragraph('以下是插入的圖片:')
doc.add_picture('example.jpg', width=Inches(4))
doc.save('image_doc.docx')
insert_image()
print("圖片成功插入到Word文檔!")
解釋
該腳本展示了如何在Word文檔中插入圖片。通過(guò)add_picture方法實(shí)現(xiàn),其中width參數(shù)使用Inches類來(lái)指定圖片的寬度,讓圖片大小符合排版需求。在制作產(chǎn)品介紹文檔、技術(shù)報(bào)告等需要圖文并茂的場(chǎng)景中,這個(gè)功能可以使文檔更加生動(dòng)直觀。
3. 批量替換文檔中的文本
from docx import Document
def replace_text(file_path, old_text, new_text):
doc = Document(file_path)
for paragraph in doc.paragraphs:
if old_text in paragraph.text:
paragraph.text = paragraph.text.replace(old_text, new_text)
for table in doc.tables:
for row in table.rows:
for cell in row.cells:
if old_text in cell.text:
cell.text = cell.text.replace(old_text, new_text)
doc.save(file_path)
replace_text('example.docx', '舊文本', '新文本')
print("文本替換成功!")
解釋
此腳本可以批量替換Word文檔中的文本。它遍歷文檔中的段落和表格中的單元格,一旦發(fā)現(xiàn)包含指定的舊文本,就將其替換為新文本。在處理大量相似文檔,需要修改其中固定內(nèi)容時(shí),這個(gè)功能可以節(jié)省大量時(shí)間。
4. 提取文檔中的文本內(nèi)容
from docx import Document
def extract_text(file_path):
doc = Document(file_path)
text = ""
for paragraph in doc.paragraphs:
text += paragraph.text + "\n"
for table in doc.tables:
for row in table.rows:
for cell in row.cells:
text += cell.text + "\n"
return text
extracted_text = extract_text('example.docx')
print(extracted_text)
解釋
該腳本用于提取Word文檔中的所有文本內(nèi)容,包括段落和表格中的文字。在需要對(duì)文檔內(nèi)容進(jìn)行分析、統(tǒng)計(jì)詞頻等操作時(shí),首先要獲取文檔中的文本,這個(gè)功能就提供了基礎(chǔ)支持。
5. 設(shè)置文檔的頁(yè)面布局
from docx import Document
from docx.shared import Cm
def set_page_layout():
doc = Document()
section = doc.sections[0]
section.page_width = Cm(21)
section.page_height = Cm(29.7)
section.left_margin = Cm(2.54)
section.right_margin = Cm(2.54)
section.top_margin = Cm(2.54)
section.bottom_margin = Cm(2.54)
doc.save('layout_doc.docx')
set_page_layout()
print("頁(yè)面布局設(shè)置成功!")
解釋
這個(gè)腳本用于設(shè)置Word文檔的頁(yè)面布局,包括頁(yè)面大小和頁(yè)邊距。通過(guò)section對(duì)象來(lái)調(diào)整相關(guān)屬性,使用Cm類來(lái)指定長(zhǎng)度單位為厘米。在排版正式文檔,如論文、商務(wù)報(bào)告時(shí),合適的頁(yè)面布局可以提升文檔的專業(yè)性和美觀度。
6. 在文檔中添加表格
from docx import Document
def add_table():
doc = Document()
doc.add_heading('示例表格', level=1)
table = doc.add_table(rows=3, cols=3)
table.style = 'Table Grid'
hdr_cells = table.rows[0].cells
hdr_cells[0].text = '列1'
hdr_cells[1].text = '列2'
hdr_cells[2].text = '列3'
for i in range(1, 3):
row_cells = table.rows[i].cells
row_cells[0].text = f'第{i}行,第1列'
row_cells[1].text = f'第{i}行,第2列'
row_cells[2].text = f'第{i}行,第3列'
doc.save('table_doc.docx')
add_table()
print("表格成功添加到Word文檔!")
解釋
該腳本展示了在Word文檔中創(chuàng)建表格并填充內(nèi)容的過(guò)程。使用add_table方法創(chuàng)建一個(gè)3行3列的表格,設(shè)置表格樣式為Table Grid,然后分別對(duì)表頭和表格內(nèi)容進(jìn)行填充。在制作數(shù)據(jù)對(duì)比文檔、項(xiàng)目進(jìn)度表等場(chǎng)景中,添加表格可以清晰地展示數(shù)據(jù)。
7. 設(shè)置文本的字體格式
from docx import Document
from docx.shared import Pt
from docx.enum.text import WD_COLOR_INDEX
def set_font_style():
doc = Document()
p = doc.add_paragraph('這是一段設(shè)置了字體格式的文本。')
run = p.runs[0]
run.font.name = '宋體'
run.font.size = Pt(12)
run.font.bold = True
run.font.italic = True
run.font.underline = True
run.font.color.rgb = RGBColor(0, 0, 255)
run.font.highlight_color = WD_COLOR_INDEX.YELLOW
doc.save('font_style_doc.docx')
set_font_style()
print("字體格式設(shè)置成功!")
解釋
此腳本用于設(shè)置Word文檔中一段文本的字體格式。通過(guò)run對(duì)象來(lái)操作字體屬性,包括字體名稱、字號(hào)、加粗、傾斜、下劃線、顏色和突出顯示顏色等。在需要強(qiáng)調(diào)文檔中的某些關(guān)鍵內(nèi)容時(shí),設(shè)置獨(dú)特的字體格式可以吸引讀者的注意力。
8. 為文檔添加頁(yè)眉頁(yè)腳
from docx import Document
def add_header_footer():
doc = Document()
section = doc.sections[0]
header = section.header
footer = section.footer
header.paragraphs[0].text = '這是頁(yè)眉內(nèi)容'
footer.paragraphs[0].text = '這是頁(yè)腳內(nèi)容,頁(yè)碼:'
footer.add_page_number()
doc.save('header_footer_doc.docx')
add_header_footer()
print("頁(yè)眉頁(yè)腳添加成功!")
解釋
該腳本為Word文檔添加了頁(yè)眉和頁(yè)腳。通過(guò)section對(duì)象獲取頁(yè)眉和頁(yè)腳,然后在頁(yè)眉和頁(yè)腳的段落中添加文本,并在頁(yè)腳中添加頁(yè)碼。在制作多頁(yè)文檔時(shí),頁(yè)眉頁(yè)腳可以提供文檔的標(biāo)識(shí)信息和頁(yè)碼,方便閱讀和管理。
9. 合并多個(gè)Word文檔
from docx import Document
def merge_docs(doc_paths, output_path):
result_doc = Document()
for doc_path in doc_paths:
sub_doc = Document(doc_path)
for element in sub_doc.element.body:
result_doc.element.body.append(element)
result_doc.save(output_path)
doc_paths = ['doc1.docx', 'doc2.docx']
merge_docs(doc_paths,'merged_doc.docx')
print("多個(gè)Word文檔合并成功!")
解釋
此腳本可以將多個(gè)Word文檔合并成一個(gè)。它遍歷每個(gè)輸入文檔的內(nèi)容元素,將其追加到結(jié)果文檔中,最后保存合并后的文檔。在整理項(xiàng)目文檔、匯編報(bào)告等場(chǎng)景中,合并多個(gè)相關(guān)文檔可以提高文檔的整體性和可讀性。
10. 從模板生成個(gè)性化文檔
from docx import Document
def generate_personalized_doc(template_path, data):
doc = Document(template_path)
for paragraph in doc.paragraphs:
for key, value in data.items():
if key in paragraph.text:
paragraph.text = paragraph.text.replace(key, value)
for table in doc.tables:
for row in table.rows:
for cell in row.cells:
for key, value in data.items():
if key in cell.text:
cell.text = cell.text.replace(key, value)
doc.save('personalized_doc.docx')
data = {'姓名': '張三', '年齡': '25', '職位': '工程師'}
generate_personalized_doc('template.docx', data)
print("個(gè)性化文檔生成成功!")
解釋
該腳本基于模板文檔生成個(gè)性化文檔。通過(guò)替換模板中的占位符(如姓名、年齡等)為實(shí)際數(shù)據(jù),實(shí)現(xiàn)快速生成個(gè)性化的文檔。在制作批量的合同、邀請(qǐng)函、簡(jiǎn)歷等場(chǎng)景中,利用模板生成個(gè)性化文檔可以大大提高工作效率。
通過(guò)以上這些案例,我們可以看到python - docx庫(kù)在處理Word文檔時(shí)的強(qiáng)大功能和靈活性。無(wú)論是簡(jiǎn)單的文檔創(chuàng)建,還是復(fù)雜的文檔內(nèi)容處理和格式設(shè)置,Python都能輕松應(yīng)對(duì)。
到此這篇關(guān)于10個(gè)Python中python_docx庫(kù)的實(shí)用案例分享的文章就介紹到這了,更多相關(guān)python_docx使用內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python實(shí)現(xiàn)簡(jiǎn)單的計(jì)時(shí)器功能函數(shù)
這篇文章主要介紹了python實(shí)現(xiàn)簡(jiǎn)單的計(jì)時(shí)器功能函數(shù),涉及Python操作時(shí)間的技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-03-03
PyTorch中torch.tensor()和torch.to_tensor()的區(qū)別
在Pytorch中Tensor和tensor都用于生成新的張量,但二者并不相同,下面這篇文章主要給大家介紹了關(guān)于PyTorch中torch.tensor()和torch.to_tensor()區(qū)別的相關(guān)資料,需要的朋友可以參考下2023-01-01
Python使用Selenium模擬瀏覽器自動(dòng)操作功能
這篇文章主要介紹了Python使用Selenium模擬瀏覽器自動(dòng)操作功能,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-09-09
一文教你用Python中progress庫(kù)實(shí)現(xiàn)進(jìn)度條
這篇文章主要為大家詳細(xì)介紹了如何通過(guò)Python中的progress庫(kù)實(shí)現(xiàn)進(jìn)度條的繪制,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-03-03
使用Windows批處理和WMI設(shè)置Python的環(huán)境變量方法
今天小編就為大家分享一篇使用Windows批處理和WMI設(shè)置Python的環(huán)境變量方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-08-08
Python生成器generator和yield關(guān)鍵字的使用
生成器是一種特殊的迭代器,可以通過(guò)列表推導(dǎo)式的修改或者使用yield關(guān)鍵字來(lái)創(chuàng)建,生成器函數(shù)能夠在迭代時(shí)動(dòng)態(tài)產(chǎn)生值,而不是一次性生成所有值,這有助于節(jié)省內(nèi)存,yield關(guān)鍵字使函數(shù)執(zhí)行暫停并保存當(dāng)前狀態(tài),下次調(diào)用時(shí)從停止處繼續(xù)執(zhí)行2024-09-09
Python Numpy之linspace用法說(shuō)明
這篇文章主要介紹了Python Numpy之linspace用法說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-04-04
python 使用Tensorflow訓(xùn)練BP神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn)鳶尾花分類
這篇文章主要介紹了python 使用Tensorflow訓(xùn)練BP神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn)鳶尾花分類,幫助大家更好的利用python進(jìn)行深度學(xué)習(xí),感興趣的朋友可以了解下2021-05-05

