前阵子做了一个小工具,利用doc模板实现批量构造文档和打印,其中的打印功能查找很多文档才实现,现在单独记录下来,以备不时之需
用到DispatchEx模块,首先安装 pywin32并导入
import os
from win32com.client import DispatchEx
import time
from queue import Queue# 创建一个空队列 用于存放文件夹内所有文件名
q = Queue(600)# 方法 遍历文件夹 将该文件夹下包括所有子文件夹下所有文档路径存入列表
def traver(path):pathlist = os.listdir(path)for file in pathlist:abspath = os.path.join(path, file)if os.path.isfile(abspath):# 将文件名放入队列里q.put(abspath)else:traver(abspath)# break# 通过路径 打印文档 队列q是全局变量 这里不用传参数
def docx_print():while True:pty():breakelse:# 取出一个f = q.get()# 通过对路径字符串切片后,取到扩展名,用于判断是表格还是文档eName = f.split('.')[-1]if eName == 'xls' or eName == 'xlsx':#w = DispatchEx('excel.Application')w = DispatchEx('excel.Application')w.Visible = 0 #不打开软件w.DisplayAlerts = 0 #不报错doc = w.Workbooks.Open(f).Worksheets('Sheet1')elif eName == 'doc' or eName == 'docx':w = DispatchEx('kwps.Application')w.Visible = 0 # 不打开软件w.DisplayAlerts = 0 # 不报错doc = w.Documents.Open(f)print("正在打印:{}".format(f))doc.PrintOut()time.sleep(1)w.Quit()if __name__ == '__main__':## 需要打印文件或文件夹的路径path = r'C:Users...Desktop...'traver(path)print("文件读取完毕,共有{}个".format(q.qsize()))docx_print()
1.打印效果很不错,不会弹出word软件,excel和word都能做到自动打印,只要将想要输出的打印机设为系统默认打印机即可
2.可以打印路径下,文件夹和子文件夹内所有符合条件的
3.暂时只做了文档和表格,图片、pdf打印比较复杂,以后再完善
4.暂时只想起来这么多
本文发布于:2024-02-02 08:30:47,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170683384642591.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |