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

在ubuntu上用Python的openpyxl模块操作Excel的案例

文章目录

  • 安装模块
  • 读取Excel
  • 数据库取数
  • 匹配数据和更新Excel数据


在Ubuntu系统的环境下基本职能借助Python的openpyxl模块实现对Excel数据的操作。


安装模块

本次需要用到的模块需要提前安装(如果没有的话)

pip3 install openpyxl
pip3 install pymysql

在操作前,需要准备好用于操作的Excel文件,假设其文件名为 example.xlsx
此外,还需准备好相应的数据库,本文以MySQL 5.7数据库为例,确保数据库中包含相应的数据表及数据。


读取Excel

使用openpyxl模块读取Excel文件中的数据,可参考以下代码示例:

from openpyxl import load_workbook# 加载Excel文件
workbook = load_workbook('example.xlsx')# 选择活动工作表
sheet = workbook.active# 读取数据并存储
rows = sheet.max_row
cols = sheet.max_column
data_list = []
for row in range(1, rows + 1):row_data = []for col in range(1, cols + 1):cell_value = sheet.cell(row=row, column=col).valuerow_data.append(cell_value)data_list.append(row_data)# 显示读取的数据
for row in data_list:print(row)

上述代码将Excel文件中的数据读取并存储到 data_list 列表中,以便后续与数据库数据进行匹配。


数据库取数

以下是连接数据库并进行简单查询的代码示例:

import pymysql# 连接数据库
connection = pymysql.connect(host='localhost',user='root',password='your_password',database='your_database',charset='utf8mb4',cursorclass=pymysql.cursors.DictCursor
)try:with connection.cursor() as cursor:# 查询数据search_value = data_list[0][0]  # 以data_list第一个元素的第一列的值作为搜索条件sql = "SELECT * FROM your_table WHERE some_column = %s"cursor.execute(sql, (search_value,))result = cursor.fetchall()# 显示匹配结果for row in result:print(row)
finally:connection.close()

在使用过程中,需要根据实际情况修改连接参数及查询语句中的相关字段。


匹配数据和更新Excel数据

假设匹配到的数据存储在 result 列表中,现在需要将匹配结果更新回Excel数据中,具体操作如下:

from openpyxl import Workbook# 创建新的工作簿
workbook = load_workbook('example.xlsx')
sheet = workbook.active# 写入表头信息
sheet['A'] = '原数据'
sheet['B'] = '匹配结果'# 将原数据和新列写入Excel
for i, row in enumerate(data_list, start=1):sheet.cell(row=i, column=1).value = rowmatched = Falsefor res in result:if row[0] == res['col']:  # 假设匹配字段在第一列且数据库查询结果字段名为'col'sheet.cell(row=i, column=2).value = '匹配成功'matched = Truebreakif not matched:sheet.cell(row=i, column=2).value = '无匹配数据'# 保存更新后的新工作簿
workbook.save('matched_data.xlsx')

请添加图片描述

http://www.lryc.cn/news/540621.html

相关文章:

  • 【OS安装与使用】part6-ubuntu 22.04+CUDA 12.4运行MARL算法(多智能体强化学习)
  • 【Python爬虫(35)】解锁Python多进程爬虫:高效数据抓取秘籍
  • HarmonyOS 开发套件 介绍 ——上篇
  • Linux 高级篇 日志管理、定制自己的Linux系统、备份与恢复
  • deepseek与其他大模型配合组合
  • 经验分享—WEB渗透测试中遇到加密内容的数据包该如何测试!
  • JUC并发—9.并发安全集合四
  • JSON格式,C语言自己实现,以及直接调用库函数(一)
  • MinkowskiEngine安装(CUDA11.8+torch2.0.1+RTX4070TI)
  • Spring监听器Listener
  • 【深度学习在图像配准中的应用与挑战】
  • 使用 Docker-compose 部署 MySQL
  • blender笔记2
  • 特殊符号_符号图案_特殊符号大全
  • Unity学习part4
  • 【AI绘画】大卫• 霍克尼风格——自然的魔法(一丹一世界)
  • MySQL日志undo log、redo log和binlog详解
  • C++中的指针
  • 拆解微软CEO纳德拉战略蓝图:AI、量子计算、游戏革命如何改写未来规则!
  • 智能算法如何优化数字内容体验的个性化推荐效果
  • MATLAB在数据分析和绘图中的应用:从基础到实践
  • AI客服-接入deepseek大模型到微信(本地部署deepseek集成微信自动收发消息)
  • Host文件没有配置ip解析,导致请求接口速度慢
  • excel导入Mysql中时间格式异常
  • vue 判断一个属性值,如果是null或者空字符串或者是空格没有值的情况下,赋值为--
  • JavaWeb-Tomcat服务器
  • vue语法---样式操作-行内样式
  • 封装一个echarts的组件
  • 计算机网络安全之一:网络安全概述
  • Linux 性能调优简单指南