最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

pywin32 實(shí)現(xiàn) Windows Office自動(dòng)化的示例代碼

 更新時(shí)間:2025年09月03日 11:23:10   作者:倔強(qiáng)老呂  
pywin32是Python操作Windows系統(tǒng)及Office套件的強(qiáng)大工具,通過(guò)COM 接口實(shí)現(xiàn)對(duì)Word、Excel、PowerPoint、Outlook等軟件的自動(dòng)化控制,感興趣的可以了解一下

pywin32 是 Python 操作 Windows 系統(tǒng)及 Office 套件的強(qiáng)大工具,通過(guò) COM 接口實(shí)現(xiàn)對(duì) Word、Excel、PowerPoint、Outlook 等軟件的自動(dòng)化控制。

環(huán)境安裝與準(zhǔn)備

1. 安裝 pywin32

pip install pywin32

2. 確保已安裝 Office 軟件

  • Microsoft Office 2010 或更高版本
  • 安裝時(shí)勾選 "COM 加載項(xiàng)" 支持

Excel 自動(dòng)化操作

1. 基礎(chǔ) Excel 操作

import win32com.client as win32

# 啟動(dòng)Excel應(yīng)用
excel = win32.Dispatch('Excel.Application')
excel.Visible = True  # 可視化操作

# 創(chuàng)建工作簿
wb = excel.Workbooks.Add()
ws = wb.Worksheets(1)

# 單元格操作
ws.Cells(1, 1).Value = "Hello Excel"  # A1單元格
ws.Range("A2").Value = 123.45
ws.Range("A3:B3").Value = ["Python", "自動(dòng)化"]

# 保存文件
wb.SaveAs(r'C:\test\demo.xlsx')
wb.Close()
excel.Quit()

2. 高級(jí) Excel 功能

# 格式設(shè)置
ws.Range("A1:A3").Font.Bold = True
ws.Range("A1:A3").Font.Color = 0xFF0000  # 紅色
ws.Columns(1).ColumnWidth = 20

# 公式應(yīng)用
ws.Range("B4").Formula = "=SUM(A2:A3)"

# 圖表創(chuàng)建
chart = ws.Shapes.AddChart2(240, win32.constants.xlColumnClustered).Chart
chart.SetSourceData(ws.Range("A1:B3"))

# 數(shù)據(jù)篩選
ws.Range("A1:B10").AutoFilter(Field:=1, Criteria1:=">100")

# 宏調(diào)用
excel.Application.Run("MacroName")

Word 自動(dòng)化操作

1. 基礎(chǔ) Word 操作

word = win32.Dispatch('Word.Application')
word.Visible = True

# 新建文檔
doc = word.Documents.Add()

# 內(nèi)容操作
doc.Content.Text = "Python自動(dòng)化Word文檔\n"
paragraph = doc.Content.Paragraphs.Add()
paragraph.Range.Text = "第一段落內(nèi)容"
paragraph.Range.Font.Bold = True
paragraph.Format.Alignment = 1  # 1=居中

# 表格操作
table = doc.Tables.Add(doc.Range(0,0), 3, 4)  # 3行4列
table.Cell(1,1).Range.Text = "單元格1"

# 保存
doc.SaveAs(r'C:\test\demo.docx')
doc.Close()
word.Quit()

2. 高級(jí) Word 功能

# 樣式應(yīng)用
styles = doc.Styles
new_style = styles.Add("MyStyle", 1)  # 1=段落樣式
new_style.Font.Name = "宋體"
new_style.Font.Size = 14

# 頁(yè)眉頁(yè)腳
section = doc.Sections(1)
header = section.Footers(win32.constants.wdHeaderFooterPrimary)
header.Range.Text = "公司機(jī)密"

# 郵件合并
doc.MailMerge.MainDocumentType = 0  # 0=普通文檔
doc.MailMerge.OpenDataSource(Name:=r"C:\data\contacts.xlsx")

# 批量替換
word.Selection.Find.Execute("舊文本", False, False, False, False, False, True, 1, True, "新文本", 2)

PowerPoint 自動(dòng)化

ppt = win32.Dispatch('PowerPoint.Application')
ppt.Visible = True

# 新建演示文稿
pres = ppt.Presentations.Add()

# 添加幻燈片
slide1 = pres.Slides.Add(1, 1)  # 1=標(biāo)題幻燈片版式
slide1.Shapes(1).TextFrame.TextRange.Text = "主標(biāo)題"
slide1.Shapes(2).TextFrame.TextRange.Text = "副標(biāo)題"

# 添加內(nèi)容幻燈片
slide2 = pres.Slides.Add(2, 2)  # 2=標(biāo)題和內(nèi)容版式
slide2.Shapes(1).TextFrame.TextRange.Text = "項(xiàng)目列表"
slide2.Shapes(2).TextFrame.TextRange.Text = "- 第一項(xiàng)\n- 第二項(xiàng)"

# 添加圖表
slide3 = pres.Slides.Add(3, 5)  # 5=標(biāo)題和圖表版式
chart = slide3.Shapes(2).Chart
chart.ChartData.Workbook.Worksheets(1).Range("A1:B3").Value = [["產(chǎn)品", "銷量"], ["A", 120], ["B", 150]]

# 保存
pres.SaveAs(r'C:\test\demo.pptx')
pres.Close()
ppt.Quit()

Outlook 自動(dòng)化

1. 郵件發(fā)送

outlook = win32.Dispatch('Outlook.Application')
mail = outlook.CreateItem(0)  # 0=郵件項(xiàng)

mail.Subject = 'Python自動(dòng)化郵件'
mail.Body = '這是一封通過(guò)Python自動(dòng)發(fā)送的郵件'
mail.To = 'recipient@example.com'

# 添加附件
attachment = r'C:\test\report.xlsx'
mail.Attachments.Add(attachment)

# 發(fā)送
mail.Send()

# 或者顯示郵件窗口人工發(fā)送
# mail.Display(True)

2. 郵件接收處理

outlook = win32.Dispatch('Outlook.Application')
namespace = outlook.GetNamespace("MAPI")
inbox = namespace.GetDefaultFolder(6)  # 6=收件箱

messages = inbox.Items
for message in messages:
    if message.UnRead:  # 未讀郵件
        print(f"主題: {message.Subject}")
        print(f"發(fā)件人: {message.SenderName}")
        print(f"正文: {message.Body[:100]}...")
        
        # 標(biāo)記為已讀
        message.UnRead = False
        message.Save()

實(shí)用技巧與問(wèn)題解決

1. 錯(cuò)誤處理

try:
    excel = win32.Dispatch('Excel.Application')
    # 其他操作...
except Exception as e:
    print(f"Office自動(dòng)化錯(cuò)誤: {str(e)}")
finally:
    # 確保釋放資源
    if 'excel' in locals():
        excel.Quit()

2. 進(jìn)程清理

import os

def kill_process(process_name):
    os.system(f'taskkill /f /im {process_name}')

# 強(qiáng)制結(jié)束Excel進(jìn)程
kill_process('EXCEL.EXE')

3. 提高性能

# 禁用屏幕刷新和警告提示
excel.ScreenUpdating = False
excel.DisplayAlerts = False

# 執(zhí)行批量操作...

# 操作完成后恢復(fù)
excel.ScreenUpdating = True
excel.DisplayAlerts = True

4. 常見(jiàn)問(wèn)題解決

權(quán)限問(wèn)題

  • 以管理員身份運(yùn)行Python腳本
  • 檢查防病毒軟件設(shè)置

版本兼容性

# 指定特定版本
excel = win32.Dispatch('Excel.Application.16') # Office 2016

中文路徑處理

path = r'C:\測(cè)試\文檔.xlsx'.encode('utf-8').decode('latin1') 
wb = excel.Workbooks.Open(path)

實(shí)際應(yīng)用案例

1. 批量生成Word報(bào)告

def generate_reports(template_path, output_dir, data_list):
    word = win32.Dispatch('Word.Application')
    
    for data in data_list:
        doc = word.Documents.Open(template_path)
        
        # 替換模板標(biāo)記
        for field, value in data.items():
            word.Selection.Find.Execute(field, False, False, False, False, False, True, 1, True, str(value), 2)
        
        # 保存為單獨(dú)文件
        output_path = f"{output_dir}/report_{data['id']}.docx"
        doc.SaveAs(output_path)
        doc.Close()
    
    word.Quit()

2. Excel數(shù)據(jù)匯總儀表板

def create_dashboard(data_files, output_file):
    excel = win32.Dispatch('Excel.Application')
    wb = excel.Workbooks.Add()
    
    # 匯總數(shù)據(jù)
    for i, file in enumerate(data_files, 1):
        ws = wb.Worksheets.Add()
        ws.Name = f"Source_{i}"
        
        # 從CSV導(dǎo)入數(shù)據(jù)
        ws.QueryTables.Add(
            Connection=f"TEXT;{file}",
            Destination=ws.Range("A1")
        ).Refresh()
    
    # 創(chuàng)建匯總表
    summary_ws = wb.Worksheets.Add()
    summary_ws.Name = "Summary"
    
    # 添加數(shù)據(jù)透視表
    pivot_cache = wb.PivotCaches().Create(1, wb.Sheets("Source_1").UsedRange)
    pivot_table = pivot_cache.CreatePivotTable(summary_ws.Range("A3"), "DataSummary")
    
    # 配置透視表字段
    pivot_table.PivotFields("Category").Orientation = 1  # 行標(biāo)簽
    pivot_table.PivotFields("Value").Orientation = 4    # 數(shù)值
    
    wb.SaveAs(output_file)
    wb.Close()
    excel.Quit()

pywin32 提供了最全面的 Office 自動(dòng)化能力,適合需要精細(xì)控制 Office 應(yīng)用場(chǎng)景。使用時(shí)需注意資源釋放和錯(cuò)誤處理,確保自動(dòng)化流程的穩(wěn)定性。

到此這篇關(guān)于pywin32 實(shí)現(xiàn) Windows Office自動(dòng)化的示例代碼的文章就介紹到這了,更多相關(guān)pywin32實(shí)現(xiàn)Office自動(dòng)化內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 機(jī)器學(xué)習(xí)之KNN算法原理及Python實(shí)現(xiàn)方法詳解

    機(jī)器學(xué)習(xí)之KNN算法原理及Python實(shí)現(xiàn)方法詳解

    這篇文章主要介紹了機(jī)器學(xué)習(xí)之KNN算法原理及Python實(shí)現(xiàn)方法,結(jié)合實(shí)例形式詳細(xì)分析了機(jī)器學(xué)習(xí)KNN算法原理以及Python相關(guān)實(shí)現(xiàn)步驟、操作技巧與注意事項(xiàng),需要的朋友可以參考下
    2018-07-07
  • Pycharm安裝報(bào)錯(cuò):Cannot detect a launch configuration解決辦法

    Pycharm安裝報(bào)錯(cuò):Cannot detect a launch confi

    本文主要介紹了Pycharm安裝報(bào)錯(cuò):Cannot detect a launch configuration解決辦法,具有一定的參考價(jià)值,感興趣的可以了解一下
    2025-03-03
  • Pytorch模型的保存/復(fù)用/遷移實(shí)現(xiàn)代碼

    Pytorch模型的保存/復(fù)用/遷移實(shí)現(xiàn)代碼

    本文整理了Pytorch框架下模型的保存、復(fù)用、推理、再訓(xùn)練和遷移等實(shí)現(xiàn),本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-05-05
  • python實(shí)現(xiàn)中文轉(zhuǎn)換url編碼的方法

    python實(shí)現(xiàn)中文轉(zhuǎn)換url編碼的方法

    這篇文章主要介紹了python實(shí)現(xiàn)中文轉(zhuǎn)換url編碼的方法,結(jié)合實(shí)例形式分析了Python針對(duì)中文的gbk與utf-8編碼轉(zhuǎn)換的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2016-06-06
  • 關(guān)于numpy中矩陣的翻轉(zhuǎn)(flip)

    關(guān)于numpy中矩陣的翻轉(zhuǎn)(flip)

    這篇文章主要介紹了關(guān)于numpy中矩陣的翻轉(zhuǎn)(flip),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • OpenCV實(shí)現(xiàn)直線檢測(cè)

    OpenCV實(shí)現(xiàn)直線檢測(cè)

    這篇文章主要為大家詳細(xì)介紹了OpenCV實(shí)現(xiàn)直線檢測(cè),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • Python換行與不換行的輸出實(shí)例

    Python換行與不換行的輸出實(shí)例

    這篇文章主要介紹了Python換行與不換行的輸出實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-02-02
  • python動(dòng)態(tài)加載包的方法小結(jié)

    python動(dòng)態(tài)加載包的方法小結(jié)

    這篇文章主要介紹了python動(dòng)態(tài)加載包的方法,結(jié)合實(shí)例形式總結(jié)分析了Python動(dòng)態(tài)加載模塊,動(dòng)態(tài)增加屬性及動(dòng)態(tài)加載包的相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2016-04-04
  • 使用Python快速制作可視化報(bào)表的方法

    使用Python快速制作可視化報(bào)表的方法

    今天小編就為大家分享一篇使用Python快速制作可視化報(bào)表的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-02-02
  • Python中pandas的dataframe過(guò)濾數(shù)據(jù)方法

    Python中pandas的dataframe過(guò)濾數(shù)據(jù)方法

    這篇文章主要介紹了Python中pandas的dataframe過(guò)濾數(shù)據(jù)方法,Pandas是另外一個(gè)用于處理高級(jí)數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)分析的Python庫(kù),Pandas是基于Numpy構(gòu)建的一種工具,需要的朋友可以參考下
    2023-07-07

最新評(píng)論

龙川县| 桃源县| 德兴市| 茂名市| 临武县| 连城县| 鄄城县| 敖汉旗| 花莲县| 阜平县| 苏州市| 肃宁县| 广丰县| 卓尼县| 重庆市| 松溪县| 邵东县| 驻马店市| 山阳县| 图木舒克市| 澜沧| 塘沽区| 峨边| 北海市| 杭锦后旗| 武汉市| 司法| 昌邑市| 汤原县| 民乐县| 临西县| 临沂市| 濮阳市| 东源县| 崇仁县| 分宜县| 昌宁县| 电白县| 巴中市| 新野县| 昆山市|