利用python中的win32com模塊操作Word、Excel文件


word操作

doc文件轉換為docx文件

安裝win32com模塊:pip3 install pypiwin32

import os
from win32com.client import Dispatch, DispatchEx, constants


def doc_to_docx(f_path):
    w = Dispatch('Word.Application')
    # w = DispatchEx('Word.Application')  # 啟動獨立進程
    w.Visible = 0   # 后台運行
    w.DisplayAlerts = 0    # 不警告

    # 打開文件
    doc = w.Documents.Open(f_path)

    # 新建docx類型文件
    new_path = os.path.splitext(f_path)[0] + '.docx'

    '''
    word_doc = w.Documents.Add() # 創建新的文檔
    
    # 插入文字
    myRange = doc.Range(0,0)
    myRange.InsertBefore('Hello python!')
    
    # 使用樣式
    wordSel = myRange.Select()
    wordSel.Style = constants.wdStyleHeading1
    '''
    # 保存
    doc.SaveAs(new_path, 16, False, "", True, "", False, False, False, False)  # 參數1、2必須傳,如果文檔有密碼保護則需要傳第四個參數,參數2可以是12,或者16,或其他適合的類型,其余參數都是默認值,不傳也可以

    # 關閉退出
    doc.Close()
    w.Quit()

    # 刪除源文件
    os.remove(f_path)
    return new_path


doc_to_docx(r"C:\Users\Desktop\新建 Microsoft Word 文檔.doc")

安裝模塊python-docx:pip3 install python-docx

往Word文檔中插入圖片,並設置寬度

from docx import Document


def insert_img():
    msg = '插入圖片'
    image1 = r"C:\Users\Pictures\Camera Roll\1.jpg" 
    image2 = r"C:\Users\Pictures\Saved Pictures\IMG_20180214_113145.jpg"  # 保存在本地的圖片
    
    # 實例化對象
    doc = Document()
    doc.add_paragraph(msg)  # 添加文字
    doc.add_picture(image1, width=Inches(3))  # 添加圖, 設置寬度    
    doc.add_picture(image2, width=Inches(5))

    doc.save(r"C:\Users\rongg\Desktop\word_添加圖片.docx")  # 保存路徑

Excel操作

注:只能操作已經存在的Excel表格,不存在會報錯

from win32com.client import Dispatch


def excel_write(f_path, data, pwd=123):
    excel_app = Dispatch('Excel.Application')
    excel_app.Visible = 0  # 后台運行
    excel_app.DisplayAlerts = 0  # 禁止彈窗

    # 打開Excel文件, 有密碼時前三個參數必須傳
    xl_handle = excel_app.Workbooks.Open(f_path, UpdateLinks=3, ReadOnly=False, Format=None, Password=pwd)

    # 指定sheet頁
    sheet1 = xl_handle.Worksheets('Sheet1')
    for i in range(len(data)):
        for j in range(len(data[0])):
            sheet1.Cells(i + 1, j + 1).Value = data[i][j]
    print('done!')

    # 選擇單元格
    range_obj = sheet1.Range('A2')
    range_obj.EntireRow.Insert()  # 在選擇的單元格前插入行

    # 設置邊框
    '''
    5 雙點虛線
    6 加粗點虛線
    7 單實線
    8 點虛線
    9 雙實線
    10 單點虛線
    '''
    range_obj.Borders.LineStyle = 7

    # 為單元格賦值
    sheet1.Cells(8, 1).Value = 'Hello'
    sheet1.Cells(8, 2).Value = 'Excel'

    # 關閉退出
    xl_handle.Close(True)  # True  必須傳入,否則不會保存
    excel_app.Quit()


excel_write(
    r"C:\Users\Desktop\新建 Microsoft Excel 工作表.xlsx",
    [['name', 'age', 'gender'], ['jack', 22, 'man'], ['bob', 18, 'man'], ['alice', 19, 'woman']]
)

執行后的結果如下: 

 

 

后續更新。。。。


免責聲明!

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



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