python3處理word文檔實例分析

      網友投稿 806 2025-04-02

      直接使用Word文檔已經難不倒大家了,有沒有想過用Python構建一個Word文檔寫點文章呢?當然這個文章的框架需要我們用代碼一點點的建立,在過程上有一點繁瑣,一下子看不懂的小伙伴可以把它拆分成幾個部分來看。下面就在Python3處理word文檔的代碼給大家帶來講解,還會有一些設置文章格式的技巧。

      一個Word文檔,主要由下面這些內容元素構成,每個元素都有對應的方法處理:

      標題:add_heading()

      段落:add_paragraph()

      文本:add_run(),其返回對象支持設置文本屬性

      圖片:add_picture()

      表格:add_table()、add_row()、add_col()

      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

      python3處理word文檔實例分析

      35

      36

      37

      38

      39

      40

      41

      42

      43

      44

      45

      46

      47

      48

      49

      50

      51

      52

      53

      54

      55

      56

      import pathlib

      from docx import Document

      from docx.shared import Inches, Pt

      from docx.oxml.ns import qn

      path = list(pathlib.Path.cwd().parents)[1].joinpath('data/automate/003word')

      out_path = path.joinpath('003word_create.docx')

      img_path = path.joinpath('dance.jpg')

      document = Document()

      document.add_heading('Python1024_自動生成標題', 0)

      document.add_heading('基本:文本', level=1)

      p = document.add_paragraph('測試文本\n測試內容\n')

      p.add_run('粗體部分內容\n').bold = True

      p.add_run('斜體部分\n').italic = True

      p.add_run('下劃線部分\n').underline = True

      p.add_run('字體設置\n').font.size = Pt(24)

      # 測試第三方字體

      x = p.add_run('三方字體測試\n')

      x.font.name = 'Source Han Sans CN' # 思源字體

      x.element.rPr.rFonts.set(qn('w:eastAsia'), 'Source Han Sans CN')

      # 段落和引用

      document.add_heading('標題一:段落', level=1)

      document.add_paragraph('引用塊', style='Intense Quote')

      document.add_heading('標題1.1、無序列表', level=2)

      opts = ['選項1','選項2', '選項3']

      # 無需列表

      for opt in opts:

      document.add_paragraph(opt, style='List Bullet')

      document.add_heading('標題1.2、有序列表', level=2)

      # 有序列表

      document.add_paragraph(opt, style='List Number')

      document.add_heading('標題二:圖片', level=1)

      document.add_picture(str(img_path), width=Inches(5))

      document.add_page_break()

      document.add_heading('標題三:表格', level=1)

      records = (

      (1, '電風扇', '無葉風扇'),

      (2, '吹風機', '離子風機'),

      (3, 'Macbook pro', 'Apple macbook pro 15寸')

      )

      # 表格

      table = document.add_table(rows=1, cols=3)

      # 表頭

      hdr_cells = table.rows[0].cells

      hdr_cells[0].text = '數量'

      hdr_cells[1].text = 'ID'

      hdr_cells[2].text = '描述信息'

      # 表格數據

      for qty, cid, desc in records:

      row_cells = table.add_row().cells

      row_cells[0].text = str(qty)

      row_cells[1].text = cid

      row_cells[2].text = desc

      # 保存文檔

      document.save(out_path)

      設置段落樣式,

      如下:

      1

      document.add_paragraph('這是一個樣式為 ListBullet 的段落', style='ListBullet')

      1

      2

      paragraph = document.add_paragraph('這是一個樣式為 ListBullet 的段落')

      paragraph.style = 'List Bullet'

      設置段落間距

      分為 段前 和 段后 ,設置值用 Pt 單位是 磅 ,如下:

      1

      2

      paragraph_format.space_before = Pt(18)

      paragraph_format.space_after = Pt(12)

      設置段落行距

      當行距為 最小值 和 固定值 時,設置值單位為 磅 ,需要用 Pt ;當行距為 多倍行距 時,設置值為數值,如下:

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      12

      13

      14

      15

      16

      17

      18

      19

      20

      21

      from docx.shared import Length

      #SINGLE???? => 單倍行距(默認)

      #ONE_POINT_FIVE => 1.5倍行距

      #DOUBLE2??? => 倍行距

      #AT_LEAST??? => 最小值

      #EXACTLY??? => 固定值

      #MULTIPLE??? => 多倍行距

      paragraph.line_spacing_rule = WD_LINE_SPACING.EXACTLY #固定值

      paragraph_format.line_spacing = Pt(18) # 固定值18磅

      paragraph.line_spacing_rule = WD_LINE_SPACING.MULTIPLE #多倍行距

      paragraph_format.line_spacing = 1.75 # 1.75倍行間距

      Python

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:SUMPRODUCT函數注意事項
      下一篇:wps文字如何設置行間距圖文教程(在wps文檔里面如何設置行間距)
      相關文章
      亚洲精品国产精品国自产观看| 亚洲人妖女同在线播放| 亚洲色最新高清av网站| 亚洲91av视频| 亚洲国产精品无码av| 国产性爱在线观看亚洲黄色一级片 | 亚洲AV永久精品爱情岛论坛| 日日噜噜噜噜夜夜爽亚洲精品| 亚洲日韩人妻第一页| 亚洲电影日韩精品 | 亚洲视频小说图片| 亚洲视频免费一区| 亚洲日产2021三区| 亚洲国产精品一区二区久| 亚洲国产成人精品无码区在线网站| 亚洲的天堂av无码| 33333在线亚洲| 亚洲色欲啪啪久久WWW综合网| 亚洲欧美日韩一区二区三区 | 激情无码亚洲一区二区三区 | 亚洲成a人一区二区三区| 亚洲国产黄在线观看| 久久久久亚洲AV成人网人人软件| 久久亚洲中文字幕精品一区四| 国产亚洲av人片在线观看| 亚洲国产一成人久久精品| 亚洲AV无一区二区三区久久| 亚洲人成在线影院| 亚洲欧洲精品久久| 中国亚洲呦女专区| 最新亚洲人成无码网站| 亚洲一区二区视频在线观看| 亚洲精品狼友在线播放| 亚洲天堂中文字幕| 亚洲一区二区三区精品视频| 亚洲国产美女精品久久久| 亚洲成A∨人片天堂网无码| 亚洲综合在线另类色区奇米| 亚洲国产综合91精品麻豆| 亚洲激情黄色小说| 亚洲精品无码成人|