当前位置:首页>python>《告别手动打印文档!这个Python工具调用WPS自动批量打印,省下90%时间》

《告别手动打印文档!这个Python工具调用WPS自动批量打印,省下90%时间》

  • 2026-10-11 05:45:56
《告别手动打印文档!这个Python工具调用WPS自动批量打印,省下90%时间》

“带你横跨办公自动化的数据江海”

@摸鱼

前言

关于摸鱼

(

ABOUT MOYU

)

闻道有先后,术业有专攻。

各位大佬朋友们好!

~我依旧是你们的老朋友摸鱼~

在职场摸爬滚打的这十多年里,我用Python悄悄干了不少“正事”——不知不觉攒下了一整套办公自动化的实用项目技巧。去年10月初创立了公众号 「码海听潮」 ,初衷很简单:把重复的劳动交给代码,把摸鱼的时间留给生活。

目前已经吭哧吭哧更新了100多篇原创文章,每一篇都是实操干货,不讲虚的,只聊怎么用代码真正解放双手,帮大家早点下班、准点摸鱼

好了,多了不说,少了不唠,今天给大佬们分享一款本人原创的【调用WPS批量打印文件】小工具,这小工具一键添加文件,自动识别格式,批量发送到WPS打印池。再也不用守着打印机一个个点打印,节省大量重复操作时间,办公效率直接拉满。

《办公工具成品展示:》

《该办公工具核心功能亮点:》

01

 亮点1:智能 WPS 深度集成🎯

        • 自动注册表定位:无需手动配置,自动从 Windows 注册表找到 WPS 安装路径

        • 组件智能匹配:Word 文件用 wps.exe,Excel 用 et.exe,PPT 用 wpp.exe

        • 三层回退机制:WPS 打印 → 系统默认打印 → 友好失败提示,保证成功率

        • 状态可视化:界面顶部实时显示 WPS 检测状态(✅已安装/⚠️未安装)

        02

         亮点2:多策略打印引擎🔄 

            • 多种命令尝试:内置 /print /quit、/p、/Silent 等不同参数组合

            • 超时保护:每个文件 60 秒超时,防止卡死

            • 间隔可控:0.5-5 秒可调打印间隔,避免打印机过载

            • 支持取消:打印过程中随时中止,已完成的会记录

            03

            亮点3:5 种文件选择方式🖱️ 

            • 复选框点选

            • 鼠标拖拽框选

            • Ctrl/Shift 多选行

            • 点击文件名行自动切换状态

            • 全选/取消全选按钮

            《该办公工具代码展示:》

            下面,我就用python代码让各位大佬见识一下,什么叫"传统文化"遇上"赛博效率"

            import sysfrom PyQt6.QtWidgets import (    QApplication, QMainWindow, QWidget, QVBoxLayout, QHBoxLayout,    QPushButton, QLabel, QLineEdit, QComboBox, QTableWidget, QTableWidgetItem,    QHeaderView, QGroupBox, QCheckBox, QTextEdit, QFrame)from PyQt6.QtCore import Qtfrom PyQt6.QtGui import QFontclass PrintToolWindow(QMainWindow):    def __init__(self):        super().__init__()        self.setWindowTitle("调用WPS批量打印文件工具(欢迎关注微信公众号:码海听潮)")        self.setMinimumSize(800, 700)        self.setAcceptDrops(True)        self.setup_ui()    def setup_ui(self):        central = QWidget()        self.setCentralWidget(central)        main_layout = QVBoxLayout(central)        # ==================== 文件夹选择区域 ====================        folder_group = QGroupBox("📁 文件夹选择")        folder_layout = QHBoxLayout(folder_group)        self.folder_input = QLineEdit()        self.folder_input.setPlaceholderText("选择文件夹路径,或直接拖拽文件夹到此窗口...")        folder_layout.addWidget(self.folder_input)        self.browse_btn = QPushButton("浏览...")        folder_layout.addWidget(self.browse_btn)        self.scan_btn = QPushButton("🔍 扫描文件夹")        self.scan_btn.setStyleSheet("background-color: #4CAF50; color: white; padding: 5px 15px; font-weight: bold;")        folder_layout.addWidget(self.scan_btn)        main_layout.addWidget(folder_group)        # ==================== 打印设置区域 ====================        settings_group = QGroupBox("⚙️ 打印设置")        settings_layout = QHBoxLayout(settings_group)        settings_layout.addWidget(QLabel("文件类型:"))        self.ext_input = QLineEdit()        self.ext_input.setPlaceholderText("请输入扩展名,多个用逗号分隔,如: .pdf,.doc,.docx,.txt")        self.ext_input.setText(".pdf,.doc,.docx,.txt")        self.ext_input.setMinimumWidth(300)        settings_layout.addWidget(self.ext_input)        # 常用扩展名快捷按钮        quick_btn_layout = QHBoxLayout()        for name, exts in [("文档", ".pdf,.doc,.docx,.txt"),                            ("图片", ".jpg,.png,.gif"),                           ("表格", ".xls,.xlsx"),                           ("全部", ".pdf,.doc,.docx,.xls,.xlsx,.ppt,.pptx,.txt,.jpg,.png")]:            btn = QPushButton(name)            btn.setFixedWidth(50)            btn.clicked.connect(lambda checked, e=exts: self.ext_input.setText(e))            quick_btn_layout.addWidget(btn)        settings_layout.addLayout(quick_btn_layout)        settings_layout.addStretch()        main_layout.addWidget(settings_group)        # ==================== 文件列表区域 ====================        file_group = QGroupBox("📄 文件列表")        file_layout = QVBoxLayout(file_group)        # 顶部信息栏        info_layout = QHBoxLayout()        self.file_count_label = QLabel("共 0 个文件")        self.file_size_label = QLabel("总大小: 0 B")        self.file_type_label = QLabel("")        info_layout.addWidget(self.file_count_label)        info_layout.addWidget(self.file_size_label)        info_layout.addWidget(self.file_type_label)        info_layout.addStretch()        # 全选/取消全选按钮        self.select_all_btn = QPushButton("全选")        self.select_all_btn.setFixedWidth(60)        info_layout.addWidget(self.select_all_btn)        self.deselect_all_btn = QPushButton("取消全选")        self.deselect_all_btn.setFixedWidth(80)        info_layout.addWidget(self.deselect_all_btn)        file_layout.addLayout(info_layout)        # 文件表格        self.file_table = QTableWidget()        self.file_table.setColumnCount(3)        self.file_table.setHorizontalHeaderLabels(["选择", "文件名", "类型"])        self.file_table.horizontalHeader().setSectionResizeMode(0, QHeaderView.ResizeMode.ResizeToContents)        self.file_table.horizontalHeader().setSectionResizeMode(1, QHeaderView.ResizeMode.Stretch)        self.file_table.horizontalHeader().setSectionResizeMode(2, QHeaderView.ResizeMode.ResizeToContents)        # 表头文字居中        self.file_table.horizontalHeaderItem(1).setTextAlignment(Qt.AlignmentFlag.AlignCenter)        # 启用行选择和多项选择        self.file_table.setSelectionBehavior(QAbstractItemView.SelectionBehavior.SelectRows)        self.file_table.setSelectionMode(QAbstractItemView.SelectionMode.ExtendedSelection)        self.file_table.setAlternatingRowColors(True)        # 设置表格样式:所有单元格居中        self.file_table.setStyleSheet("""            QTableWidget::item {                text-align: center;            }            QTableWidget::item:selected {                background-color: #2196F3;                color: white;            }        """)        file_layout.addWidget(self.file_table)        main_layout.addWidget(file_group, 1)        # ==================== 打印控制区域 ====================        control_group = QGroupBox("🖨️ 打印控制")        control_layout = QHBoxLayout(control_group)        self.print_btn = QPushButton("开始打印")        self.print_btn.setStyleSheet("background-color: #2196F3; color: white; padding: 8px 20px; font-weight: bold;")        control_layout.addWidget(self.print_btn)        self.cancel_btn = QPushButton("取消打印")        self.cancel_btn.setEnabled(False)        self.cancel_btn.setStyleSheet("background-color: #f44336; color: white;")        control_layout.addWidget(self.cancel_btn)        control_layout.addWidget(QLabel("打印间隔:"))        self.interval_spin = QComboBox()        self.interval_spin.addItems(["0.5", "1", "2", "3", "5"])        self.interval_spin.setCurrentText("5")        control_layout.addWidget(self.interval_spin)        control_layout.addWidget(QLabel("秒"))        control_layout.addStretch()        main_layout.addWidget(control_group)        # ==================== 日志区域 ====================        log_group = QGroupBox("📝 打印日志")        log_layout = QVBoxLayout(log_group)        self.log_text = QTextEdit()        self.log_text.setReadOnly(True)        self.log_text.setMaximumHeight(180)        self.log_text.setFont(QFont("Consolas", 9))        log_layout.addWidget(self.log_text)        self.clear_log_btn = QPushButton("清空日志")        log_layout.addWidget(self.clear_log_btn)        main_layout.addWidget(log_group)def main():    app = QApplication(sys.argv)    app.setStyle("Fusion")    window = PrintToolWindow()    window.show()    sys.exit(app.exec())if __name__ == '__main__':    main()

            通过上面Python自动化脚本,仅用几秒钟的时间就完成原需手动操作数小时甚至数天的工作任务。从最初准备手动人工机械操作的麻木到用python实现高效自动化的畅快,工作效率获得指数级提升,终于实现了不加班熬夜的自由!

            大佬们也可以举一反三,参照上面的代码思路根据自己工作中的实际情况来具体问题具体分析,实现自己定制化的需求。

            《该办公工具的应用场景:》

            场景
            说明

            批量打印办公文档

            批量打印各种offce文档

            结语

            当Python遇见办公,牛马打工人终于笑出了猪叫声

            【职场人必看】每天早上一睁眼,想到又要面对:

            1.📊 堆积如山的Excel表格

            2.📑 机械重复的复制粘贴

            3.✍️ 永远改不完的各类文档

            4.诸如此类的更多........

            是不是连Ctrl+Alt+Delete的心都有了?

            别慌!别急,摸鱼这位“职场外挂”已经带着Python代码来拯救你了!

            感谢各位大佬观看,还望各位大佬抬抬贵手一键三连,多多关注点赞转发评论,大佬们的支持才是摸鱼孜孜不倦更新原创干货的动力!

            另外,本篇文章的资源已上传至nas私有云,有需要的大佬可以私信摸鱼君获取......

            最新文章

            随机文章