python-docx官方檔案地址
安裝 pip3 install python-docx
pip3 install python-docx -i https://pypi.douban.com/simple 豆瓣鏡像下載
行內物件一般包括:段落(paragraph)、圖片(inline picture)、表(table)、標題(heading)、有序串列(numbered lists)、無序串列(bullets lists)
創建檔案
from docx import Document from docx.shared import Inches document = Document() #創建基于默認“模板”的空白檔案
打開檔案
document = Document('d:/test.docx') #打開檔案
添加段落
paragraph = document.add_paragraph('段落1') #在尾部添加段落
#引數 段落文本
在段落尾部添加文本
kuai=paragraph.add_run('我是中國人') #在段落尾部添加文本
#回傳值:行內物件
paragraphs=document.paragraphs #回傳段落參考集合--串列 paragraphs[1].text="小Z同學:" #設定序號1段落的文本
回傳段落集合
s=document.paragraphs #回傳段落參考集合--串列
回傳段落總數
s=len(document.paragraphs) #回傳段落總數
回傳指定段落的文本
s=document.paragraphs[0].text #回傳指定段落的文本
設定段落樣式
paragraph.style = 'List Bullet' #設定段落樣式
paragraph =document.add_paragraph('段落4',style = 'List Bullet') #添加段落--帶段落樣式
回傳段落樣式
s=document.paragraphs #回傳段落參考集合--串列 s1=s[0].style #回傳序號0段落的樣式 print(s1)
段落對齊
需要 from docx.enum.text import WD_ALIGN_PARAGRAPH
paragraph_format = paragraph.paragraph_format #創建段落格式物件 paragraph_format.alignment = WD_ALIGN_PARAGRAPH.CENTER #段落居中對齊 paragraph_format.alignment =WD_ALIGN_PARAGRAPH.LEFT #段落左對齊 paragraph_format.alignment =WD_ALIGN_PARAGRAPH.RIGHT #段落右對齊 paragraph_format.alignment =WD_ALIGN_PARAGRAPH.JUSTIFY #段落兩端對齊
paragraphs=document.paragraphs #回傳段落參考集合--串列 paragraphs[4].paragraph_format.alignment=WD_ALIGN_PARAGRAPH.RIGHT #序號4段落右對齊
段落縮進
段落可以在左側和右側分別縮進,第一行也可以具有與段落其余部分不同的縮進,縮進的第一行有一個懸掛縮進
paragraph_format = paragraph.paragraph_format #創建段落格式物件 paragraph_format.left_indent = Inches(0.5) #段落左縮進0.5英寸 #需要 from docx.shared import Inches paragraph_format.right_indent = Pt(20) #右縮進20點 #from docx.shared import Pt paragraph_format.first_line_indent = Inches(0.5) #第一行縮進
paragraphs=document.paragraphs #回傳段落參考集合--串列
paragraphs[2].paragraph_format.first_line_indent=Cm(0.74) #序號2段落首行縮進0.74厘米
#from docx.shared import Cm
段落間距
paragraph_format = paragraph.paragraph_format #創建段落格式物件 paragraph_format.space_before = Pt(38) #設定段落前間距 paragraph_format.space_after = Pt(19) #設定段落后間距
行間距
paragraph_format = paragraph.paragraph_format #創建段落格式物件 paragraph_format.line_spacing = Pt(50) #設定行間距
行距可以通過段落paragraph_format屬性的line_spacing或line_spacing_rule屬性來指定,當line_spacing設定為長度值時表示絕對距離,設定為浮點數時表示行高的倍數,設定為None表示根據繼承層次決定
保存檔案
document.save('d:/test.docx') #保存檔案--覆寫原檔案
添加標題
document.add_heading('標題', level=0) #添加標題
#引數2 標題級別 0--9
添加分頁
document.add_page_break() #添加分頁
換頁方式
換頁方式決定一個段落在一個頁面結束附近如何表現,常用屬性有如下,每個屬性的取值可以為True、False、None:
- keep_together設定為True時使得整個段落出現在同一頁中,如果一個段落在換頁時可能會被打斷就在段前換頁;
- keep_with_next設定為True時使得本段與下一段出現在同一頁中;
- page_break_before設定為True時使得本段出現在新的一頁的頂端,例如新的一章標題必須從新的一頁開始;
- window_control設定為True時表示可以在必要的時候進行分頁,避免本段的第一行或最后一行單獨出現在一頁中
粗體和斜體
kuai=paragraph.add_run('我是中國人') #在段落尾部添加文本
#回傳值:行內物件
kuai.bold = True #給行內設定粗體
kuai=paragraph.add_run('我是中國人') #在段落尾部添加文本
#回傳值:行內物件
kuai.italic = True #給行內設定斜體
kuai.underline = True #給行內設定下劃線
字符格式
Run屬于行內元素的一種,是一個塊級元素的組成部分,可以看做是一段連續的具有相同格式(字體、字號、顏色、加粗、斜體、下畫線、陰影等)的文本,一般來說,一個段落會包含一個或多個Run,使得同一個段落中可以包含不同格式的文本
可以通過一個Run物件的font屬性來獲取和設定該Run的字符格式,例如字體名稱font.name、字體大小font.size、是否加粗font.bold、是否斜體font.italic、下畫線格式font.underline(True表示單下畫線,False表示沒有下畫線,或者使用WD_UNDERLINE中的成員設定更多下畫線格式)、字體顏色font.color.rgb(設定為docx.shared.RGBColor物件)
包括字體字體和大小,粗體,斜體和下劃線
#設定字體--麻煩一點
kuai.font.name=u'華文彩云'
r = kuai._element
r.rPr.rFonts.set(qn('w:eastAsia'), '華文彩云')
#需要 from docx.oxml.ns import qn
kuai.font.size = Pt(30) #字體大小
kuai.font.color.rgb = RGBColor(0x42, 0x24, 0xE9) #設定字體顏色
#需要 from docx.shared import RGBColor
樣式
s=document.styles #獲取word所有樣式集合物件
for i in s:
print(i)
章節
按 Ctrl+C 復制代碼 按 Ctrl+C 復制代碼
頁眉和頁腳
Word支持頁眉和頁腳,頁眉是出現在每個頁面的上邊距區域中的文本,與文本主體分開,并且通常傳達背景關系資訊,例如檔案標題,作者,創建日期或頁碼,檔案中的頁眉在頁面之間是相同的,內容上只有很小的差異,例如更改部分標題或頁碼,頁眉也稱為運行頭
頁腳在頁眉的每個方面都類似,只不過它出現在頁面底部,它不應與腳注混淆,腳注在頁面之間內容是不一致的
頁眉和頁腳與一個章節相關聯,這允許每個章節具有不同的頁眉和/或頁腳
頁眉:
每個section物件都有一個.header屬性,可以訪問該節的_Header物件:
洗掉頁眉
通過將True分配給其.is_linked_to_previous屬性,可以洗掉不需要的頁眉:
header = section.header #回傳章節header參考 header.is_linked_to_previous = True #洗掉頁眉
頁腳:
每個section物件都有一個footer屬性,可以訪問該章節的頁腳物件:
section = document.sections[0] #回傳序號0章節的參考 footer=section.footer #回傳章節頁腳的參考 print(footer.is_linked_to_previous) #值為True表示頁腳物件不包含定義,該章節將顯示與上一節相同的頁腳 #添加頁腳 paragraph = footer.paragraphs[0] #回傳頁腳序號0的段落的參考 #頁腳已包含單個(空)段落 #此時把footer.is_linked_to_previous屬性設為false paragraph.text = "這是頁腳1"
footer.is_linked_to_previous = True #洗掉頁腳
制表符
tab_stops = paragraph.paragraph_format.tab_stops #回傳段落格式制表符的參考 from docx.enum.text import WD_TAB_ALIGNMENT, WD_TAB_LEADER tab_stop = tab_stops.add_tab_stop(Inches(4.5), WD_TAB_ALIGNMENT.LEFT, WD_TAB_LEADER.DOTS) #添加制表位 #引數2 對齊--默認左 https://python-docx.readthedocs.io/en/latest/api/enum/WdTabAlignment.html#wdtabalignment #引數3 填充符--默認空格 https://python-docx.readthedocs.io/en/latest/api/enum/WdTabLeader.html#wdtableader print(tab_stop.position) #回傳制表位位置--單位像素 print(tab_stop.position.inches) #回傳制表位位置--單位英寸 tab_stops[0] #回傳序號0制表位的參考
表格
添加表格
table = document.add_table(rows=2, cols=2) #添加表格
給單元格賦值和讀取單元格文本
cell = table.cell(0, 1) #回傳表格的單元格物件 cell.text = '0行1列' #給單元格賦值 s=cell.text #回傳單元格文本
row = table.rows[1] #回傳行物件 row.cells[0].text = '一行零列' #給行物件的第n個單元格賦值 s=row.cells[1].text #回傳行物件的第n個單元格的文本
col = table.columns[1] #回傳列物件 col.cells[0].text = '零行1列' #給列物件的第n個單元格賦值 s=col.cells[1].text #回傳列物件的第n個單元格的文本
tables=document.tables #回傳檔案所有表格參考集合--串列 tables[0].cell(1,0).text="貓糧1" #給序號0的表格指定單元格設定文本
總行數和總列數
s = len(table.rows) #回傳表格的總行數 s = len(table.columns) #回傳表格的總列數
圖片
添加圖片
document.add_picture('大象.png') #添加圖片--添加的影像以原始大小顯示
document.add_picture('大象.png', width=Inches(1.0)) #添加圖片
#引數2 圖品寬度 -寬度和高度只指定一個,另一個按比例縮放
#Inches--單位是英寸
document.add_picture('大象.png', width=Cm(11.8))#添加圖片
#需要 from docx.shared import Cm
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/198242.html
標籤:Python
