欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

使用Python創(chuàng)建帶邊框樣式的Word表格的代碼實現(xiàn)

 更新時間:2025年04月27日 11:08:01   作者:東方佑  
在生成Word文檔時,表格的邊框樣式是提升專業(yè)度的重要細(xì)節(jié)本文將通過一個實例,展示如何使用python-docx庫為表格添加上下邊框加粗和內(nèi)部邊框隱藏的復(fù)雜樣式,感興趣的小伙伴跟著小編一起來看看吧

引言

在生成Word文檔時,表格的邊框樣式是提升專業(yè)度的重要細(xì)節(jié)。本文將通過一個實例,展示如何使用python-docx庫為表格添加上下邊框加粗內(nèi)部邊框隱藏的復(fù)雜樣式。代碼將實現(xiàn)以下效果:

  • 表格位于頁面底部
  • 表格首行和末行的上下邊框加粗
  • 隱藏內(nèi)部水平線

實現(xiàn)步驟

1. 安裝依賴庫

確保已安裝python-docx庫:

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個方向的邊框
  • 參數(shù)含義:
    • sz:線寬(單位:磅)
    • val:邊框類型(single實線/none無邊框)
    • color:十六進制顏色值

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 控制表格位置

# 通過段落間距將表格推至頁面底部
p = doc.add_paragraph()
run = p.add_run('')
p.paragraph_format.space_after = Pt(500)  # 調(diào)整間距值

效果展示

生成的表格樣式

內(nèi)容樣式說明
第一行上邊框16磅加粗,下邊框透明
中間行上下邊框12磅實線,內(nèi)部線隱藏
最后一行下邊框16磅加粗

注意事項

  1. 邊框邏輯

    • insideH控制行間水平線
    • 通過設(shè)置color為白色可隱藏內(nèi)部線
    • 加粗效果通過增大sz值實現(xiàn)
  2. 版本兼容性

    • 推薦使用python-docx==0.8.10版本
    • 高版本可能需要調(diào)整導(dǎo)入路徑:
from docx.oxml.shared import OxmlElement  # 0.8.11+版本
  • 表格定位技巧

    • 通過增大space_after段落間距實現(xiàn)
    • 更精確的底部對齊需要使用分節(jié)符設(shè)置頁邊距(參考本文開頭的代碼)

完整代碼

# 完整代碼見本文開頭的代碼示例
# 保存后運行:python your_script.py

擴展閱讀

通過本文的實現(xiàn),您可以快速掌握:

  • Word表格的底層XML操作技巧
  • 復(fù)雜邊框樣式的程序化實現(xiàn)
  • 文檔元素的布局控制方法

這篇文章將代碼功能、實現(xiàn)原理和注意事項結(jié)合,適合Python開發(fā)者快速上手表格樣式設(shè)置。如需進一步優(yōu)化,可以添加:

  • 文檔分節(jié)符實現(xiàn)精確底部對齊
  • 圖片印章的添加方法
  • 頁眉頁腳的完整實現(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)

# 增加段落后間距,以嘗試將接下來的表格推向頁面底部
p.paragraph_format.space_after = Pt(500)  # 調(diào)整此值以適應(yīng)不同的頁面大小和內(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è)置每個單元格的邊框
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", },  # 黑色實線下邊框
                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", },  # 黑色實線上邊框
                bottom={"sz": 12, "val": "single", "color": "#000000"},  # 黑色實線下邊框
                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"},  # 黑色實線上邊框
                bottom={"sz": 16, "val": "single", "color": "#000000"},  # 黑色實線下邊框
                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表格的代碼實現(xiàn)的詳細(xì)內(nèi)容,更多關(guān)于Python創(chuàng)建帶邊框Word表格的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

最新評論