python文件操作之word技巧大全
- word技巧基礎到高級操作大全
- A.準備工作
- 1. 安裝python-docx庫
- 2. 導入庫
- B.基礎操作
- 1. 創建Word文檔
- 1.1 創建文檔對象
- 1.2 添加word標題
- 1.3 添加word段落
- 1.4 設置段落樣式
- 1.5 創建有序列表
- 1.6 創建無序列表
- 1.7添加word分頁
- 1.8 添加word圖片
- 1.9 添加word表格
- 1.10 word表格處理
- 1.11 添加超鏈接
- 1.12 保存word文檔
- 2.打開現有word文檔
- 2.1 讀取段落內容
- 2.2 修改段落內容
- 2.3 讀取表格內容
- 2.4 讀取表格的值
- 2.5 寫入數據到表格
- 2.6 插入圖表
- C.內容修改與基礎樣式
- 1. 文本格式設置
- 2. 段落格式設置
- 3.修改圖片尺寸
- D.插入操作
- 1. 插入頁眉和頁腳
- 2. 插入目錄
- 3. 插入腳注和尾注
- E.高級復雜操作
- 遍歷所有段落替換文本
- 清空指定段落
- 遍歷所有表格替換文本
- 刪除第一個表格
- F. 典型案例分享
- 1.批量處理文檔替換文檔內容
- 2.提取表格中的數據替換到word
- 3.提取word中的數據替換到表格
word技巧基礎到高級操作大全
在本教程中,我們將學習如何使用Python對Word文檔進行操作,包括添加、修改、格式化等內容。我們將使用python-docx庫來完成這些操作。以下是本教程的內容概覽:
A.準備工作
1. 安裝python-docx庫
首先,確保你的Python環境已經安裝了python-docx庫。如果沒有安裝,可以通過以下命令進行安裝:
pip install python-docx
2. 導入庫
在Python腳本中,首先導入docx庫:
from docx import Document
B.基礎操作
1. 創建Word文檔
學習前請先熟記一下字段代表含義
1.1 創建文檔對象
創建一個新的Word文檔:
doc = Document()
1.2 添加word標題
# 添加標題(級別0-4)
doc.add_heading('主標題', level=0)
doc.add_heading('二級標題', level=2) # [[3, 6]]
1.3 添加word段落
paragraph = doc.add_paragraph('這是一個普通段落')
run = paragraph.add_run('追加文本今天學習python處理word') # 支持分段式樣式 [[4, 19]]
paragraph.add_run('Bold text').bold = True #添加一個含有粗體文本的段落
paragraph.add_run(' and italic text.').italic = True #添加一個含有斜體文本的段落
1.4 設置段落樣式
# 設置段落樣式
para.style = 'BodyText'# 添加另一個段落并添加編號
numbered_para = doc.add_paragraph('這是編號段落。', style='ListNumber')
1.5 創建有序列表
for i in range(1, 4):doc.add_paragraph(f'列表項 {i}', style='ListNumber')
1.6 創建無序列表
for i in range(1, 4):doc.add_paragraph(f'列表項 {i}', style='ListBullet')
1.7添加word分頁
doc.add_page_break()
1.8 添加word圖片
doc.add_picture('image.png', width=docx.shared.Inches(4.0))
1.9 添加word表格
table = doc.add_table(rows=2, cols=2)
cell = table.cell(0, 0)
cell.text = '第一行第一列'
cell = table.cell(0, 1)
cell.text = '第一行第二列'
1.10 word表格處理
# 創建3行4列表格
table = doc.add_table(rows=3, cols=4, style='Light Shading Accent 1')# 填充數據
for i in range(3): row = table.rows[i]for j in range(4):row.cells[j].text = f"第{i+1}行{j+1}列"# 合并單元格
table.cell(0, 0).merge(table.cell(0, 3)) # 合并第一行 [[3, 12]]
# 刪除單元格
table._tbl.remove(cell._tc)
# 賦值單元格
cell = table.cell(0, 0)
cell.text = 'Hello'
1.11 添加超鏈接
hyperlink = doc.add_paragraph('點擊這里訪問')
add_hyperlink(hyperlink, 'http://www.example.com', '訪問網站')
1.12 保存word文檔
doc.save('python_word_tutorial.docx')
2.打開現有word文檔
doc = Document('existing.docx')
2.1 讀取段落內容
for paragraph in doc.paragraphs: #doc.paragraphs 獲取word中所有的段落 返回一個列表print(paragraph.text)for paragraph in doc.paragraphs:for run in paragraph.runs # run段落中的最小標簽 print(run.text)
2.2 修改段落內容
paragraph = doc.paragraphs[0]
paragraph.text = '這是修改后的段落。'
2.3 讀取表格內容
for table in doc.tables:for row in table.rows:for cell in row.cells:print(cell.text)# 遍歷文檔中的所有表格
for table in doc.tables: # doc.tables獲取word中所有表格 # 遍歷表格的每一行for row in table.rows:# 存儲當前行的單元格內容row_data = []# 遍歷行中的每個單元格for cell in row.cells:# 獲取單元格的文本內容并添加到列表中row_data.append(cell.text)# 打印當前行的內容print(row_data)
2.4 讀取表格的值
table_data = []
for row in doc.tables[0].rows:for cell in row.cells:table_data.append(cell.text)print(table_data)
2.5 寫入數據到表格
doc.tables[0].cell(0, 0).text = "New Value"
doc.save("example.docx")
2.6 插入圖表
from docx.shared import Incheschart = doc.add_chart({"type": "column"})
chart.add_series({"name": "Series 1", "categories": ["Sheet1", 1, 1], "values": ["Sheet1", 1, 2]})
doc.add_chart(chart, "A1")
doc.save("example.docx")
C.內容修改與基礎樣式
1. 文本格式設置
run = paragraph.runs[0]
run.font.name = '微軟雅黑' # 字體
run.font.size = Pt(14) # 字號
run.bold = True # 加粗
run.italic = False # 斜體
run.underline = True # 下劃線
run.font.color.rgb = RGBColor(0xFF, 0x00, 0x00) # 紅色 [[11, 13, 19]]
2. 段落格式設置
from docx.shared import Inchespara_format = paragraph.paragraph_format
para_format.alignment = WD_ALIGN_PARAGRAPH.CENTER # 居中對齊
para_format.left_indent = Inches(0.5) # 左縮進
para_format.line_spacing = 1.5 # 1.5倍行距
para_format.space_before = Pt(12) # 段前間距 [[6, 12]]
3.修改圖片尺寸
for rel in doc.part.rels.values():if "image" in rel.reltype:target = rel.targettarget.width = docx.shared.Inches(2.0)target.height = docx.shared.Inches(2.0)
D.插入操作
1. 插入頁眉和頁腳
section = doc.sections[0]
header = section.header
footer = section.footer
header.paragraphs[0].text = '這是頁眉內容'
footer.paragraphs[0].text = '這是頁腳內容'
2. 插入目錄
doc.add_heading('目錄', level=1)
doc.add_paragraph('請在此處插入目錄(手動或使用Word的目錄功能)')
3. 插入腳注和尾注
paragraph = doc.add_paragraph('這是一個包含腳注的段落。')
footnote = paragraph.add_footnote('這是腳注內容。')
E.高級復雜操作
遍歷所有段落替換文本
for para in doc.paragraphs:if '占位符' in para.text:para.text = '實際內容' # 直接替換文本para.runs[0].bold = True # 設置粗體
清空指定段落
for para in doc.paragraphs:if '需要刪除的內容' in para.text:para.clear()
遍歷所有表格替換文本
# 遍歷所有表格
for table in doc.tables:for row in table.rows:for cell in row.cells:if cell.text == "舊數據":cell.text = "新數據"
刪除第一個表格
if len(doc.tables) > 0:tbl = doc.tables[0]tbl._element.getparent().remove(tbl._element)
F. 典型案例分享
1.批量處理文檔替換文檔內容
import docx# 讀取Word文檔
doc = docx.Document("example.docx")# 批量替換文本
for para in doc.paragraphs:if "keyword" in para.text:para.text = para.text.replace("keyword", "new_value")# 保存修改后的文檔
doc.save("updated_example.docx")
2.提取表格中的數據替換到word
excel數據模版:
word文本模版:
效果模版:
from docx import Document
import pandas as pd
import osdf = pd.read_excel(r"C:\Users\liyang\Desktop\2.xlsx")
for i in range(len(df)):doc = Document(r'C:\Users\liyang\Desktop\2.docx')for j in df.columns:# print(df.loc[i,j])for pargs in doc.paragraphs:for run in pargs.runs:# print(run.text)run_text = run.text.replace(j,str(df.loc[i,j]))run.text = run_textfor table in doc.tables:for row in table.rows:for cell in row.cells:cell_text = cell.text.replace(j,str(df.loc[i,j]))cell.text = cell_textdoc.save("%d%s績效合同.docx" % (df.loc[i,'員工ID'],df.loc[i,'員工姓名']))
優化版
from docx import Document
import pandas as pd
import osdf = pd.read_excel(r"C:\Users\liyang\Desktop\2.xlsx")
for i in range(len(df)):doc = Document(r'C:\Users\liyang\Desktop\2.docx')# 遍歷所有數據列for j in df.columns:# 獲取當前單元格的值cell_value = str(df.loc[i,j])# 段落替換邏輯(新增占位符格式)for para in doc.paragraphs:for run in para.runs:# 構造標準占位符{{字段名}}placeholder = f'{{{{{j}}}}}'# 執行帶格式的替換run.text = run.text.replace(placeholder, cell_value)# 表格替換邏輯(新增占位符格式)for table in doc.tables:for row in table.rows:for cell in row.cells:# 構造標準占位符{{字段名}}placeholder = f'{{{{{j}}}}}'# 執行替換cell.text = cell.text.replace(placeholder, cell_value)# 保存文檔(保持原文件名格式)doc.save("%d%s績效合同.docx" % (df.loc[i,'員工ID'],df.loc[i,'員工姓名']))
3.提取word中的數據替換到表格
word數據模版:
提取到表格數據:
# 使用Python自動化處理(適合批量操作)
import pandas as pd
from docx import Documentdoc = Document('數據.docx')
data = []
for para in doc.paragraphs:if ':' in para.text:items = dict(item.split(': ') for item in para.text.split(' | '))data.append(items)pd.DataFrame(data).to_excel('output.xlsx', index=False)