当前位置: 首页 > 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).value
        row_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 = row
    matched = False
    for res in result:
        if row[0] == res['col']:  # 假设匹配字段在第一列且数据库查询结果字段名为'col'
            sheet.cell(row=i, column=2).value = '匹配成功'
            matched = True
            break
    if not matched:
        sheet.cell(row=i, column=2).value = '无匹配数据'

# 保存更新后的新工作簿
workbook.save('matched_data.xlsx')

请添加图片描述

http://www.dtcms.com/a/26701.html

相关文章:

  • 蓝桥杯备赛1-3时间加法
  • JupyterNotebook高级使用:常用魔法命令
  • bigemap pro如何合并面文件
  • django连接mysql数据库
  • 第三章 组件(5)- 数据绑定
  • 深研究:与Dify建立研究自动化应用
  • 撕碎QT面具(2):groupBox内容居中显示
  • MySQL 一条 SQL 执行流程解析
  • /etc/docker/daemon.json这个跟/etc/yum.repos.d/docker-ce.repo这个文件的关系
  • DeepSeek 助力 Vue 开发:打造丝滑的右键菜单(RightClickMenu)
  • 分布式大语言模型服务引擎vLLM论文解读
  • tortoiseSVN 如何克隆项目到本地
  • WEB项目接入Deepseek(硅基流动)
  • Shapr3D在ipad上无法识别鼠标点击问题
  • NPB安装使用教程
  • 基于iptables的Docker端口白名单控制
  • C++ 程序 return value 1 是什么原因
  • 寒假阶段学习总结
  • C++:pthread的使用
  • SpringSecurity基于配置方法控制访问权限:MVC匹配器、Ant匹配器
  • hive 编译慢问题处理
  • FontConfig封装分享
  • Token Embedding(词嵌入)和Positional Encoding(位置编码)的矩阵形状关系及转换过程
  • [grub]修改启动项选项来区分不同系统
  • fastapi sqlalchemy 日志 logging 写入异常 多进程文件写入异常
  • python-leetcode 37.翻转二叉树
  • Javascript网页设计实例:通过JS实现上传Markdown转化为脑图并下载脑图
  • 火语言RPA--Excel关闭保存文档
  • 【HarmonyOS Next】鸿蒙监听手机按键
  • 汇能感知的光谱相机/模块产品有哪些?