python替换word文件中的图片
模拟鼠标键盘,截屏
python
import glob
import os
import time
import pyautogui
import pyautogui as p
from PIL import ImageGrab
from pynput.keyboard import Controller
# -*- coding:utf-8 -*-
directory = './'
directory1 = './output'
for f in glob.glob(os.path.join(directory, '*.docx')):
os.remove(f)
for f in glob.glob(os.path.join(directory1, '*.png')):
os.remove(f)
def find_and_click(image_path, confidence):
image_location = pyautogui.locateOnScreen(image_path, grayscale=True, confidence=confidence)
if image_location:
time.sleep(0.5)
position = pyautogui.center(image_location)
pyautogui.click(position)
else:
print(f"{image_path} 未找到指定的图片")
time.sleep(1)
# 初始化键盘控制器i
keyboard = Controller()
find_and_click("./images/01hf.jpg", 0.8)
time.sleep(1)
find_and_click("./images/02my.jpg", 0.8)
time.sleep(1)
find_and_click("./images/03bg.jpg", 0.8)
time.sleep(1)
find_and_click("./images/04cty.jpg", 0.8)
time.sleep(1)
find_and_click("./images/05zsxx.jpg", 0.8)
time.sleep(3)
find_and_click("./images/06sj.jpg", 0.8)
time.sleep(2)
find_and_click("./images/07ss.jpg", 0.8)
time.sleep(2)
keyboard = Controller()
keyboard.press(key='p') # 按键按下s
time.sleep(0.2)
keyboard.release(key='p') # 按键松开s
time.sleep(1)
find_and_click("./images/08sj.jpg", 0.8)
time.sleep(1)
p.doubleClick(1169, 145, 0.5)
time.sleep(5)
# 定义截图区域的左上角和右下角坐标
# 这里的坐标应根据你的需求进行调整
left, top, right, bottom = 992, 217, 1899, 391
# 使用ImageGrab.grab()方法进行截图
# 参数为截图区域的左上角和右下角坐标
screenshot = ImageGrab.grab(bbox=(left, top, right, bottom))
# 保存截图图片
screenshot.save('./output/0test.png')
time.sleep(0.5)
find_and_click("./images/14ht.jpg", 0.8)
time.sleep(3)
python替换word文件中的图片
python
import glob
import os
import shutil
from docx import Document
# -*- coding:utf-8 -*-
# 删除目录下所有的*.docx文件
directory = './'
for f in glob.glob(os.path.join(directory, '*.docx')):
os.remove(f)
# 将源文件拷贝到目标目录
source_file = 'D:\\周报整理\\2024年周报\\2024年4月运维服务报告v06.docx'
target_directory = './'
shutil.copy(source_file, target_directory)
# 获取目录下所有文件
folder_path = r'./'
file_list = os.listdir(folder_path)
# 遍历文件列表,修改xxx.docx改名为test.docx
for file_name in file_list:
# 检查文件是否以 .xls 结尾
if file_name.endswith('.docx'):
# 构造新文件名
new_file_name = os.path.join(folder_path, 'test.docx')
# 重命名文件
os.rename(os.path.join(folder_path, file_name), new_file_name)
def get_image_info(doc):
for rel in doc.part.rels.values():
if rel.reltype == 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/image':
print('Image ID:', rel.rId, 'Filename:', rel.target_part.filename)
def replace_image_by_id(doc, rId, new_image_path):
for rel in doc.part.rels.values():
if rel.reltype == 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/image' and rel.rId == rId:
target_part = rel.target_part
with open(new_image_path, 'rb') as f:
target_part._blob = f.read()
document = Document('test.docx')
# 获取图片信息
get_image_info(document)
# 替换图片
replace_image_by_id(document, 'rId11', './output/0test.png')
# 保存文档
document.save('output_test.docx')