Python-操作Word


  • 安裝 python-docx

    處理 Word 需要用到 python-docx 庫,目前版本為 0.8.10 ,執行如下安裝命令:

  • 寫入 Word

    平時我們在操作 Word 寫文檔的時候,一般分為幾部分:標題、章節、段落、圖片、表格、引用以及項目符號編號等。下面我們就按這幾部分如何用 Python 操作來一一介紹。

    標題

    文檔標題創建比較簡單,通過 Document() 創建出一個空白文檔,只要調用 add_heading 方法就能創建標題。

  • # word_1.py
    
    # 導入庫
    from docx import Document
    from docx.shared import Pt
    from docx.shared import Inches
    from docx.oxml.ns import qn
    
    # 新建空白文檔
    doc1 = Document()
    
    # 新增文檔標題
    doc1.add_heading('如何使用 Python 創建 Word',0)
    
    # 保存文件
    doc1.save('word1.docx')

     

  • 這樣就完成了創建文檔和文章標題的操作,下面通過命令 python word_1.py 運行程序,會生成名為 word1.docx 的文檔,打開文章顯示如下圖所示:
  •  

     

  • 章節與段落

    有了文章標題,下面我們來看章節和段落是怎么操作的,在上面代碼后面增加章節和段落操作的代碼如下:

  • # word_1.py
    
    # 導入庫
    from docx import Document
    from docx.shared import Pt
    from docx.shared import Inches
    from docx.oxml.ns import qn
    
    # 新建空白文檔
    doc1 = Document()
    
    # 新增文檔標題
    doc1.add_heading('如何使用 Python 創建 Word',0)
    
    # 創建段落描述
    doc1.add_paragraph('我們平時使用 Word 用來做文章的處理,可能沒想過它可以用 Python 生成,下面我們就介紹具體如何操作……')
    
    # 創建一級標題
    doc1.add_heading('安裝 python-docx 庫',1)
    
    # 創建段落描述
    doc1.add_paragraph('現在開始我們來介紹如何安裝 python-docx 庫,具體需要以下兩步操作:')
    
    # 創建二級標題
    doc1.add_heading('第一步:安裝 Python',2)
    
    # 保存文件
    doc1.save('word1.docx')

     

  • 上面我們說了 add_heading 方法用來增加文章標題,不過通過上面代碼我們能知道,這個方法的第二上參數為數字,其實這個就是用來標示幾級標題的,在我們平時就用來標示章節。add_paragraph 方法則是用來在文章中增加段落的,那我們現在就通過命令python word_1.py 運行程序看下效果:
  •  

     

  • 字體和引用

    前面我們通過 add_paragraph 方法增加了兩個段落,現在我們就看下如何對段落中字體如何操作,以及引用段落的操作。繼續修改以上代碼,增加對文章字體字號、加粗、傾斜等操作,具體代碼如下:

  • # word_1.py
    
    # 導入庫
    from docx import Document
    from docx.shared import Pt
    from docx.shared import Inches
    from docx.oxml.ns import qn
    from docx.shared import RGBColor
    
    # 新建空白文檔
    doc1 = Document()
    
    # 新增文檔標題
    doc1.add_heading('如何使用 Python 創建 Word',0)
    
    # 創建段落描述
    doc1.add_paragraph('我們平時使用 Word 用來做文章的處理,可能沒想過它可以用 Python 生成,下面我們就介紹具體如何操作……')
    
    # 創建一級標題
    doc1.add_heading('安裝 python-docx 庫',1)
    
    # 創建段落描述
    doc1.add_paragraph('現在開始我們來介紹如何安裝 python-docx 庫,具體需要以下兩步操作:')
    
    # 創建二級標題
    doc1.add_heading('第一步:安裝 Python',2)
    
    # 創建段落,添加文檔內容
    paragraph = doc1.add_paragraph('這是第一步的安裝描述!')
    
    # 段落中增加文字,並設置字體字號
    run = paragraph.add_run('(注意:這里設置了字號為20)')
    run.font.size = Pt(20)
    
    # 設置英文字體
    run = doc1.add_paragraph('這里設置英文字體:').add_run('This Font is Times New Roman ')
    run.font.name = 'Times New Roman'
    
    # 設置中文字體
    run = doc1.add_paragraph('這里設置中文字體:').add_run('當前字體為黑體')
    run.font.name='黑體'
    r = run._element
    r.rPr.rFonts.set(qn('w:eastAsia'), '黑體')
    
    # 設置斜體
    run = doc1.add_paragraph('這段設置:').add_run('文字的是斜體 ')
    run.italic = True
    
    # 設置粗體
    run = doc1.add_paragraph('這段再設置:').add_run('這里設置粗體').bold = True
    
    # 設置字體帶下划線
    run = doc1.add_paragraph('這段為下划線:').add_run('這里設置帶下划線').underline = True
    
    # 設置字體顏色
    run = doc1.add_paragraph('這段字體為紅色:').add_run('這里設置字體為紅色')
    run.font.color.rgb = RGBColor(0xFF, 0x00, 0x00)
    
    # 增加引用
    doc1.add_paragraph('這里是我們引用的一段話:人生苦短,我用Python。', style='Intense Quote')
    
    # 保存文件
    doc1.save('word1.docx')

     

  • 上面代碼主要是針對段落字體的各種設置,每段代碼都標有注釋應該比較容易理解,現在通過命令 python word_1.py 運行程序看下效果:
  •  

     

  • 項目列表

    我們平時在使用 Word 時,為了能展示更清晰,會用到項目符號和編號,將內容通過列表的方式展示出來,下面我們新建一個文件 word_2.py 並編寫如下代碼:

  • # word_2.py
    
    # 導入庫
    from docx import Document
    from docx.shared import Pt
    from docx.shared import Inches
    from docx.oxml.ns import qn
    
    # 新建文檔
    doc2 = Document()
    
    doc2.add_paragraph('哪個不是水果:')
    
    # 增加無序列表
    doc2.add_paragraph(
        '蘋果', style='List Bullet'
    )
    doc2.add_paragraph(
        '香蕉', style='List Bullet'
    )
    doc2.add_paragraph(
        '餛燉', style='List Bullet'
    )
    
    doc2.add_paragraph('2020年度計划:')
    # 增加有序列表
    doc2.add_paragraph(
        '每周健身一天', style='List Number'
    )
    doc2.add_paragraph(
        '學習50本書', style='List Number'
    )
    doc2.add_paragraph(
        '減少加班時間', style='List Number'
    )
    
    # 保存文件
    doc2.save('word2.docx')

     

  • 現在通過命令 python word_2.py 運行程序看下效果:
  •  

     

  • 圖片和表格

    我們平時編輯文章時,插入圖片和表格也是經常使用到的,那用 Python 該如何操作插入圖片和表格?首先我們隨便找了個圖片,我這用了 Python 安裝時的一張截圖,文件名為python_install.png,然后在 word_2.py 文件中增加如下代碼:

  • # word_2.py
    
    # 導入庫
    from docx import Document
    from docx.shared import Pt
    from docx.shared import Inches
    from docx.oxml.ns import qn
    
    # 新建文檔
    doc2 = Document()
    
    doc2.add_paragraph('哪個不是水果:')
    
    # 增加無序列表
    doc2.add_paragraph(
        '蘋果', style='List Bullet'
    )
    doc2.add_paragraph(
        '香蕉', style='List Bullet'
    )
    doc2.add_paragraph(
        '餛燉', style='List Bullet'
    )
    
    doc2.add_paragraph('2020年度計划:')
    # 增加有序列表
    doc2.add_paragraph(
        '每周健身一天', style='List Number'
    )
    doc2.add_paragraph(
        '學習50本書', style='List Number'
    )
    doc2.add_paragraph(
        '減少加班時間', style='List Number'
    )
    
    doc2.add_heading('圖片',2)
    
    # 增加圖像
    doc2.add_picture('python_install.png', width=Inches(5.5))
    
    doc2.add_heading('表格',2)
    
    # 增加表格,這是表格頭
    table = doc2.add_table(rows=1, cols=3)
    hdr_cells = table.rows[0].cells
    hdr_cells[0].text = '編號'
    hdr_cells[1].text = '姓名'
    hdr_cells[2].text = '職業'
    
    # 這是表格數據
    records = (
        (1, '張三', '電工'),
        (2, '張五', '老板'),
        (3, '馬六', 'IT')
    )
    
    # 遍歷數據並展示
    for id, name, work in records:
        row_cells = table.add_row().cells
        row_cells[0].text = str(id)
        row_cells[1].text = name
        row_cells[2].text = work
    
    # 手動增加分頁
    doc2.add_page_break()
    
    # 保存文件
    doc2.save('word2.docx')

     

  •  

     

  • 讀取 Word 文件

    上面寫了很多用 Python 創建空白 Word 文件格式化字體並保存到文件中,接下來我們再簡單介紹下如何讀取已有的 Word 文件,請看如下代碼:

  • # word_3.py
    
    # 引入庫
    from docx import Document
    
    # 打開文檔1
    doc1 = Document('word1.docx')
    
    # 讀取每段內容
    pl = [ paragraph.text for paragraph in doc1.paragraphs]
    
    print('###### 輸出word1文章內容')
    # 輸出讀取到的內容
    for i in pl:
        print(i)
    
    
    # 打開文檔2
    doc2 = Document('word2.docx')
    
    print('\n###### 輸出word2文章內容')
    
    pl2 = [ paragraph.text for paragraph in doc2.paragraphs]
    
    # 輸出讀取到的內容
    for j in pl2:
        print(j)
    
    # 讀取表格材料,並輸出結果
    tables = [table for table in doc2.tables]
    for table in tables:
        for row in table.rows:
            for cell in row.cells:
                print (cell.text,end='  ')
            print()
        print('\n')

     

  • 以上代碼是將之前我們輸出的兩個文檔內容都讀取出來,當然這里只是打印到控制台,並沒有做其他處理。現在我們來執行命令 python word_3.py 把代碼執行看下結果:
  •  

     


免責聲明!

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



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