python 打印doc和excel

python 打印doc和excel

前阵子做了一个小工具,利用doc模板实现批量构造文档和打印,其中的打印功能查找很多文档才实现,现在单独记录下来,以备不时之需

DispatchEx模块

用到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:
        if q.empty():
            break
        else:
            # 取出一个
            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.暂时只想起来这么多

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值