返回作品列表

网友作品 #000006 · 提交于 2026/08/04

全能文档处理工具:Excel/PDF 合并转换打印

★★★★★业余水平pythondotnetwpsjsaWPSdbsheetExcelVBAWPSJSaddin

作品作者

哈利波特业余水平
使用 Skill
pythondotnetwpsjsaWPSdbsheetExcelVBAWPSJSaddin
提交你的作品

作品简介

「全能文档处理工具」是基于 Python Tkinter 的桌面 GUI 应用,主界面以页签组织八个功能模块:Excel 合并、Excel 拆分、PDF 合并、PDF 拆分、PDF 提取、Excel 转 PDF、图片转 PDF、批量打印。整个项目用 PyInstaller 打包为约 42.5MB 的单文件 exe,无控制台窗口,双击即用、可自由分发。

核心亮点

  • Excel 合并:支持 xlsx/xls/csv,提供按工作表合并(同名工作表合并到一起)、按文件合并、全部合并三种方式,可跳过后续文件的表头、添加来源列、删除空行
  • Excel 拆分:按工作表拆成多个单表文件,或按固定行数自动分文件,输出目录自定义
  • PDF 合并/拆分/提取:支持“1-3,5,7-9”式页码范围语法,可逐页拆分或提取指定页面
  • 格式转 PDF:Excel 转 PDF 保留表格样式、A4 纵向横向可选;png/jpg/bmp/gif/tiff 等图片合并转 PDF 并自动适配页面
  • 批量打印:支持 PDF、图片、Excel,可设置打印机、份数(1-99)、彩色/黑白、页面大小、方向与页码范围,多级打印引擎自动兜底
  • 预览弹窗:图片与 PDF 可翻页、缩放预览,预览中可直接调起打印
  • 过程可控:实时日志显示、进度条跟踪,另附测试打印功能

技术与工具

  • GUI 框架:Python 内置 Tkinter/ttk
  • 处理库:PyMuPDF(PDF)、Pillow(图像)、ReportLab(PDF 生成)、openpyxl/xlrd(Excel)
  • 打印方案:PDF 走 SumatraPDF 静默打印与 .NET PrintDocument,图片走 PowerShell .NET 打印,多引擎按优先级兜底
  • 打包:PyInstaller 6.21.0 单文件模式,build.bat 一键构建

开发过程

开发中作者记录并逐一修复了一批典型问题:PDF 拆分缺页改用 doc.select 方式;合并报 document closed 调整文档打开/关闭时序;打印页面缩小改为 96 DPI 渲染;打印空白页、无输出等打印机驱动兼容问题替换为 PowerShell .NET PrintDocument 方案;启动闪黑框则隐藏 PowerShell 窗口解决。最终以 build.bat 自动调用 PyInstaller 完成打包交付。

适用场景

  • 行政、财务等批量处理文档的岗位:文件合并、拆分、格式转换、批量打印一站式完成
  • 中小团队:以自研工具替代付费办公会员功能,并可按自身需求继续定制
原始提交内容(点开查看,可复制全文去问 AI)

全能文档处理工具 - 开发成果汇总

项目概述

一个基于 Python Tkinter 的桌面 GUI 应用,集成了 Excel 合并拆分、PDF 处理、格式转换、批量打印 等功能,打包为单文件 .exe 可分发交付。

技术栈

组件 技术/库 版本 GUI 框架 Tkinter / ttk Python 内置 PDF 处理 PyMuPDF (fitz) 1.28.0 图像处理 Pillow 12.3.0 PDF 生成 ReportLab 5.0.0 Excel 处理 openpyxl / xlrd 3.1.5 / 2.0.2 打包工具 PyInstaller 6.21.0 运行环境 Python 3.14.6 操作系统 Windows 11 26200

项目结构

功能清单

1. Excel 合并

  • 支持 .xlsx / .xls / .csv 格式
  • 选择多个文件,合并为单一 Excel 工作簿
  • 保持原始格式和样式
  • 支持指定输出路径

2. Excel 拆分

  • 按工作表拆分:一个多工作表文件拆分为多个单工作表文件
  • 按行数拆分:每个文件固定行数,自动分文件
  • 自定义输出目录

3. PDF 合并

  • 选择多个 PDF 文件,合并为一个 PDF
  • 保持原始页面顺序和内容

4. PDF 拆分

  • 按页码范围拆分(如 1-3,5,7-9 )
  • 每页拆分为单独 PDF 文件
  • 支持自定义输出目录

5. PDF 提取

  • 提取指定页面范围(如 1-3,5,7-9 )
  • 输出为新的 PDF 文件

6. Excel 转 PDF

  • 支持 .xlsx / .xls / .csv 格式
  • 保留表格样式和布局
  • 支持 A4 纵向/横向输出

7. 图片转 PDF

  • 支持 .png / .jpg / .jpeg / .bmp / .gif / .tiff
  • 多图片合并为一个 PDF
  • 自动适配页面大小

8. 批量打印

  • 支持 PDF、图片(PNG/JPG/BMP/GIF/TIFF)、Excel 文件
  • 打印设置 :
    • 打印机选择(支持刷新打印机列表)
    • 打印份数(1-99)
    • 颜色模式(彩色/黑白)
    • 页面大小(A4/A3/A5/Letter/Legal/B4/B5)
    • 方向(纵向/横向)
    • 页码范围(仅 PDF,如 1-5,7,9 )
  • 打印引擎 (按优先级):
    1. PDF:SumatraPDF 静默打印 转图片 + .NET PrintDocument
    2. 图片:PowerShell .NET PrintDocument mspaint /pt os.startfile
    3. Excel:系统默认程序打印
  • 实时日志显示
  • 进度条跟踪
  • 测试打印功能

9. 预览弹窗

  • 支持图片和 PDF 预览
  • 上一页/下一页切换
  • 支持缩放显示
  • 打印按钮(直接调用打印引擎)

关键修复记录

问题 原因 修复方案 PDF 拆分只出 2/6 页 insert_pdf() 兼容性问题 改用 doc.select(page_list) 方式 合并后提示 document closed 未正确处理文档生命周期 调整 doc 打开/关闭时序 预览渲染失败 PIL. 前缀未定义 将 PIL.Image 改为 Image 运行时 setup_styles 错误 未显式导入 tkinter.font 添加 import tkinter.font as tkfont MRP 系统.exe 启动卡死 customtkinter 主题文件未打包 改用目录模式打包 打印页面缩小 300 DPI 渲染不匹配 Windows 打印 改为 96 DPI 渲染 启动闪黑框 PowerShell 未隐藏窗口 添加 -WindowStyle Hidden 和 CREATE_NO_WINDOW 打印成功但无输出 mspaint /pt 打印数据打印机驱动无法处理 改用 .NET PrintDocument 通过 Windows 标准打印 API 发送 打印空白页 mspaint /pt 在某些打印机驱动下输出空白 替换为 PowerShell .NET PrintDocument 方式

打包与交付

打包方式

build.bat  # 双击运行,自动调用 PyInstaller 6.21.0

打包配置(build.spec)

  • 模式 :单文件 exe( console=False ,无控制台窗口)
  • hidden imports : tkinter 、 openpyxl 、 PIL 、 fitz 、 reportlab 、 xlrd 等
  • 产物 : dist\全能文档处理工具.exe (42.5 MB)