网站首页 > 教程文章 正文
上一篇文章写了利用pandas实现表格合并功能:Pandas实现多层级多Sheet的Excel文件合并!
那么如何将该功能分享给不懂Python的用户使用呢?那就是开发一个图形界面。
图形界面有两种:GUI和Web页面。
由于本人比较熟悉Web,因而选择了Web应用开发。结合自己的技术栈和需求,最终选择了Flask和Vue。
技术简介
Flask简介:: Flask 是一个功能强大且灵活的 Web 开发框架,适用于从简单的单页应用到复杂的 API 服务开发。其轻量级的特性和丰富的扩展使得开发者能够根据需要快速构建并扩展应用。
Vue简介:Vue.js 是一个功能强大且灵活的前端框架,适用于从简单的组件到复杂的单页应用的开发。它易于学习和使用,拥有丰富的生态系统和强大的工具支持,使开发者能够高效地构建现代 Web 应用。
操作演示
首先进入合并页面,选择文件,可以选择多个文件。
选择开始合并,后台进行合并处理。完成后,生成下载任务。
选择下载并打开,即可看到最终的合并结果。
核心代码
前端主要使用了ElementPlus的上传文件功能。
<el-upload :on-change="onChange" :http-request="onUpload" ref="uploadRef" :action="action" :auto-upload="false"
multiple :on-success="handleSuccess" :on-error="handleError">
<template #trigger>
<el-button type="primary">选择文件</el-button>
</template>
<el-button class="ml-3" type="success" @click="onUpload">
开始合并
</el-button>
</el-upload>
后端读取前端的上传文件,并返回合并后的文件。
@excel_blueprint.route("/excelConcat", methods=["post"])
def excel_concat():
files = request.files
df = pd.DataFrame()
for k, f in files.items():
excel_file = pd.ExcelFile(f)
for sheet_name in excel_file.sheet_names:
df_temp = pd.read_excel(f, sheet_name=sheet_name)
df = pd.concat([df, df_temp])
output = io.BytesIO()
with pd.ExcelWriter(output, engine='xlsxwriter') as writer:
df.to_excel(writer, index=False, sheet_name='Sheet1')
output.seek(0)
return send_file(output, mimetype=MyMimeType.XLSX)
总结
Flask+Vue3+Pandas可以实现很多Excel操作功能,实现办公自动化。
最终的应用可以使用前后端部署,让远程用户访问。也可以利用Pyinstaller等功能,将前后端功能打包在一起实现点击运行。
您日常生活中有什么繁琐的Excel操作需求呢?欢迎交流!
猜你喜欢
- 2024-12-13 基于Python+Flask+MySQL+Vue的失业保险人员信息管理系统系统
- 2024-12-13 基于Python+MySql+Flask+Vue的电脑运维管理系统
- 2024-12-13 基于Python+Flask+MySQL+HTML的视频数据可视化分析系统
- 2024-12-13 是时候学习Web开发了,1小时用Python开发一个博客系统
- 2024-12-13 几个炫酷的Python开源项目,让你从此走上人生巅峰
- 2024-12-13 AdminLTE-Jinja2模板:Flask,Bottle框架使用的一种模板语言Python
- 2024-12-13 Docker在手,天下我有,Win10下Docker部署Gunicorn+Flask独立镜像
- 2024-12-13 CentOS 下用 Nginx 和 uwsgi 部署 flask 项目
- 2024-12-13 Flask Web开发:基于Python的Web应用开发实战-第 1 章 安装
- 2024-12-13 解决python通过pip离线安装flask,numpy报错解决(centos)
- 最近发表
- 标签列表
-
- location.href (44)
- document.ready (36)
- git checkout -b (34)
- 跃点数 (35)
- 阿里云镜像地址 (33)
- qt qmessagebox (36)
- md5 sha1 (32)
- mybatis plus page (35)
- semaphore 使用详解 (32)
- update from 语句 (32)
- vue @scroll (38)
- 堆栈区别 (33)
- 在线子域名爆破 (32)
- 什么是容器 (33)
- sha1 md5 (33)
- navicat导出数据 (34)
- 阿里云acp考试 (33)
- 阿里云 nacos (34)
- redhat官网下载镜像 (36)
- srs服务器 (33)
- pico开发者 (33)
- https的端口号 (34)
- vscode更改主题 (35)
- 阿里云资源池 (34)
- os.path.join (33)