python_docx制作word文檔詳細使用說明【轉】
阿新 • • 發佈:2018-11-01
styles 添加 情況下 方式 word文檔 ble har 功能 所有
目前網上對這一個庫的介紹得很少,很零散,所以很多功能我是盡量參考其官網,但是官網上面很多功能目前只有說明文檔,而代碼並還沒有及時更新,以至於按照官網上面做了,python卻報錯。比如:自定義表格的高度。下面,我對我在此次工作任務中,所遇到的一些基本的功能分別做一下說明與展示。我用的是python2.7
1.創建文檔
1 2 |
from docx import Document
document = Document()
|
若括號裏面寫入word文件路徑,則表明打開該文件
2.添加標題
1 |
document.add_heading( ‘This is my title‘ , 0 )
|
但是,這個有個問題是標題下面有一條橫線,對於重度強迫癥的我是無法容忍的。所以我直接添加段落文字表示標題
3.添加段落文字
1 2 3 4 5 6 7 8 9 |
from docx.shared import RGBColor
from docx.shared import Pt
from docx.enum.text import WD_ALIGN_PARAGRAPH
document.styles[ ‘Normal‘ ].font.name = u ‘黑體‘ #可換成word裏面任意字體
p = document.add_paragraph() p.paragraph_format.alignment = WD_ALIGN_PARAGRAPH.CENTER #段落文字居中設置
run = p.add_run(u ‘我添加的段落文字‘ )
run.font.color.rgb = RGBColor( 54 , 95 , 145 ) #顏色設置,這裏是用RGB顏色
run.font.size = Pt( 36 ) #字體大小設置,和word裏面的字號相對應
|
4.添加圖片
1 |
pic = document.add_picture( ‘pic.png‘ ,width = Inches( 1.5 )) #圖片和python文件不在同一個文件夾下面的時候,要補全文件地址
|
默認情況下,圖片在文檔中是左對齊的,如果要對圖片進行居中顯示,在網上找了很多方法都不可行,最後找到一種方法是直接加入以下代碼:
1 2 |
last_paragraph = document.paragraphs[ - 1 ]
last_paragraph.alignment = WD_ALIGN_PARAGRAPH.CENTER #圖片居中設置
|
5.添加表格
1 |
table = document.add_table(rows = 2 , cols = 3 ,style = "Table Grid" ) #添加2行3列的表格
|
表格的style有很多種,默認情況下表格是沒有邊框的,Table Grid格式是普通的黑色邊框表格,更多表格樣式可以百度。但是,我們很多時候希望對表格進行更為漂亮的修改,比如自定義表格某一列的寬度,表格的高度。
1 2 3 4 |
from docx.shared import Inches
# table.autofit = False
col = table.columns[ 1 ]
col.width = Inches( 5 ) #設置表格第2列寬度為Inches(5) 默認情況下表格是自動適應文檔寬度
|
對於表格的高度官網上面有說明文檔,但是其庫函數的代碼沒有更新,所以找了很久才找到下面一種方法,以後官網要是更新了代碼可以按照官網上面的方法進行設置更為簡單一些。
1 2 3 4 5 6 7 8 |
from docx.oxml.ns import qn
from docx.oxml import OxmlElement
for i in range (rows): #遍歷表格的所有行
tr = table.rows[i]._tr
trPr = tr.get_or_add_trPr()
trHeight = OxmlElement( ‘w:trHeight‘ )
trHeight. set (qn( ‘w:val‘ ), "450" )
trPr.append(trHeight) #表格的每一行進行高度設置,450這個值可以任意修改
|
6.表格裏面添加文字
1 2 3 4 5 |
heading_cells = table.rows[ 0 ].cells #將表格的第一行設置為表頭
for i in range (cols): #cols為表格的列數
p = heading_cells[i].paragraphs[ 0 ] #利用段落功能添加文字
run = p.add_run(Arr[i]) #把表頭放在一個數組裏面的,這樣方便賦值
p.paragraph_format.alignment = WD_ALIGN_PARAGRAPH.CENTER #居中設置,默認是左對齊
|
還有一種直接對表格賦值的方式:
1 |
table.cell(i,j).text = u ‘表格文字‘ #在表格的i行j列設置文字,默認文字在表格中是左對齊
|
7.添加表格行
1 |
row = table.add_row()
|
若需要對添加的行進行賦值,其方法和上面是一樣的。
8.文檔的保存
1 |
document.save( ‘test.docx‘ ) #可以設置其他路徑
|
整體代碼如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
from docx import Document
from docx.oxml.ns import qn
from docx.oxml import OxmlElement
from docx.shared import RGBColor
from docx.shared import Pt
from docx.enum.text import WD_ALIGN_PARAGRAPH
from docx.shared import Inches
document = Document()
document.add_heading( ‘This is my title‘ , 0 )
document.add_paragraph( ‘my paragraph‘ )
document.styles[ ‘Normal‘ ].font.name = u ‘黑體‘
p = document.add_paragraph()
p.paragraph_format.alignment = WD_ALIGN_PARAGRAPH.CENTER
run = p.add_run(u ‘我添加的段落文字 ‘ )
run.font.color.rgb = RGBColor( 54 , 95 , 145 )
run.font.size = Pt( 36 )
pic = document.add_picture( ‘logo1.PNG‘ )
last_paragraph = document.paragraphs[ - 1 ]
last_paragraph.alignment = WD_ALIGN_PARAGRAPH.CENTER # 圖片居中設置
rows = 2
cols = 3
table = document.add_table(rows = rows, cols = cols,style = "Table Grid" ) # 添加2行3列的表格
for i in range (rows):
tr = table.rows[i]._tr
trPr = tr.get_or_add_trPr()
trHeight = OxmlElement( ‘w:trHeight‘ )
trHeight. set (qn( ‘w:val‘ ), "450" )
trPr.append(trHeight) # 表格高度設置
# table.autofit = False
col = table.columns[ 1 ]
col.width = Inches( 5 )
arr = [u ‘序號‘ ,u "類型" ,u "詳細描述" ]
heading_cells = table.rows[ 0 ].cells
for i in range (cols):
p = heading_cells[i].paragraphs[ 0 ]
run = p.add_run(arr[i])
run.font.color.rgb = RGBColor( 54 , 95 , 145 ) # 顏色設置,這裏是用RGB顏色
run.font.size = Pt( 12 ) # 字體大小設置,和word裏面的字號相對應
p.paragraph_format.alignment = WD_ALIGN_PARAGRAPH.CENTER
table.cell( 1 , 1 ).text = u ‘表格文字‘
table.add_row()
document.save( ‘test1.docx‘ )
|
運行結果如下:
python_docx制作word文檔詳細使用說明【轉】