使用Python創(chuàng)建帶邊框樣式的Word表格的代碼實(shí)現(xiàn)
引言
在生成Word文檔時(shí),表格的邊框樣式是提升專業(yè)度的重要細(xì)節(jié)。本文將通過一個(gè)實(shí)例,展示如何使用python-docx庫(kù)為表格添加上下邊框加粗和內(nèi)部邊框隱藏的復(fù)雜樣式。代碼將實(shí)現(xiàn)以下效果:
- 表格位于頁(yè)面底部
- 表格首行和末行的上下邊框加粗
- 隱藏內(nèi)部水平線
實(shí)現(xiàn)步驟
1. 安裝依賴庫(kù)
確保已安裝python-docx庫(kù):
pip install python-docx==0.8.10 # 建議使用兼容版本
2. 核心代碼解析
2.1 定義邊框設(shè)置函數(shù)
from docx.oxml import OxmlElement
from docx.oxml.ns import qn
def set_cell_border(cell, **kwargs):
tc = cell._tc
tcPr = tc.get_or_add_tcPr()
tcBorders = tcPr.first_child_found_in("w:tcBorders")
if tcBorders is None:
tcBorders = OxmlElement('w:tcBorders')
tcPr.append(tcBorders)
for edge in ('start', 'top', 'end', 'bottom', 'insideH', 'insideV'):
edge_data = kwargs.get(edge)
if edge_data:
tag = f'w:{edge}'
element = tcBorders.find(qn(tag))
if element is None:
element = OxmlElement(tag)
tcBorders.append(element)
for key in ["sz", "val", "color", "space", "shadow"]:
if key in edge_data:
element.set(qn(f'w:{key}'), str(edge_data[key]))
功能說明:
- 通過
OxmlElement操作Word底層XML - 支持設(shè)置
top/bottom等6個(gè)方向的邊框 - 參數(shù)含義:
sz:線寬(單位:磅)val:邊框類型(single實(shí)線/none無邊框)color:十六進(jìn)制顏色值
2.2 創(chuàng)建表格并設(shè)置樣式
doc = Document()
# 創(chuàng)建3行1列的表格
table = doc.add_table(rows=3, cols=1)
table_rows = table.rows
# 設(shè)置各單元格樣式
for row_id, row in enumerate(table.rows):
if row_id == 0: # 首行
for cell in row.cells:
set_cell_border(
cell,
top={"sz": 16, "val": "single", "color": "#000000"}, # 上邊框加粗
bottom={"sz": 12, "val": "none"}, # 底邊無邊框
insideH={"sz": 12, "val": "single", "color": "#FFFFFF"} # 隱藏內(nèi)部線
)
elif row_id == 1: # 中間行
for cell in row.cells:
set_cell_border(
cell,
top={"sz": 12, "val": "none"},
bottom={"sz": 12, "val": "single"},
insideH={"sz": 12, "val": "single", "color": "#FFFFFF"}
)
else: # 末行
for cell in row.cells:
set_cell_border(
cell,
top={"sz": 12, "val": "none"},
bottom={"sz": 16, "val": "single", "color": "#000000"}, # 下邊框加粗
insideH={"sz": 12, "val": "single", "color": "#FFFFFF"}
)
2.3 控制表格位置
# 通過段落間距將表格推至頁(yè)面底部
p = doc.add_paragraph()
run = p.add_run('')
p.paragraph_format.space_after = Pt(500) # 調(diào)整間距值
效果展示
生成的表格樣式
| 內(nèi)容 | 樣式說明 |
|---|---|
| 第一行 | 上邊框16磅加粗,下邊框透明 |
| 中間行 | 上下邊框12磅實(shí)線,內(nèi)部線隱藏 |
| 最后一行 | 下邊框16磅加粗 |
注意事項(xiàng)
邊框邏輯:
insideH控制行間水平線- 通過設(shè)置
color為白色可隱藏內(nèi)部線 - 加粗效果通過增大
sz值實(shí)現(xiàn)
版本兼容性:
- 推薦使用
python-docx==0.8.10版本 - 高版本可能需要調(diào)整導(dǎo)入路徑:
- 推薦使用
from docx.oxml.shared import OxmlElement # 0.8.11+版本
表格定位技巧:
- 通過增大
space_after段落間距實(shí)現(xiàn) - 更精確的底部對(duì)齊需要使用分節(jié)符設(shè)置頁(yè)邊距(參考本文開頭的代碼)
- 通過增大
完整代碼
# 完整代碼見本文開頭的代碼示例 # 保存后運(yùn)行:python your_script.py
擴(kuò)展閱讀
通過本文的實(shí)現(xiàn),您可以快速掌握:
- Word表格的底層XML操作技巧
- 復(fù)雜邊框樣式的程序化實(shí)現(xiàn)
- 文檔元素的布局控制方法
這篇文章將代碼功能、實(shí)現(xiàn)原理和注意事項(xiàng)結(jié)合,適合Python開發(fā)者快速上手表格樣式設(shè)置。如需進(jìn)一步優(yōu)化,可以添加:
- 文檔分節(jié)符實(shí)現(xiàn)精確底部對(duì)齊
- 圖片印章的添加方法
- 頁(yè)眉頁(yè)腳的完整實(shí)現(xiàn)
希望本文能幫助您提升Python文檔處理能力!
from docx import Document
from docx.shared import Pt
from docx.oxml import OxmlElement
from docx.oxml.ns import qn
def set_cell_border(cell, **kwargs):
tc = cell._tc
tcPr = tc.get_or_add_tcPr()
tcBorders = tcPr.first_child_found_in("w:tcBorders")
if tcBorders is None:
tcBorders = OxmlElement('w:tcBorders')
tcPr.append(tcBorders)
for edge in ('start', 'top', 'end', 'bottom', 'insideH', 'insideV'):
edge_data = kwargs.get(edge)
if edge_data:
tag = 'w:{}'.format(edge)
element = tcBorders.find(qn(tag))
if element is None:
element = OxmlElement(tag)
tcBorders.append(element)
for key in ["sz", "val", "color", "space", "shadow"]:
if key in edge_data:
element.set(qn('w:{}'.format(key)), str(edge_data[key]))
doc = Document()
# 添加一些文本作為占位符
p = doc.add_paragraph()
run = p.add_run('')
run.font.size = Pt(12)
# 增加段落后間距,以嘗試將接下來的表格推向頁(yè)面底部
p.paragraph_format.space_after = Pt(500) # 調(diào)整此值以適應(yīng)不同的頁(yè)面大小和內(nèi)容量
# 創(chuàng)建并添加表格
table = doc.add_table(rows=3, cols=1)
hdr_cells = table.rows[0].cells
hdr_cells[0].text = '送:區(qū)。'
hdr_cells = table.rows[1].cells
hdr_cells[0].text = '發(fā):。'
hdr_cells = table.rows[2].cells
hdr_cells[0].text = '發(fā)'
# 設(shè)置每個(gè)單元格的邊框
for row_id, row in enumerate(table.rows):
if row_id == 0:
for cell in row.cells:
set_cell_border(
cell,
top={"sz": 16, "val": "single", "color": "#000000"}, # 黑色實(shí)線上邊框
bottom={"sz": 12, "val": "none", }, # 黑色實(shí)線下邊框
start={"sz": 0, "val": "none"}, # 左邊框無邊框
end={"sz": 0, "val": "none"}, # 右邊框無邊框
insideH={"sz": 12, "val": "single", "color": "#FFFFFF"}, # 內(nèi)部水平線顏色設(shè)為白色(或選擇其他顏色以匹配背景)
)
elif row_id == 1:
for cell in row.cells:
set_cell_border(
cell,
top={"sz": 12, "val": "none", }, # 黑色實(shí)線上邊框
bottom={"sz": 12, "val": "single", "color": "#000000"}, # 黑色實(shí)線下邊框
start={"sz": 0, "val": "none"}, # 左邊框無邊框
end={"sz": 0, "val": "none"}, # 右邊框無邊框
insideH={"sz": 12, "val": "single", "color": "#FFFFFF"}, # 內(nèi)部水平線顏色設(shè)為白色(或選擇其他顏色以匹配背景)
)
else:
for cell in row.cells:
set_cell_border(
cell,
top={"sz": 12, "val": "none"}, # 黑色實(shí)線上邊框
bottom={"sz": 16, "val": "single", "color": "#000000"}, # 黑色實(shí)線下邊框
start={"sz": 0, "val": "none"}, # 左邊框無邊框
end={"sz": 0, "val": "none"}, # 右邊框無邊框
insideH={"sz": 12, "val": "single", "color": "#FFFFFF"}, # 內(nèi)部水平線顏色設(shè)為白色(或選擇其他顏色以匹配背景)
)
doc.save('11.docx')
以上就是使用Python創(chuàng)建帶邊框樣式的Word表格的代碼實(shí)現(xiàn)的詳細(xì)內(nèi)容,更多關(guān)于Python創(chuàng)建帶邊框Word表格的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Tensorflow實(shí)現(xiàn)酸奶銷量預(yù)測(cè)分析
這篇文章主要為大家詳細(xì)介紹了Tensorflow酸奶銷量預(yù)測(cè)分析,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-07-07
Python計(jì)算代碼運(yùn)行時(shí)間的四種方法
這篇文章主要為大家詳細(xì)介紹了使用Python計(jì)算代碼運(yùn)行時(shí)間的四種方法,文中的示例代碼講解詳細(xì),大家可以根據(jù)自己的需要進(jìn)行選擇2026-01-01
Python使用paramiko連接遠(yuǎn)程服務(wù)器執(zhí)行Shell命令的實(shí)現(xiàn)
這篇文章主要介紹了Python使用paramiko連接遠(yuǎn)程服務(wù)器執(zhí)行Shell命令的實(shí)現(xiàn),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-03-03
Python基于Flask框架配置依賴包信息的項(xiàng)目遷移部署
這篇文章主要介紹了Python基于Flask框架配置依賴包信息的項(xiàng)目遷移部署小技巧,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2018-03-03
Python??reduce()函數(shù)的用法示例代碼
reduce函數(shù)原本在python2中也是個(gè)內(nèi)置函數(shù),不過在python3中被移到functools模塊中,這篇文章主要介紹了Python reduce()函數(shù)的用法,需要的朋友可以參考下2023-05-05
Python IDE環(huán)境之 新版Pycharm安裝詳細(xì)教程
這篇文章主要介紹了Python IDE環(huán)境之 新版Pycharm安裝教程,本文教程給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-03-03

