文件類
創建文件實例
docx.Document(docx=None)
- 1
返回從docx創建的文件對象,參數docx 可以是.docx文件的存儲路徑,或者是一個 file-like對象,如果參數docx 缺失或None,就會加載內置默認的文件模板。
文件實例中的方法及屬性
add_heading
add_heading(text=u' ',level=1)
- 1
返回一個創建再文件實例末尾的標題,標題內容是參數text, 內容格式由參數level規定,若level=0則設置為文章標題,level=1或缺省,則設置為1級標題,否則設置為level級標題;
add_page_break
add_page_break() #增加分頁符
- 1
add_paragraph
add_paragraph(text=u ' ', style=None)
- 1
返回一個再文件實例末尾增加的段落,段落內容由參數text指定,段落格式由參數 style 指定。參數 text 可以包含制表符 \t, 制表符會轉換為合適的 xml 格式; 也可以包含換行符 \n,回車符 \r,這兩個符號都會轉換為換行;
add_picture
add_picture(image_path_or_stream, width=None, height=None)
- 1
返回一個創建在文件實例末尾的圖片形狀。參數image_path_or_stream
指定圖片的路徑。參數width
、height
指定圖片的寬度和高度,若兩個參數均缺省,則加載的圖片為原始大小,若兩個參數只指定一個,則根據指定的參數計算比例系數,再按此比例系數計算另一個參數的大小;
add_section
add_section(start_type=2)
- 1
返回創建再文件實例末尾的一節。可選參數start_type
必須是枚舉類型WD_SECTION_START
中的元素。如果不指定,默認是WD_SECTION.NEW_PAGE
。
add_table
add_table(rows,cols,style=None)
- 1
在文件實例中創建一個rows行,cols列的表格實例。表格的格式參數由style
指定,參數style
必須是段落格式對象(paragraph style object)或者段落格式名字(paragraph style name),如果style=None
則使用文件實例中的默認表格格式。
一些詳細用法見第二節。
core_properties
可讀可寫,文件實例的核心屬性
inline_shapes
訪問文件實例中的inline_shapes形狀
paragraphs
返回文件實例中的段落實例列表,按照在文件實例中的出現順序排列。注意,含有修訂標志的段落實例不會出現在該列表中。
save
保存文件實例到save中的指定的路徑。
sections
訪問文件實例中的每一節。
settings
訪問文件實例的設置
styles
訪問文件實例中的格式
tables
返回文件實例中表格實例的列表。注意該列表只包含出現在文件實例頂層的表格實例,若是嵌套在表格中某一格的表格,則不會出現在該列表中。
表格類
表格類table objects
class docx.table.Table(tbl, parent)
- 1
使用Document
類中的add_table()
方法創建表格實例。
表格類屬性及方法
add_columns(width)
- 1
返回在一個建立在該表格最右端的列實例,參數 width 指定寬度。
add_row()
- 1
返回一個建立在該表格最下方的行實例。
alihnment
- 1
用來指定表格在頁邊距的位置,取值枚舉類型WD_TABLE_ALIGNMENT
的成員。如果不指定,則取值none,此時匯集成當前文件實例格式中的值。
autofit
- 1
取值為 True 時,列寬會根據表格內容進行自動調整,取值為False時,列寬固定,如果該表格列寬的總和超過了頁面寬度,上述兩種取值時候,列寬都會被調整。
cell(row_idx, col_idx)
- 1
返回在row_idx 行,col_idx列的單元格實例(cell )。(0, 0) 是表格左上端的單元格。
column_cells(columns_idx)
- 1
返回表格第column_idx行的單元格實例序列。
columns
- 1
返回該表格中的列實例的序列
row_cells(row_idx)
- 1
#返回該表格中的行實例的序列。
style
- 1
可讀可寫,該表格使用的格式_TableStyle
實例。如果表格沒有直接應用格式,則返回文件的默認格式(通常為 normal)。取值 None 則移除該文件的直接應用格式。
單元格類 _Cell objects
的屬性及方法
add_paragraph(text=u' ', style=None)
- 1
返回建立在單元格內容后面的段落。如果出現這個方法,則在單次運行中,添加本文到段落中。參數 style 指定段落格式,如果參數 style 被指定,則應用該格式;如果沒有被指定,則應用 Normal 格式。
add_table(rows, cols)
- 1
返回一個建立在單元格內容后的表格實例,有 rows行,cols 列。一個空的段落被添加在表格后面,因為 Word 要求每個單元格中最后的元素時段落元素。
merge(other_cell)
- 1
返回一個合並的單元格,該單元格是以將該單元格和參數 other_cell 指定單元格的作為對角線的矩形區域創建的。如果單元格沒有定義矩形區域,則會引發異常。
paragraph
- 1
該單元格中的段落列表。列表的順序按照這些表格出現的順序。
tables
- 1
該單元格中的表格列表,列表的順序按照這些表格出現的順序。
text
- 1
返回文本字符串格式的單元格的所有內容。給這個字符串賦值,則會用福德值替換單元格中的所有內容。
行 類_Row objects
的屬性及方法
cells #表格的行,返回這一行單元格的行實例列表
height #返回單元格高度的 length 實例。如果高度沒有設定,則返回None.
height_rule #返回單元格的高度規則,取值為枚舉類型 WD_ROW_HEIGHT_RULE 的成員。如果沒有顯示設定高度規則,則返回None.
table 返回對當前行所在單元格的引用。
- 1
- 2
- 3
- 4
列 類_Column objects
的屬性及方法
cells #這一列中所有單元格實例列表
table #返回對當前列所在單元格的引用
width #返回用EMU格式表示這一列的寬度
- 1
- 2
- 3
多行/多列 類_Rows objects
的屬性及方法
該表格中行實例 / 列實例的序列,支持len(),支持迭代,下標的訪問方式,以及切片。
table #返回對當前行實例 or 列實例集合所在單元格的引用。
- 1
一些其他小tips
字體設置
利用python-docx生成段落時,在未設置中文字體的時候,生成的文檔雖然可以顯示中文,但大小不一,不美觀,於是需要對字體進行指定
#依賴的一些包
from docx import Document
from docx.shared import Pt, Inches
from docx.oxml.ns import qn
- 1
- 2
- 3
- 4
修改正文中的中文字體類型
示例代碼,全局設置
document=Document()
document.styles['Normal'].font.name=u'宋體'
document.styles['Normal']._element.rPr.rFont.set(qn('w:eastAsia'),u'宋體')
- 1
- 2
- 3
修改標題的字體類型
以1級標題為例
run=document.add_heading(' ',level=1).add_run(u'應用場景示例:') #應用場景示例標題
run.font.name=u'黑體'
run._element.rPr.rFont.set(qn('w:eastAsia'),u'黑體')
- 1
- 2
- 3
字體格式(加粗、斜體、顏色等)
p = document.add_paragraph()
run = p.add_run('test typeface')
run.font.bold = True #加粗
run.font.italic = True #斜體
run.font.underline = True #下划線
run.underline=WD_UNDERLINE.DOT_DASH #返回WD_UNDERLINE中所有下划線格式
##字體顏色
from docx.shared import RGBColor
test=document.add_paragraph().add_run('color')
font=test.font
font.color.rgb=RGBColor(0x42, 0x24 , 0xE9)
##使用預設顏色
from docx.enum.dml import MSO_THEME_COLOR
font.color.theme_color=MSO_THEME_COLOE.ACCRNT_1
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
調整文本位置格式
居中
from docx.enum.text import WD_ALIGN_PARAGRAPH
document=Document('test.docx')
paragraph=document.add_paragraph('123')
paragraph.pargraph_format.alignment=WD_ALIGN_PARAGRAPH.CENTER
##這一步調整文件格式為居中
document.save('test.docx')
- 1
- 2
- 3
- 4
- 5
- 6
左縮進
document=Document('text.docx')
paragraph=document.add_paragraph('this is test for left_indent with inches.')
paragraph_format=paragraph.paragraph_format
paragraph_format.left_indent=Inches(0.3) #調整左縮進0.3英寸
document.save('test.docx')
- 1
- 2
- 3
- 4
- 5
首行縮進
paragraph_format.first_line_indent=Inches(0.3)
- 1
行間距
paragraph_format.space_before=Pt(18) #上行間距
paragraph_format.space_after=Pt(12) #下行間距
paragraph_format.line_spacing=Pt(18) #行距
- 1
- 2
- 3
分頁格式
paragraph_format.keep_together #緊跟上段
paragraph_format.keep_with_next #若本頁無法完全顯示,另起一頁
paragraph_format.page_break_before #強制另起一頁,分頁