欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python操作Word文檔7種方法的實現(xiàn)與對比(史上最全)

 更新時間:2025年03月08日 11:16:14   作者:極客代碼  
在Python中操作Word文檔是一項常見的任務,特別是在辦公自動化和數(shù)據(jù)處理領域,本文將詳細總結和對比幾種常用的Python庫和方法,有需要的可以了解下

在Python中操作Word文檔是一項常見的任務,特別是在辦公自動化和數(shù)據(jù)處理領域。本文將詳細總結和對比幾種常用的Python庫和方法,包括它們的優(yōu)缺點、適用場景以及具體的代碼示例。我們將深入探討每種方法的具體功能和使用技巧,幫助你更好地理解和選擇合適的方法。

1. python-docx

概述:

python-docx 是一個用于創(chuàng)建和修改Microsoft Word文檔(.docx格式)的Python庫。它提供了豐富的API,使得開發(fā)者可以輕松地生成和編輯Word文檔。

主要功能:

  • 創(chuàng)建新的Word文檔
  • 添加段落、標題、圖片、表格等
  • 設置文本格式(字體、大小、顏色等)
  • 讀取和修改現(xiàn)有文檔的內容
  • 插入分頁符、書簽、超鏈接等

優(yōu)點:

  • 跨平臺:可以在任何支持Python的平臺上運行。
  • 易于使用:API簡潔明了,文檔詳盡。
  • 功能豐富:支持多種文檔元素的創(chuàng)建和編輯。

缺點:

  • 只支持 .docx 格式,不支持 .doc 格式。
  • 對于復雜的Word文檔(如包含宏或嵌入對象的文檔)支持有限。

適用場景:

  • 創(chuàng)建和編輯簡單的Word文檔。
  • 自動生成報告、簡歷等文檔。
  • 批量處理Word文檔。

詳細功能和代碼示例:

1.創(chuàng)建和編輯文檔

from docx import Document
from docx.shared import Pt, Inches

# 創(chuàng)建一個新的文檔
doc = Document()

# 添加標題
doc.add_heading('文檔標題', 0)

# 添加段落
doc.add_paragraph('這是文檔的第一個段落。')

# 添加帶有樣式的文本
p = doc.add_paragraph('這是一個帶')
run = p.add_run('有特殊格式')
run.bold = True
run.italic = True

# 設置字體樣式
run = p.add_run('這是設置字體的文本')
run.font.name = 'Arial'
run.font.size = Pt(14)
run.font.bold = True
run.font.italic = True
run.font.color.rgb = RGBColor(0xFF, 0x00, 0x00)  # 紅色

# 添加圖片
doc.add_picture('path_to_image.jpg', width=Inches(1.25))

# 添加表格
table = doc.add_table(rows=2, cols=3)
table.cell(0, 0).text = '行1列1'
table.cell(0, 1).text = '行1列2'
table.cell(1, 0).text = '行2列1'

# 添加分頁符
doc.add_page_break()

# 添加書簽
p = doc.add_paragraph('這是書簽位置')
p.add_bookmark('bookmark_name')

# 添加超鏈接
p = doc.add_paragraph('這是一個超鏈接:')
run = p.add_hyperlink('https://www.example.com', '點擊這里')

# 保存文檔
doc.save('example.docx')

2.讀取和修改現(xiàn)有文檔

from docx import Document

# 打開現(xiàn)有文檔
doc = Document('existing_document.docx')

# 讀取文檔內容
for para in doc.paragraphs:
    print(para.text)

# 修改文檔內容
para = doc.paragraphs[0]
para.text = '這是修改后的內容'

# 添加新段落
doc.add_paragraph('這是添加的新段落')

# 刪除段落
para = doc.paragraphs[1]
p = para._element
p.getparent().remove(p)
p._p = p._element = None

# 保存修改后的文檔
doc.save('modified_document.docx')

2. docx-mailmerge

概述:

docx-mailmerge 是一個用于批量生成Word文檔的庫。它允許你在Word模板中定義占位符,然后通過Python腳本填充這些占位符,生成多個類似的文檔。

主要功能:

  • 讀取Word模板文件
  • 替換模板中的占位符
  • 生成多個文檔

優(yōu)點:

  • 簡單易用:只需要定義模板和數(shù)據(jù)即可生成多個文檔。
  • 支持復雜的數(shù)據(jù)結構:可以處理嵌套的數(shù)據(jù)。

缺點:

  • 功能相對單一:主要適用于郵件合并場景。
  • 不支持復雜的文檔編輯操作。

適用場景:

  • 批量生成合同、發(fā)票、證書等文檔。
  • 自動化生成個性化報告。

詳細功能和代碼示例:

創(chuàng)建模板和生成文檔

from mailmerge import MailMerge

# 打開模板文件
template = MailMerge('template.docx')

# 查看模板中的占位符
print(template.get_merge_fields())

# 定義數(shù)據(jù)
data = {
    'name': 'John Doe',
    'address': '123 Main St',
    'city': 'Anytown',
    'state': 'Anystate',
    'zip': '12345'
}

# 生成文檔
template.merge(**data)
template.write('output.docx')

# 生成多個文檔
data_list = [
    {'name': 'John Doe', 'address': '123 Main St', 'city': 'Anytown', 'state': 'Anystate', 'zip': '12345'},
    {'name': 'Jane Smith', 'address': '456 Elm St', 'city': 'Othertown', 'state': 'Otherstate', 'zip': '67890'}
]

for i, data in enumerate(data_list):
    template.merge(**data)
    template.write(f'output_{i+1}.docx')

3. win32com.client

概述:

win32com.client 是一個用于在Python中調用Windows COM對象的庫。通過它,你可以直接控制Microsoft Word應用程序,實現(xiàn)對Word文檔的高級操作。

主要功能:

  • 打開和關閉Word應用程序
  • 創(chuàng)建和編輯文檔
  • 讀取和修改文檔內容
  • 處理復雜的文檔結構(如宏、嵌入對象等)

優(yōu)點:

  • 功能強大:可以實現(xiàn)幾乎所有的Word操作。
  • 支持 .doc 和 .docx 格式。

缺點:

  • 僅限Windows平臺。
  • 學習曲線較陡峭:需要熟悉COM對象和Word的內部結構。
  • 性能較低:由于需要啟動Word應用程序,可能會有性能損失。

適用場景:

  • 需要進行復雜文檔操作的場景。
  • 處理包含宏或嵌入對象的文檔。

詳細功能和代碼示例:

1.創(chuàng)建和編輯文檔

import os
from win32com.client import Dispatch

# 打開Word應用程序
word = Dispatch('Word.Application')
word.Visible = 0  # 后臺運行,不顯示
word.DisplayAlerts = 0  # 不顯示警告

# 創(chuàng)建新文檔
doc = word.Documents.Add()

# 添加標題
doc.Paragraphs.Add().Range.Text = '文檔標題'
doc.Paragraphs.Last.Range.Font.Bold = True
doc.Paragraphs.Last.Range.Font.Size = 16

# 添加段落
doc.Paragraphs.Add().Range.Text = '這是文檔的第一個段落。'

# 添加帶有樣式的文本
p = doc.Paragraphs.Add().Range
p.Text = '這是一個帶'
p.Font.Bold = False
p.Font.Italic = False
p.Collapse(0)  # wdCollapseEnd
p.Text = '有特殊格式'
p.Font.Bold = True
p.Font.Italic = True

# 設置字體樣式
p.Collapse(0)  # wdCollapseEnd
p.Text = '這是設置字體的文本'
p.Font.Name = 'Arial'
p.Font.Size = 14
p.Font.Bold = True
p.Font.Italic = True
p.Font.Color = 255  # 紅色

# 添加圖片
doc.InlineShapes.AddPicture('path_to_image.jpg', LinkToFile=False, SaveWithDocument=True)

# 添加表格
table = doc.Tables.Add(Range=doc.Paragraphs.Add().Range, NumRows=2, NumColumns=3)
table.Cell(1, 1).Range.Text = '行1列1'
table.Cell(1, 2).Range.Text = '行1列2'
table.Cell(2, 1).Range.Text = '行2列1'

# 添加分頁符
doc.Paragraphs.Add().Range.InsertBreak(7)  # wdPageBreak

# 添加書簽
doc.Bookmarks.Add('bookmark_name', doc.Paragraphs.Add().Range)
doc.Bookmarks['bookmark_name'].Range.Text = '這是書簽位置'

# 添加超鏈接
p = doc.Paragraphs.Add().Range
p.Hyperlinks.Add(Anchor=p, Address='https://www.example.com', SubAddress='', ScreenTip='點擊這里', TextToDisplay='點擊這里')

# 保存文檔
doc.SaveAs('example.docx')

# 關閉文檔和Word應用程序
doc.Close()
word.Quit()

2.讀取和修改現(xiàn)有文檔

import os
from win32com.client import Dispatch

# 打開Word應用程序
word = Dispatch('Word.Application')
word.Visible = 0  # 后臺運行,不顯示
word.DisplayAlerts = 0  # 不顯示警告

# 打開現(xiàn)有文檔
doc = word.Documents.Open('existing_document.docx')

# 讀取文檔內容
for para in doc.Paragraphs:
    print(para.Range.Text)

# 修改文檔內容
para = doc.Paragraphs[0]
para.Range.Text = '這是修改后的內容'

# 添加新段落
doc.Paragraphs.Add().Range.Text = '這是添加的新段落'

# 刪除段落
para = doc.Paragraphs[1]
para.Range.Delete()

# 保存修改后的文檔
doc.Save()

# 關閉文檔和Word應用程序
doc.Close()
word.Quit()

4. mammoth

概述:

mammoth 是一個用于將Word文檔(.docx格式)轉換為HTML的庫。它可以幫助你將Word文檔的內容提取出來,以便在Web應用中使用。

主要功能:

  • 將 .docx 文件轉換為 HTML
  • 提取文檔中的文本和樣式信息

優(yōu)點:

  • 輕量級:專注于文檔轉換,不依賴于其他庫。
  • 易于集成:可以輕松地將轉換后的HTML嵌入到Web應用中。

缺點:

  • 功能單一:主要用于文檔轉換,不支持文檔編輯操作。
  • 不支持復雜的樣式轉換:某些復雜的樣式可能無法完全保留。

適用場景:

  • 將Word文檔轉換為HTML,用于Web展示。
  • 提取文檔中的純文本內容。

詳細功能和代碼示例:

轉換文檔

from mammoth import convert_to_html

# 讀取 .docx 文件
with open('input.docx', 'rb') as docx_file:
    result = convert_to_html(docx_file)

# 獲取轉換后的HTML
html = result.value

# 保存HTML文件
with open('output.html', 'w', encoding='utf-8') as html_file:
    html_file.write(html)

# 處理轉換錯誤
if result.messages:
    for message in result.messages:
        print(f"Error: {message.type} - {message.message}")

5. pandoc

概述:

pandoc 是一個強大的文檔轉換工具,支持多種格式之間的轉換。雖然它不是一個Python庫,但可以通過Python腳本調用 pandoc 命令來實現(xiàn)文檔轉換。

主要功能:

  • 將多種格式的文檔轉換為Word文檔(.docx)
  • 支持Markdown、LaTeX等多種格式

優(yōu)點:

  • 支持廣泛的文檔格式。
  • 轉換質量高:能夠很好地保留原始文檔的格式。

缺點:

  • 需要安裝 pandoc 命令行工具。
  • 不支持文檔編輯操作。

適用場景:

  • 將其他格式的文檔轉換為Word文檔。
  • 需要高質量文檔轉換的場景。

詳細功能和代碼示例:

轉換文檔

import subprocess

# 調用 pandoc 命令將 Markdown 文件轉換為 Word 文檔
subprocess.run(['pandoc', 'input.md', '-o', 'output.docx'])

# 調用 pandoc 命令將 LaTeX 文件轉換為 Word 文檔
subprocess.run(['pandoc', 'input.tex', '-o', 'output.docx'])

# 調用 pandoc 命令將 HTML 文件轉換為 Word 文檔
subprocess.run(['pandoc', 'input.html', '-o', 'output.docx'])

# 處理轉換錯誤
try:
    subprocess.run(['pandoc', 'input.md', '-o', 'output.docx'], check=True)
except subprocess.CalledProcessError as e:
    print(f"Error: {e.returncode} - {e.output}")

6. PyWinAuto

概述:

PyWinAuto 是一個自動化測試工具,可以用來模擬用戶操作,包括打開和編輯Word文檔。這種方法適用于需要進行復雜交互操作的場景。

主要功能:

  • 模擬用戶操作(點擊、輸入文本等)
  • 控制應用程序窗口和菜單

優(yōu)點:

  • 靈活性高:可以模擬任何用戶操作。
  • 支持復雜的交互操作。

缺點:

  • 僅限Windows平臺。
  • 學習曲線較陡峭:需要熟悉自動化測試的概念和技術。

適用場景:

  • 需要進行復雜交互操作的場景。
  • 測試和驗證Word文檔的功能。

詳細功能和代碼示例:

模擬用戶操作

from pywinauto.application import Application

# 啟動Word應用程序
app = Application().start('C:\\Program Files\\Microsoft Office\\Office16\\WINWORD.EXE')
app.connect(title='無標題 - Word')

# 模擬輸入文本
app.window(title='無標題 - Word').type_keys('Hello, World!', with_spaces=True)

# 保存文檔
app.window(title='無標題 - Word').menu_select('文件->另存為...')
app.window(title='另存為').type_keys('C:\\path\\to\\file.docx', with_spaces=True)
app.window(title='另存為').button('保存').click()

# 關閉文檔
app.window(title='無標題 - Word').menu_select('文件->關閉')

# 關閉Word應用程序
app.kill()

7. Apache POI via Py4J

概述:

Apache POI 是一個Java庫,用于處理Microsoft Office文件格式。通過 Py4J,你可以在Python中調用Java代碼,從而利用 Apache POI 處理Word文檔。

主要功能:

  • 創(chuàng)建和編輯Word文檔
  • 讀取和修改文檔內容
  • 處理復雜的文檔結構

優(yōu)點:

  • 功能強大:可以實現(xiàn)幾乎所有Word操作。
  • 支持多種Office文件格式。

缺點:

  • 需要安裝Java環(huán)境。
  • 學習曲線較陡峭:需要熟悉Java和 Py4J 的使用。

適用場景:

  • 需要處理復雜文檔結構的場景。
  • 需要跨平臺支持的場景。

詳細功能和代碼示例:

創(chuàng)建和編輯文檔

首先,你需要安裝 Py4J 和 Apache POI,然后編寫一個Java類來處理Word文檔。

// Java code (WordProcessor.java)
import org.apache.poi.xwpf.usermodel.*;

public class WordProcessor {
    public void createDocument(String path) {
        XWPFDocument document = new XWPFDocument();
        
        // 添加標題
        XWPFParagraph titlePara = document.createParagraph();
        titlePara.setAlignment(ParagraphAlignment.CENTER);
        XWPFRun titleRun = titlePara.createRun();
        titleRun.setText("文檔標題");
        titleRun.setFontSize(16);
        titleRun.setBold(true);
        
        // 添加段落
        XWPFParagraph para = document.createParagraph();
        XWPFRun run = para.createRun();
        run.setText("這是文檔的第一個段落。");
        
        // 添加帶有樣式的文本
        run = para.createRun();
        run.setText("這是一個帶");
        run = para.createRun();
        run.setText("有特殊格式");
        run.setBold(true);
        run.setItalic(true);
        
        // 設置字體樣式
        run = para.createRun();
        run.setText("這是設置字體的文本");
        run.setFontFamily("Arial");
        run.setFontSize(14);
        run.setBold(true);
        run.setItalic(true);
        run.setColor("FF0000");  // 紅色
        
        // 添加圖片
        try {
            InputStream pictureStream = new FileInputStream("path_to_image.jpg");
            document.addPictureData(pictureStream, Document.PICTURE_TYPE_JPEG);
            int pictureIndex = document.getAllPictures().size();
            XWPFParagraph picPara = document.createParagraph();
            XWPFRun picRun = picPara.createRun();
            picRun.addPicture(document.getAllPictures().get(pictureIndex - 1), Document.PICTURE_TYPE_JPEG, "image.jpg", Units.toEMU(100), Units.toEMU(100));
        } catch (Exception e) {
            e.printStackTrace();
        }
        
        // 添加表格
        XWPFTable table = document.createTable(2, 3);
        table.getRow(0).getCell(0).setText("行1列1");
        table.getRow(0).getCell(1).setText("行1列2");
        table.getRow(1).getCell(0).setText("行2列1");
        
        // 添加分頁符
        XWPFParagraph pageBreakPara = document.createParagraph();
        pageBreakPara.createRun().addBreak(BreakType.PAGE);
        
        // 添加書簽
        XWPFParagraph bookmarkPara = document.createParagraph();
        bookmarkPara.createBookmark("bookmark_name");
        bookmarkPara.createRun().setText("這是書簽位置");
        
        // 添加超鏈接
        XWPFParagraph linkPara = document.createParagraph();
        XWPFHyperlink link = linkPara.createHyperlink();
        link.setAddress("https://www.example.com");
        link.createRun().setText("點擊這里");
        
        // 保存文檔
        try {
            FileOutputStream out = new FileOutputStream(path);
            document.write(out);
            out.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

然后在Python中調用這個Java類:

from py4j.java_gateway import JavaGateway, GatewayClient

# 啟動Java Gateway
gateway = JavaGateway(GatewayClient(port=25333), start_callback_server=True)

# 獲取Java對象
word_processor = gateway.entry_point.getWordProcessor()

# 調用Java方法
word_processor.createDocument("output.docx")

# 關閉Gateway
gateway.close()

總結

方法主要功能優(yōu)點缺點適用場景
python-docx創(chuàng)建、編輯Word文檔跨平臺、易于使用、功能豐富只支持 .docx 格式、不支持復雜文檔創(chuàng)建和編輯簡單文檔、自動生成報告
docx-mailmerge批量生成Word文檔簡單易用、支持復雜數(shù)據(jù)功能單一、不支持文檔編輯批量生成合同、發(fā)票等
win32com.client控制Word應用程序功能強大、支持 .doc 和 .docx 格式僅限Windows平臺、學習曲線陡峭復雜文檔操作、處理嵌入對象
mammoth將 .docx 轉換為 HTML輕量級、易于集成功能單一、不支持文檔編輯文檔轉換、Web展示
pandoc文檔格式轉換支持廣泛格式、轉換質量高需要安裝命令行工具文檔轉換、高質量輸出
PyWinAuto模擬用戶操作靈活性高、支持復雜交互僅限Windows平臺、學習曲線陡峭復雜交互操作、測試驗證
Apache POI via Py4J創(chuàng)建、編輯Word文檔功能強大、支持多種格式需要Java環(huán)境、學習曲線陡峭復雜文檔操作、跨平臺支持

到此這篇關于Python操作Word文檔7種方法的實現(xiàn)與對比(史上最全)的文章就介紹到這了,更多相關Python操作Word內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 在Spyder中如何導入項目

    在Spyder中如何導入項目

    文章介紹了在Spyder中導入已存在項目時遇到的錯誤及解決方法,通過創(chuàng)建新項目并復制`.spyproject`文件夾到已存在項目中,可以成功導入項目,此外,還提到如何在Spyder中顯示項目資源管理器
    2025-01-01
  • pytorch ImageFolder的覆寫實例

    pytorch ImageFolder的覆寫實例

    今天小編就為大家分享一篇pytorch ImageFolder的覆寫實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-02-02
  • Pandas中的 transform()結合 groupby()用法示例詳解

    Pandas中的 transform()結合 groupby()用法示例詳解

    這篇文章主要介紹了Pandas中的 transform() 結合 groupby() 用法示例,本文通過一個餐廳數(shù)據(jù)集給大家分享解決方案,示例代碼簡單易懂,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2021-09-09
  • Python 中的判斷語句,循環(huán)語句,函數(shù)

    Python 中的判斷語句,循環(huán)語句,函數(shù)

    這篇文章主要介紹了Python 中的判斷語句,循環(huán)語句,函數(shù),文章圍繞主題展開詳細的內容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-08-08
  • Python讀寫Redis數(shù)據(jù)庫操作示例

    Python讀寫Redis數(shù)據(jù)庫操作示例

    Redis是一個開源的非關系型數(shù)據(jù)庫,它采用C語言編寫,是一個key-value存儲系統(tǒng),它存儲的value類型很多,包括string(字符串),list(鏈表),set(集合),zset(有序集合),hash(哈希)
    2014-03-03
  • 詳解Python中列表數(shù)據(jù)的保存與讀取

    詳解Python中列表數(shù)據(jù)的保存與讀取

    列表是一種非常靈活的數(shù)據(jù)結構,它可以包含多種類型的元素,本文將介紹如何將一組列表保存到txt文件中,并提供相應的讀取方法,希望對大家有所幫助
    2024-04-04
  • python3使用pandas獲取股票數(shù)據(jù)的方法

    python3使用pandas獲取股票數(shù)據(jù)的方法

    今天小編就為大家分享一篇python3使用pandas獲取股票數(shù)據(jù)的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-12-12
  • 基于Python編寫新手向的簡易翻譯工具

    基于Python編寫新手向的簡易翻譯工具

    對于剛接觸編程的新手來說,編寫一個實用的工具是快速入門的好方法,本文將詳細介紹如何用 Python 編寫一個簡易的翻譯工具,需要的小伙伴可以了解下
    2025-08-08
  • flask框架中的cookie和session使用

    flask框架中的cookie和session使用

    這篇文章主要介紹了flask框架中的cookie和session使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-01-01
  • python多維列表總是只轉為一維數(shù)組問題解決

    python多維列表總是只轉為一維數(shù)組問題解決

    這篇文章主要為大家介紹了python多維列表總是只轉為一維數(shù)組問題解決實例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-09-09

最新評論