程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

【python-docx】添加表格、合並單元格、設置樣式

編輯:Python

1.表格

1.1 添加表格

添加表格很簡單,只需要調用一下add_table()即可,返回一個Table對象,參數可以指定行、列、樣式

from docx import Document
doc = Document()
# 添加一個5行3列的表格,樣式是網格實線
table = doc.add_table(5, 3, )
doc.save('./test.docx')
1.2 添加行列
from docx import Document
from docx.shared import Cm, RGBColor, Pt
...
table.add_row() # 在最下面添加一行
table.add_column(Pt(25)) # 在最右邊添加一列並指定寬度為25磅
1.3 表格樣式
...
table.cell(1, 2).text = "冰冷的希望"
table.style.font.size = Pt(15) # 字體大小15磅
table.style.font.color.rgb = RGBColor.from_string("6495ED") # 字體顏色
table.style.paragraph_format.alignment = WD_PARAGRAPH_ALIGNMENT.LEFT # 左對齊

2.行列對象

首先是一個表格(Table),表格裡有行(Row)和列(Column),行或列裡有單元格(Cell)
python-docx中用_Row和_Column分別代表行和列,,用_Rows和_Columns表示多行多列,可以使用Table對象的rows和columns屬性獲取所有行列,如果想要訪問行列裡的單元格,可以進一步遍歷

from docx import Document
doc = Document()
table = doc.add_table(5, 3, )
print(table.rows) # 獲取所有行
print(table.columns) # 獲取所有列
# 按行遍歷單元格
for row in table.rows:
for cell in row.cells:
print(cell)
# 按列遍歷單元格
for col in table.columns:
for cell in col.cells:
print(cell)

_Rows和_Columns對象裡有一個table屬性可以返回所屬的表格對象

doc = Document()
table = doc.add_table(5, 3, )
for row in table.rows:
print(row.table)
for col in table.columns:
print(col.table)

通過上面的遍歷可以發現其實_Rows和_Columns就是分別包含Row和Column的可迭代對象,可以通過遍歷分別取出Row和Column對象,而Row和Column對象也很簡單,兩者的屬性一樣的,如下

for row in table.rows:
print(row.cells) # 所有單元格
print(row.height) # 高度
# 第2行高度改為30磅
if row._index == 2:
row.height = Pt(30)
print(row.height_rule) # 指定高度的規則
print(row.table) # 當前表格對象
print(row._index) # 下標

3.單元格對象

3.1 獲取Cell對象

python-docx中用Cell代表單元格,獲取單元格對象的方式除了上面的嵌套循環,還可以通過下標獲取

doc = Document()
table = doc.add_table(5, 3, )
# 獲取第1行第3列的單元格(下標從0開始)
cell1 = table.cell(0, 2)
3.2 修改單元格文本

如果想要修改單元格的文本,可以直接修改Cell對象的text屬性,其實它也是獲取單元格的段落然後修改,所以有兩種方式

from docx import Document
doc = Document()
table = doc.add_table(5, 3, )
# 獲取第1行第3列的單元格(下標從0開始)
cell1 = table.cell(0, 2)
cell1.text = "冰冷的希望"
cell2 = table.cell(1, 2)
paragraph= cell2.paragraphs[0]
run = paragraph.add_run("冰冰很帥")
3.3 合並單元格
...
cell3 = table.cell(2, 1)
cell4 = table.cell(3, 2)
cell3.merge(cell4)
3.4 單元格樣式

可以設置整個表格的樣式,也可以單獨設置單元格的樣式,優先顯示單元格樣式

from docx import Document
from docx.enum.text import WD_PARAGRAPH_ALIGNMENT
from docx.shared import Cm, RGBColor, Pt
...
cell2 = table.cell(1, 2)
paragraph = cell2.paragraphs[0]
run = paragraph.add_run("冰冰很帥")
# 設置單元格樣式
run.font.color.rgb = RGBColor.from_string("00FFFF") # 字體顏色
run.font.size = Cm(1) # 字體大小,1厘米
paragraph.paragraph_format.alignment = WD_PARAGRAPH_ALIGNMENT.CENTER # 居中對齊
# 設置表格樣式,但單元格樣式優先顯示
table.style.font.size = Pt(15) # 字體大小15磅
table.style.font.color.rgb = RGBColor.from_string("6495ED") # 字體顏色
table.style.paragraph_format.alignment = WD_PARAGRAPH_ALIGNMENT.LEFT # 左對齊
3.5 寬高度
...
# 以同一行或同一列的最大值為准
table.cell(0, 0).width = Cm(3)
table.rows[0].height = Cm(2)

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved