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']]
)
執行后的結果如下:

后續更新。。。。
