程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

python自動化系列之使用python-docx操作word文檔

編輯:Python

日常辦公中經常用到word程序,在python中同樣有針對word的操作庫python-docx;使得python可以自動化操作word文檔;

pyhon-docx介紹

python-docx是一個利用python來讀寫word文件的第三方庫。是一個用於創建和更新 Microsoft Word (.docx) 文件的庫,提供全套的 Word 操作,是最常用的 Word 工具;

python-docx庫只支持docx文檔,如果是doc,需要轉換文件格式。文件格式轉換可以使用win32com庫的saveas方法進行自動化操作;

python-docx是一個開源庫,開源代碼庫地址在這裡:github地址

python-docx的簡單使用

python-docx有配套的官方文檔,可訪問https://python-docx.readthedocs.io/en/latest/查看最新官方教程文檔;

  • 安裝python-docx
    安裝方式建議使用pip包管理器進行安裝,相對來說比較方便;

    pip install python-docx

  • 導入python-docx
    在安裝時使用的名字是python-docx,但是在導入時是另一個名字docx

    import docx

  • python-docx中的基本概念:

    Document:是一個 Word 文檔 對象,打開不同的 Word 文檔,就會有不同的 Document 對象,相互之間沒有影響
    Paragraph:是段落,一個 Word 文檔由多個段落組成,當在文檔中輸入一個回車鍵,就會成為新的段落,輸入 shift + 回車,不會分段
    Run 表示一個節段,每個段落由多個 節段 組成,一個段落中具有相同樣式的連續文本,組成一個節段,所以一個 段落 對象有個 Run 列表

    注意:顏色、字體、粗細、斜體不同,就是不同的文字塊。

  • 使用docx寫word文檔:
    1、新建一個空白文檔
    doc = docx.Document()
    2、添加標題
    doc.add_heading(‘這個是標題,級別有level決定’,level=2)
    3、添加段落
    p = doc.add_paragraph(‘這個是一個段,可長可短’)
    4、添加文字塊:
    p.add_run(’\n–這個是換行的節段,但是還是一個段落’)
    5、保存文件
    doc.save(‘H://pytest.docx’)

    完整代碼示例

    def create(): '''創建一個word''' doc = docx.Document() #新建一個空白文檔 doc.add_heading('這個是標題,級別有level決定',level=2) #添加標題 p = doc.add_paragraph('這個是一個段,可長可短') p.insert_paragraph_before('在第一段之前插入一個段落') p.add_run('\n--這個是換行的節段,但是還是一個段落') p.add_run('==粗體文字').bold = True #設置粗體 p.add_run('--斜體文字').italic = True #設置斜體 doc.add_page_break() # 插入空白頁  np = doc.add_paragraph('新的段落') from docx.enum.text import WD_BREAK np.runs[-1].add_break(WD_BREAK.PAGE) # 在段落的最後一個節段後添加分頁 doc.save('H://pytest.docx') #保存
  • 除了常規的文字,還可以添加表格等特殊格式;

  • 讀word文檔:
    讀取文檔比較簡單,主要是加載文件,獲取段落,獲取表格等信息
    示例代碼如下:

def read(): '''讀文檔''' doc = docx.Document('H://pytest.docx') # 打開當前路徑下的已有文檔 for paragraph in doc.paragraphs: print(f'paragraph.text = {paragraph.text}') for run in paragraph.runs: print(f'\trun.text = {run.text}') for table in doc.tables: print(f"表格======{table}") for i in range(len(table.rows)): for j in range(len(table.columns)): print (f"{i}行{j}列:數據:{table.cell(i,j).text}")

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved