1. 程式人生 > 程式設計 >說說如何使用 python-docx 寫入 word 檔案

說說如何使用 python-docx 寫入 word 檔案

python-docx 除了可以讀取 word 檔案之外,還支援寫入操作。

1 基本模式

import docx

doc = docx.Document()
...
doc.save('xxx.docx')
複製程式碼

基本模式說明如下:

  • 呼叫 docx.Document() 之後,就會返回一個新的、空白的 Document 物件。
  • 然後呼叫具體邏輯,比如設定中文字型、新增段落等等。
  • 最後,儲存為具體 docx 檔案。

2 設定中文字型

因為預設為英文字型,所以必須指定我們所需要的中文字型:

import docx
from docx.oxml.ns import qn

doc = docx.Document()
# 設定正文中文字型
microsoft_font = u'微軟雅黑' # u 表示後面的字串以 Unicode 格式進行編碼 area = qn('w:eastAsia') doc.styles['Normal'].font.name = microsoft_font doc.styles['Normal']._element.rPr.rFonts.set(area,microsoft_font) ... doc.save('xxx.docx') 複製程式碼

3 新建標題

我們為檔案,新建一個“黑體”字型的標題:

import docx
from docx.oxml.ns import qn

doc = docx.Document()
...
black_font = u'黑體'
run = doc.add_heading('',level=1).add_run('概要設計') run.font.name = black_font run._element.rPr.rFonts.set(area,black_font) ... doc.save('xxx.docx') 複製程式碼

生成的 word :

  • 標題的等級級別,可以通過 add_heading 方法的 level 屬性來設定。
  • 因為標題一般為黑體,所以這裡也做了相應的轉換。

4 新建段落

通過 add_paragraph 方法,就可以新建段落:

import docx

doc = docx.Document()
...

# 新增新的段落
paraObj1 = doc.add_paragraph( '概要設計是一個設計師根據使用者互動過程和使用者需求來形成互動框架和視覺框架的過程,其結果往往以反映互動控制元件佈置、介面元素分組以及介面整體板式的頁面框架圖的形式來呈現。這是一個在使用者研究和設計之間架起橋樑,使使用者研究和設計無縫結合,將對使用者目標與需求轉換成具體介面設計解決方案的重要階段。') run2 = paraObj1.add_run('概要設計的主要任務是把需求分析得到的系統擴充套件用例圖轉換為軟體結構和資料結構。') ... doc.save('xxx.docx') 複製程式碼

生成的 word :

5 換行

Run 物件有一個 add_break() 方法,呼叫它,就會換行:

...
# 新增換行符
run2.add_break()
run2.add_break()
...
複製程式碼

生成的 word :

6 新增影象

add_picture() 可以實現在檔案尾部增加圖片。第一個引數是圖片的地址;width 與 height 分別是圖片的寬度與高度,單位可以是英寸(docx.shared.Inches)或者釐米(docx.shared.Cm)。

...
# 新增影象
doc.add_picture('timg.jpg',width=docx.shared.Cm(10),height=docx.shared.Cm(7))
...
複製程式碼

生成的 word :

7 完整示例程式碼

import docx
from docx.oxml.ns import qn

doc = docx.Document()
# 設定正文中文字型
microsoft_font = u'微軟雅黑'  # u 表示後面的字串以 Unicode 格式進行編碼
area = qn('w:eastAsia')
doc.styles['Normal'].font.name = microsoft_font
doc.styles['Normal']._element.rPr.rFonts.set(area,microsoft_font)

# 設定標題樣式
black_font = u'黑體'
run = doc.add_heading('',black_font)

# 新增新的段落
paraObj1 = doc.add_paragraph(
    '概要設計是一個設計師根據使用者互動過程和使用者需求來形成互動框架和視覺框架的過程,其結果往往以反映互動控制元件佈置、介面元素分組以及介面整體板式的頁面框架圖的形式來呈現。這是一個在使用者研究和設計之間架起橋樑,使使用者研究和設計無縫結合,將對使用者目標與需求轉換成具體介面設計解決方案的重要階段。')
run2 = paraObj1.add_run('概要設計的主要任務是把需求分析得到的系統擴充套件用例圖轉換為軟體結構和資料結構。')

# 新增換行符
run2.add_break()
run2.add_break()

# 新增影象
doc.add_picture('timg.jpg',height=docx.shared.Cm(7))

doc.save('write.docx')

複製程式碼

生成的 word :