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

Python 读取与处理出入库 Excel 数据实战案例(HTML 网页展示)

有如下数据,需要对数据合并处理,输出到数据库。

数据样例:👇

图片

excel内容:

出入库统计表河北库.xlsx:

图片

出入库统计表天津库.xlsx:

图片

01实现过程

1、创建test.py文件,然后将下面代码复制到里面,最后运行

# 导入必要的库,pandas 用于数据处理,sqlalchemy 用于连接数据库
import pandas as pd
from sqlalchemy import create_enginedef read_excel_data(file_name):# 读取整个 Excel 文件,header=None 表示不使用第一行作为列名df = pd.read_excel(file_name, header=None)# 找到服装类和食品类的起始行,使用 df[df[0] == '条件']来筛选特定内容的行,index[0]获取索引,+1 得到起始行的下一行clothing_start = df[df[0] == '1、服装类'].index[0] + 1food_start = df[df[0] == '2、食品类'].index[0] + 1# 读取服装类数据,header 参数指定起始行,nrows 指定读取的行数clothing_df = pd.read_excel(file_name, header=clothing_start, nrows=2)# 读取食品类数据,同理food_df = pd.read_excel(file_name, header=food_start, nrows=2)return clothing_df, food_df
# 定义一个函数用于从 Excel 文件中读取特定部分的数据# 读取河北库和天津库的数据
df1_clothing, df1_food = read_excel_data('出入库统计表河北库.xlsx')
df2_clothing, df2_food = read_excel_data('出入库统计表天津库.xlsx')
# 调用函数读取两个不同库的服装类和食品类数据# 合并服装类数据,pd.concat 用于连接多个 DataFrame
clothing_combined = pd.concat([df1_clothing, df2_clothing])
clothing_combined['类型'] = '服装类'
# 将两个库的服装类数据合并,并添加类型列# 合并食品类数据,同理
food_combined = pd.concat([df1_food, df2_food])
food_combined['类型'] = '食品类'# 定义列顺序
clothing_columns = ['库房', '类型', '出入库', '男士上衣', '男士下装', '女士上装', '女士下装', '童装','男士内衣', '女士内衣', '运动装', '工作服', '户外服装', '特殊服装', '冬装', '夏装', '合计']
food_columns = ['库房', '类型', '出入库', '酒水', '调料', '肉类', '合计']# 处理服装类数据,reindex 用于重新排列列的顺序
clothing_result = clothing_combined.reindex(columns=clothing_columns)# 处理食品类数据,同理
food_result = food_combined.reindex(columns=food_columns)# 生成 HTML 内容
html_content = f"""
<!DOCTYPE html>
<html lang="zh-CN">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>2024 年产品出入库统计</title><style>table {{width: 100%;border-collapse: collapse;}}th, td {{border: 1px solid black;padding: 8px;text-align: left;}}th {{background-color: #f2f2f2;}}</style>
</head>
<body><h1>2024 年产品出入库统计</h1><h2>1. 服装类</h2>
<table><thead><tr>{''.join([f'<th>{col}</th>' for col in clothing_columns])}</tr></thead><tbody>{''.join([f'<tr>{" ".join([f"<td>{item}</td>" for item in row])}</tr>' for row in clothing_result.values])}</tbody>
</table><h2>2. 食品类</h2>
<table><thead><tr>{''.join([f'<th>{col}</th>' for col in food_columns])}</tr></thead><tbody>{''.join([f'<tr>{" ".join([f"<td>{item}</td>" for item in row])}</tr>' for row in food_result.values])}</tbody>
</table></body>
</html>
"""
# 使用字符串格式化生成 HTML 内容,包括表格结构和数据# 将 HTML 内容写入文件
with open('output.html', 'w', encoding='utf-8') as file:file.write(html_content)
# 打开文件并写入生成的 HTML 内容# 连接 MySQL 数据库
engine = create_engine('mysql+pymysql://root:root@127.0.0.1:3306/test01')
# 使用 sqlalchemy 创建数据库连接引擎# 将数据写入 MySQL 数据库
clothing_result.to_sql('clothing_table', con=engine, if_exists='replace', index=False)
food_result.to_sql('food_table', con=engine, if_exists='replace', index=False)
# 将处理后的服装类和食品类数据分别写入 MySQL 数据库中的不同表,如果表已存在则替换,并且不写入索引列

02最终结果

1、找到output.html

图片

2、双击output.html运行看到如下结果

图片

相关文章:

  • 【LLM多模态】文生视频综述From Sora What We Can See: A Survey of Text-to-Video Generation
  • Axure大屏可视化模板在不同领域中的实际应用案例
  • 封装轮播图 (因为基于微博小程序,语法可能有些出入,如需使用需改标签)
  • 软件自动化测试基础:python运算符精讲
  • Python中的八个TXT文件自动化处理脚本:提升工作效率的必备工具
  • 62.【C语言】浮点数的存储
  • unity_Occlusion_Culling遮挡剔除学习
  • 从两个 Excel 表格中提取相关信息,并根据学生的 学号 和 姓名 将第一个表格中的成绩数据填充到第二个表格中(附Python代码)
  • 什么是 JWT?它是如何工作的?
  • vue数组根据某些条件进行二次切割
  • 1.2.1 HuggingFists安装说明-Linux安装
  • 如何用Prometheus监控禁用了Actuator的SpringBoot?
  • 渗透测试--文件上传常用绕过方式
  • Python编码系列—Python责任链模式:打造灵活的请求处理流程
  • 鸿蒙HarmonyOS之封装Http请求工具类
  • 实现windows 窗体的自己画,网上摘抄的,学习了
  • 《微软的软件测试之道》成书始末、出版宣告、补充致谢名单及相关信息
  • 4. 路由到控制器 - Laravel从零开始教程
  • es6要点
  • gitlab-ci配置详解(一)
  • HTTP请求重发
  • IndexedDB
  • JavaScript对象详解
  • Js基础知识(四) - js运行原理与机制
  • LintCode 31. partitionArray 数组划分
  • linux安装openssl、swoole等扩展的具体步骤
  • PaddlePaddle-GitHub的正确打开姿势
  • react 代码优化(一) ——事件处理
  • 翻译 | 老司机带你秒懂内存管理 - 第一部(共三部)
  • 技术发展面试
  • 解决iview多表头动态更改列元素发生的错误
  • 解析带emoji和链接的聊天系统消息
  • 悄悄地说一个bug
  • 入手阿里云新服务器的部署NODE
  • 无服务器化是企业 IT 架构的未来吗?
  • 携程小程序初体验
  • 一、python与pycharm的安装
  • 一个普通的 5 年iOS开发者的自我总结,以及5年开发经历和感想!
  •  一套莫尔斯电报听写、翻译系统
  • 如何在招聘中考核.NET架构师
  • ​sqlite3 --- SQLite 数据库 DB-API 2.0 接口模块​
  • # 利刃出鞘_Tomcat 核心原理解析(二)
  • #include
  • (1)(1.19) TeraRanger One/EVO测距仪
  • (java版)排序算法----【冒泡,选择,插入,希尔,快速排序,归并排序,基数排序】超详细~~
  • (STM32笔记)九、RCC时钟树与时钟 第二部分
  • (层次遍历)104. 二叉树的最大深度
  • (仿QQ聊天消息列表加载)wp7 listbox 列表项逐一加载的一种实现方式,以及加入渐显动画...
  • (附源码)ssm教师工作量核算统计系统 毕业设计 162307
  • (含笔试题)深度解析数据在内存中的存储
  • (三)uboot源码分析
  • (十二)springboot实战——SSE服务推送事件案例实现
  • (推荐)叮当——中文语音对话机器人
  • (一)u-boot-nand.bin的下载
  • (原創) 如何讓IE7按第二次Ctrl + Tab時,回到原來的索引標籤? (Web) (IE) (OS) (Windows)...