当前位置: 首页 > news >正文

使用Python 打造多格式文件预览工具 — 图、PDF、Word、Excel 一站式查看

在日常办公或文件管理场景中,我们经常面临这样的问题:在一个文件夹中短时间内产生了大量不同类型的文件(如图片、PDF、Word、Excel),我们需要快速浏览和筛选这些文件的内容,却不希望一个个打开它们。有没有办法将这些文件集中预览、筛选和操作?

本文将带你打造一个基于 wxPython 的多格式文件浏览与预览工具,支持文件夹选择、最近一天文件筛选、图文文档预览、页码控制、压缩打包、文件复制等多项实用功能。
C:\pythoncode\new\ViewFileAndZipAndCopy.py

一、功能概览

该工具具备以下核心功能:

  1. 文件夹选择:通过 GUI 选择任意文件夹。

  2. 筛选最新文件:自动列出过去 24 小时内修改或创建的文件。

  3. 多类型预览支持

    • 图片(JPG/PNG/BMP/GIF)
    • PDF(支持翻页)
    • Word(.docx,以 HTML 模式显示)
    • Excel(显示为列表控件)
  4. 文件复选操作:支持对文件进行勾选,便于批量操作。

  5. 文件压缩与复制:将勾选文件打包为 ZIP,或复制到目标文件夹。

  6. 分页预览控制:针对 PDF,提供上一页/下一页导航按钮。


二、应用场景

这个工具适用于以下典型场景:

  • 企业文档审核:在文档提交截止前查看最近更新的项目文档。
  • 技术支持或维护日志审核:快速翻阅技术支持部门刚上传的截图、报告、系统日志。
  • 内容策划与编辑:在多媒体内容创作场景中,快速预览当天采集的素材。
  • 文件归档前审查:在正式归档前核查文档内容和格式。

三、界面布局与技术实现

1. 总体结构:SplitterWindow 分割主界面

self.splitter = wx.SplitterWindow(self)
self.left_panel = wx.Panel(self.splitter)
self.right_panel = wx.Panel(self.splitter)
self.splitter.SplitVertically(self.left_panel, self.right_panel)
  • 左侧用于显示文件列表、控制按钮;
  • 右侧用于显示预览内容和翻页控件。

2. 文件筛选逻辑:列出最近 24 小时文件

one_day_ago = time.time() - (24 * 60 * 60)
for root, dirs, filenames in os.walk(folder_path):for filename in filenames:file_path = os.path.join(root, filename)if os.path.getmtime(file_path) >= one_day_ago:files.append(file_path)

这段代码遍历目标文件夹及其子目录,只保留“修改时间在过去 24 小时之内”的文件。


3. 多格式文件预览实现

图片预览
img = wx.Image(file_path, wx.BITMAP_TYPE_ANY)
img = img.Scale(preview_size.width, preview_size.height)
self.image_preview.SetBitmap(wx.Bitmap(img))

使用 wx.Image 载入并缩放图像,然后通过 wx.StaticBitmap 显示。

PDF 预览(支持翻页)
self.doc = fitz.open(file_path)
page = self.doc[self.current_page]
pix = page.get_pixmap(matrix=fitz.Matrix(1.5, 1.5))
img = wx.Image(pix.width, pix.height, pix.samples)

借助 PyMuPDF(即 fitz),将 PDF 页渲染成图像,再通过 wxWidgets 展示。

Word 预览
doc = docx.Document(file_path)
html = "<html><body>" + "".join(f"<p>{para.text}</p>" for para in doc.paragraphs) + "</body></html>"
self.doc_preview.SetPage(html)

Word 内容解析为 HTML,再使用 wx.html2.WebView 来显示。

Excel 预览
df = pd.read_excel(file_path)
for i, col in enumerate(df.columns):self.excel_preview.InsertColumn(i, str(col))
for index, row in df.iterrows():self.excel_preview.InsertItem(index, str(row[0]))

利用 pandas 读取表格并填入 wx.ListCtrl 控件中。


4. 文件压缩与复制按钮(待补充功能)

self.zip_button = wx.Button(button_panel, label="压缩选择文件")
self.copy_button = wx.Button(button_panel, label="复制选择文件")

目前绑定事件函数尚未实现(代码略去),后续可以通过 zipfile.ZipFile 实现 ZIP 操作,使用 shutil.copy 进行文件复制。


运行结果

在这里插入图片描述
在这里插入图片描述

四、总结

如果你经常处理多种类型的文档,或者你是一位内容审核员、资料整理者,那么这个工具将大幅提升你的工作效率。

相关文章:

  • 极客说|Unsloth 的全微调之路:从 Adapter 到 Full Fine-tuning
  • Git标签删除脚本解析与实践:轻松管理本地与远程标签
  • 大数据——Mac环境DataSpell集成Jupyter
  • 零基础学Java——第十一章:实战项目 - 控制台应用开发
  • 开目新一代MOM:AI赋能高端制造的破局之道
  • 【C++进阶】第2课—多态
  • 星光云720全景VR系统升级版,720全景,360全景,vr全景,720vr全景
  • Jsp技术入门指南【十一】SQL标签库
  • flask开启https服务支持
  • 嵌入式openharmony标准系统中GPIO口控制详解
  • 【教学类-34-12】20250509(通义万相)4*3蝴蝶拼图(圆形、三角、正方、半圆的凹凸小块+数字提示+参考图灰色)
  • 打造专属AI好友:小智AI聊天机器人详解
  • 解决Win11下MySQL服务无法开机自启动问题
  • 车载以太网转USB接口工具选型指南(2025版)
  • vison transformer vit 论文阅读
  • 计算机系统结构-第九章-互联网络 第十章
  • 独立自主的网络浏览器——Ladybird
  • 一种海杂波背景下前视海面目标角超分辨成像方法——论文阅读
  • 机器学习 期末考试题
  • 学习黑客认识Security Operations Center
  • 可量产9MWh超大容量储能系统亮相慕尼黑,宁德时代:大储技术迈入新时代
  • 浙江一民企拍地后遭政府两次违约,“民告官”三年又提起民事诉讼
  • 新华时评:直播间里“家人”成“韭菜”,得好好管!
  • 外交部回应中美经贸高层会谈:这次会谈是应美方请求举行的
  • 科技日报刊文批院士专家“赶场式”跑会:助长浮躁之气功利之心
  • 赵心童世锦赛历史性夺冠,你今天打斯诺克很可能订不到位