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

pyqt5:openpyxl 读取 Excel文件,显示在 QTableWidget 中

pip install openpyxl
openpyxl-3.1.2-py2.py3-none-any.whl (249 kB)
et_xmlfile-1.1.0-py3-none-any.whl (4.7 kB)
摘要:A Python library to read/write Excel 2010 xlsx/xlsm files

pip install pyqt5; 
pip install pyqt5-tools; 

编写 openpyxl_pyqt5.py 如下

# -*- coding: utf-8 -*-
import os
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QFileDialog, QMessageBox
from PyQt5.QtWidgets import QTableWidget, QTableWidgetItem
from openpyxl import load_workbookclass ExcelReader(QMainWindow):def __init__(self):super().__init__()# 设置窗口属性self.setWindowTitle("Excel Reader")self.setGeometry(100, 100, 800, 600)# 选择.xlsx文件名file_name, _ = QFileDialog.getOpenFileName(self, "Open Excel File", "", "xlsx Files (*.xlsx)")if file_name:self.file_path = file_nameelse:sys.exit(1)if not os.path.exists(self.file_path):print(f'Error: {self.file_path} not found.')sys.exit(2)# 加载Excel文件book = load_workbook(filename=self.file_path)sheet = book.activenrows = sheet.max_row    # 取最大行数ncols = sheet.max_column # 取最大列数if ncols > 26:print(f" columns: {ncols} > 26 !")ncols = 26# 创建表格控件self.table = QTableWidget()self.table.setRowCount(nrows) # 设置行数self.table.setColumnCount(ncols)  # 设置列数headers = tuple("ABCDEFGHIJKLMNOPQRSTUVWXYZ")self.table.setHorizontalHeaderLabels(headers[0:ncols])self.setCentralWidget(self.table)# 遍历Excel数据并插入到表格控件中row = 0for row_data in sheet.iter_rows():col = 0for cell in row_data:v = cell.valuet = cell.data_typeif v is None:item = QTableWidgetItem('')elif t in ('s','t'): # str, textitem = QTableWidgetItem(v)elif t =='n': # numberif v%1 ==0: # intitem = QTableWidgetItem("%d" %v)else: # floatitem = QTableWidgetItem("%.4f" %v)elif t =='d': # dateitem = QTableWidgetItem(v.strftime('%Y-%m-%d'))else:item = QTableWidgetItem(str(v))self.table.setItem(row, col, item)col += 1row += 1#if __name__ == "__main__":app = QApplication(sys.argv)reader = ExcelReader()reader.show()sys.exit(app.exec_())

运行 python openpyxl_pyqt5.py 

相关文章:

pyqt5:openpyxl 读取 Excel文件,显示在 QTableWidget 中

pip install openpyxl openpyxl-3.1.2-py2.py3-none-any.whl (249 kB) et_xmlfile-1.1.0-py3-none-any.whl (4.7 kB) 摘要:A Python library to read/write Excel 2010 xlsx/xlsm files pip install pyqt5; pip install pyqt5-tools; 编写 openpyxl_pyqt5.py 如…...

在RabbitMQ中使用新的MQTT 5.0功能

MQTT是物联网(IoT)的标准协议,是轻量级的,协议头很小,可以节省网络带宽。MQTT也很有效,与其他消息传递协议相比,客户端通过更短的握手进行连接和身份验证。 以下是本文介绍的MQTT 5.0功能列表&…...

flinkcdc 体验

0 flink版本 踩雷 java代码操作 flink Table/SQL API 和 DataStream API 编写程序后,打成jar包丢到flink集群运行,报错首选需要考虑flink集群版本和 jar包中maven依赖的版本是否一致。 目前网上flink、flinkcdc相关博文绝大部分是基于flink1.13、1.14编…...

Kafka知识补充

如何避免 Rebalance 最简单粗暴的就是 : 减少组成员数量发生变化 每个 Consumer 实例都会定期地向 Coordinator 发送心跳请求,表明它还存活着。如果某个 Consumer 实例不能及时地发送这些心跳请求,Coordinator 就会认为该 Consumer 已经“死…...

【MAC】升级 Mac os 后报错

背景 17 年买的 mac,发现很多软件都无法安装,于是升级 mac os 到 10.13,从官网下载 10.13 版本,之后升级,升级还算顺利。但使用 git 的时候发现出现问题了。 问题 使用 git 出现如下错误 xcrun: error: invalid ac…...

LeetCode(力扣)416. 分割等和子集Python

LeetCode416. 分割等和子集 题目链接代码 题目链接 https://leetcode.cn/problems/partition-equal-subset-sum/ 代码 class Solution:def canPartition(self, nums: List[int]) -> bool:sum 0dp [0]*10001for num in nums:sum numif sum % 2 1:return Falsetarget …...

Redis之缓存一致性

Redis之缓存一致性 1 缓存更新策略1.1 内存淘汰1.2 过期删除1.3 主动更新1.4 三种缓存更新策略的对比 2 更新缓存的两种方式3 缓存更新策略的实现方式3.1 先更新DB,后更新缓存3.2 先更新DB,后删除缓存3.3 先更新缓存,后更新DB3.4 先删除缓存&…...

LeetCode-199-二叉树的右视图

题目描述&#xff1a; 题目链接&#xff1a;LeetCode-199-二叉树的右视图 解题思路&#xff1a; 在 102 的基础之上进行改进&#xff0c;一维数组每次只保存 size1 时候的值 代码实现&#xff1a; class Solution {public List<Integer> rightSideView(TreeNode root) {i…...

二叉树的最近公共祖先

&#x1f388;个人主页:&#x1f388; :✨✨✨初阶牛✨✨✨ &#x1f43b;强烈推荐优质专栏: &#x1f354;&#x1f35f;&#x1f32f;C的世界(持续更新中) &#x1f43b;推荐专栏1: &#x1f354;&#x1f35f;&#x1f32f;C语言初阶 &#x1f43b;推荐专栏2: &#x1f354;…...

C++ 补充 反向迭代器的实现

阅前提要&#xff1a; 本文主要是对list和vector的实现的补充&#xff0c;以代码实现为主&#xff0c;注释为辅&#xff0c;如果对vector&#xff0c;list底层实现感兴趣的可以自行阅读&#xff0c;代码量有点大&#xff0c;请大家耐心查看&#xff0c;对理解语言很有帮助&…...

JVM第一讲:JVM相关知识体系详解+面试(P6熟练 P7精通)

JVM相关知识体系详解面试(P6熟练 P7精通) 面试时常常被面试官问到JVM相关的问题。本系列将给大家构建JVM核心知识点全局知识体系&#xff0c;本文是JVM第一讲&#xff0c;JVM相关知识体系详解和相关面试题梳理。 文章目录 JVM相关知识体系详解面试(P6熟练 P7精通)1、JVM学习建议…...

深度学习DAY3:FFNNLM前馈神经网络语言模型

1 神经网络语言模型NNLM的提出 文章&#xff1a;自然语言处理中的语言模型预训练方法&#xff08;ELMo、GPT和BERT&#xff09; https://www.cnblogs.com/robert-dlut/p/9824346.html 语言模型不需要人工标注语料&#xff08;属于自监督模型&#xff09;&#xff0c;所以语言…...

JavaSE学习值之--String类

&#x1f495;"不要同情自己&#xff0c;同情自己是卑劣懦夫的勾当&#xff01;"&#x1f495; 作者&#xff1a;Mylvzi 文章主要内容&#xff1a;JavaSE学习值之--String类 目录 前言&#xff1a; 一.String类 1.String类的属性 2.字符串的构造 注意&#xf…...

【LeetCode高频SQL50题-基础版】打卡第6天:第31~35题

文章目录 【LeetCode高频SQL50题-基础版】打卡第6天&#xff1a;第31~35题⛅前言员工的直属部门&#x1f512;题目&#x1f511;题解 判断三角形&#x1f512;题目&#x1f511;题解 连续出现的数字&#x1f512;题目&#x1f511;题解 指定日期的产品价格&#x1f512;题目&am…...

基于单片机的汽车智能仪表的设计

基于单片机的汽车智能仪表的设计 摘要&#xff1a;汽车的汽车系统。速度测量以及调速是我们这次的设计所要研究的对象&#xff0c;本次设计的基础核心的模块就是单片机&#xff0c;其应用的核心的控制单元就是stc89c52单片机&#xff0c;用到的测速模块是霍尔传感器&#xff0c…...

【Docker 内核详解】namespace 资源隔离(一):进行 namespace API 操作的 4 种方式

namespace 资源隔离&#xff08;一&#xff09;&#xff1a;进行 namespace API 操作的 4 种方式 1.通过 clone() 在创建新进程的同时创建 namespace2.查看 /proc/[pid]/ns 文件3.通过 setns() 加入一个已经存在的 namespace4.通过 unshare() 在原先进程上进行 namespace 隔离5…...

【技术研究】环境可控型原子力显微镜超高真空度精密控制解决方案

摘要&#xff1a;针对原子力显微镜对真空度和气氛环境精密控制要求&#xff0c;本文提出了精密控制解决方案。解决方案基于闭环动态平衡法&#xff0c;在低真空控制时采用恒定进气流量并调节排气流量的方法&#xff0c;在高真空和超高真空控制时则采用恒定排气流量并调节进气流…...

【Vuex+ElementUI】Vuex中取值存值以及异步加载的使用

一、导言 1、引言 Vuex是一个用于Vue.js应用程序的状态管理模式和库。它建立在Vue.js的响应式系统之上&#xff0c;提供了一种集中管理应用程序状态的方式。使用Vuex&#xff0c;您可以将应用程序的状态存储在一个单一的位置&#xff08;即“存储”&#xff09;中&#xff0c;…...

python经典百题之简单加密数据

题目:某个公司采用公用电话传递数据&#xff0c;数据是四位的整数&#xff0c;在传递过程中是加密的&#xff0c;加密规则如下&#xff1a; 每位数字都加上5,然后用和除以10的余数代替该数字&#xff0c;再将第一位和第四位交换&#xff0c;第二位和第三位交换 程序分析 对于…...

登陆认证权限控制(1)——从session到token认证的变迁 session的问题分析 + CSRF攻击的认识

前言 登陆认证&#xff0c;权限控制是一个系统必不可少的部分&#xff0c;一个开放访问的系统能否在上线后稳定持续运行其实很大程度上取决于登陆认证和权限控制措施是否到位&#xff0c;不然可能系统刚刚上线就会夭折。 本篇博客回溯登陆认证的变迁历史&#xff0c;阐述sess…...

2026 分水岭:马斯克为何给 “旧世界” 一记当头棒喝

一、开篇&#xff1a;世界一分为二的裂响 2026 年 1 月&#xff0c;注定不会因某款芯片架构、某款精密机器人传感器被载入史册&#xff0c;而会被铭记为天堑骤成的一年。 2026 年国际消费类电子产品展览会&#xff08;CES&#xff09;上&#xff0c;现场气氛一派欢庆&#xff0…...

Go语言的Context上下文管理

Go语言的Context上下文管理 Context的概念 Context&#xff08;上下文&#xff09;是Go语言中一个非常重要的包&#xff0c;它提供了一种在goroutine之间传递请求范围的值、取消信号和截止时间的方法。Context在处理HTTP请求、数据库操作、RPC调用等场景中非常有用。 Context的…...

M5ROTATE8库详解:8路旋转编码器I²C驱动与固件V2优化

1. 项目概述M5ROTATE8 是一款专为 M5Stack 生态中M5Unit-8Encoder&#xff08;官方型号名&#xff1a;8ROTATE&#xff09;模块设计的 Arduino C 库。该模块集成了8 路独立旋转编码器&#xff08;Rotary Encoder&#xff09;、8 个独立按键&#xff08;Push Button&#xff09;…...

python random

# Python 的 random 模块&#xff1a;不只是“随机”那么简单 很多人第一次接触 Python 的 random 模块&#xff0c;大概都是在写猜数字游戏的时候。输入几行代码&#xff0c;屏幕上跳出一个随机数&#xff0c;感觉像是给程序注入了某种“不确定的灵魂”。但如果你认为 random …...

OpenClaw(小龙虾)Windows 避坑安装指南

最近“小龙虾”&#xff08;OpenClaw&#xff09;可以说是 AI 圈最火的话题之一&#xff0c;这个能真正执行任务的 AI 智能体让无数人看到了自动化的无限可能。作为一个热衷于折腾各种 AI 工具的开发者&#xff0c;我也第一时间在 Windows 上尝试部署&#xff0c;结果一上来就被…...

如何降低seo关键字价格

如何降低SEO关键字价格 在当今竞争激烈的互联网市场中&#xff0c;搜索引擎优化&#xff08;SEO&#xff09;已经成为企业提升网站流量和品牌知名度的重要手段。其中&#xff0c;关键字的选择和优化直接影响到SEO的效果。关键字的价格往往高昂&#xff0c;特别是竞争度较高的关…...

01-第1章-概述与快速开始

第 1 章&#xff1a;概述与快速开始 1.1 sfsDb 简介 sfsDb 是一款专为工业物联网&#xff08;IIoT&#xff09;和边缘计算场景设计的纯 Go 语言嵌入式数据库。它基于 LevelDB 构建&#xff0c;提供了无锁事务系统、高效索引管理、时序数据处理和加密存储等功能。 核心特性 纯…...

零基础学A人工智能: 4.大模型基础与本地部署全指南

今天我们正式开启AI大模型的学习&#xff0c;从最基础的大模型概念讲起&#xff0c;到本地部署大模型的完整流程&#xff0c;再到Ollama工具的全功能详解&#xff0c;最后延伸到完整的AI聊天机器人项目架构&#xff0c;帮大家从零搭建起大模型应用的完整知识体系&#xff0c;零…...

小米智能家居如何通过Home Assistant实现统一控制?官方集成深度解析

小米智能家居如何通过Home Assistant实现统一控制&#xff1f;官方集成深度解析 【免费下载链接】ha_xiaomi_home Xiaomi Home Integration for Home Assistant 项目地址: https://gitcode.com/GitHub_Trending/ha/ha_xiaomi_home 在智能家居生态系统中&#xff0c;小米…...

网传OpenAI“股权结构表”:微软“130亿美元投资”已升至“2283亿美元”-周红伟

一份疑似泄露的OpenAI股权结构表&#xff0c;将这家AI公司内部的利益分配格局首次摆在了公众面前。近日&#xff0c;一份据称来自OpenAI的股权结构表&#xff08;cap table&#xff09;在网络上广泛流传。据Celebrity Net Worth网站4月3日报道&#xff0c;该文件与OpenAI本轮融…...