python-docx中文文檔使用小結


 

文件類

創建文件實例

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指定圖片的路徑。參數widthheight指定圖片的寬度和高度,若兩個參數均缺省,則加載的圖片為原始大小,若兩個參數只指定一個,則根據指定的參數計算比例系數,再按此比例系數計算另一個參數的大小;

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   #強制另起一頁,分頁


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM