python:xlrd 读取 Excel文件,显示在 tkinterTable 表格中

news/2024/7/21 5:10:45 标签: python, excel, tkinterTable, xlrd

pip install xlrd

摘要: Library for developers to extract data from Microsoft Excel (tm) spreadsheet files

pip install tkinterTable

tkintertable-1.3.3.tar.gz (58 kB)

摘要: Extendable table class for Tkinter

源代码链接:https://github.com/dmnfarrell/tkintertable
教程链接:https://github.com/dmnfarrell/tkintertable/wiki/Usage

编写 tk_table_xlrd.py 如下

python"># -*- coding: utf-8 -*-
""" xlrd 读取 Excel文件,显示在 tkinterTable 表格中"""
import os
import sys
import datetime
import tkinter as tk
from tkinter import filedialog
import xlrd
from tkintertable import TableCanvas, TableModel

root = tk.Tk()
filetypes = [('Excel file','.xlsx')]
file1 = filedialog.askopenfilename(initialdir=".", filetypes=filetypes)
if file1 == '':
    print('usage: python tk_table_xlsx.py ')
    sys.exit(1)    

if not os.path.exists(file1):
    print(f'Error: {file1} not found.')
    sys.exit(2)

book = xlrd.open_workbook(file1)
sheet = book.sheets()[0] # 取Sheet1
# 通过名称获取
#sheet = book.sheet_by_name(sheet_name)
nrows = sheet.nrows  # 获取sheet中的有效行数
if nrows > 10000:
    print(f" 行数: {nrows} > 10000 !")
    nrows = 10000
ncols = sheet.ncols  # 获取sheet中的有效列数
if ncols > 26:
    print(f" columns: {ncols} > 26 !")
    ncols = 26

data = {}
cols = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
#单元类型cell_type: empty为0, string为1, number为2, date为3, boolean为4, error为5
for i in range(0, nrows):
    rows = {}
    for j in range(0, ncols):
        v = sheet.cell_value(i,j)
        t = sheet.cell_type(i,j)
        if t ==0:
            rows[cols[j]] = ''
        elif t ==1:
            rows[cols[j]] = v
        elif t ==2:
            if v%1 ==0:
                rows[cols[j]] = "%d" % v
            else:
                rows[cols[j]] = "%.4f" % v
        elif t ==3:
            date_tuple = xlrd.xldate_as_tuple(v, book.datemode)
            date_v = datetime.date(*date_tuple[:3])
            rows[cols[j]] = date_v.strftime('%Y-%m-%d')
        else:
            rows[cols[j]] = str(v)
    data[str(i+1)] = rows
#print(data)

#root = tk.Tk()
root.title(file1)
root.geometry("800x400")
frame = tk.Frame(root)
frame.pack()

model = TableModel()
table = TableCanvas(frame, model=model, data=data)
table.show()

root.mainloop()

运行 python tk_table_xlrd.py test1.xlsx

参考:python实现读取excel表格详解方法

参考:使用tkintertable控件建立tkinter的表格


http://www.niftyadmin.cn/n/5065735.html

相关文章

极大似然估计概念的理解——统计学习方法

目录 1.最大似然估计的概念的理解1 2.最大似然估计的概念的理解2 3.最大似然估计的概念的理解3 4.例子 1.最大似然估计的概念的理解1 最大似然估计是一种概率论在统计学上的概念,是参数估计的一种方法。给定观测数据来评估模型参数。也就是模型已知,参…

大模型RLHF算法更新换代,DeepMind提出自训练离线强化学习框架ReST

文章链接: https://arxiv.org/abs/2308.08998 大模型(LLMs)爆火的背后,离不开多种不同基础算法技术的支撑,例如基础语言架构Transformer、自回归语言建模、提示学习和指示学习等等。这些技术造就了像GPT-3、PaLM等基座…

基于SpringBoot的科研工作量获奖项目管理平台设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序(小蔡coding)有保障的售后福利 代码参考源码获取 前言 💗博主介绍:✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作…

lenovo联想台式机 拯救者 刃7000-28ICBR(90KX)原装出厂Windows10系统镜像

LENOVO联想拯救者(90KX)原厂WIN10系统 下载链接:https://pan.baidu.com/s/1beocPJSmnFbY4Y_ZQM2djA?pwd4d1n 系统自带所有驱动、出厂主题壁纸LOGO、Office办公软件、联想电脑管家等预装程序 所需要工具:16G或以上的U盘 文件格式:ISO 文件大…

CSS 常用样式 之字体属性

font-weight(字体粗细) 字体粗细用于设置文本的粗细程度,可以使用如下的值: normal:正常字体(默认)bold:加粗字体bolder:更加加粗lighter:更加细 代码实例…

Makefile核心(第一节)

文章目录 前言Makefile核心举例讲解结束 前言 曾以为学习过程是痛苦的,其实真正静下心来是美好的,虽然很枯燥,但生活就是这样,不学习还能干吗呢…… ——张顺 makefile是相当重要的,只要你要写大工程,就必须…

MySQL优化、锁、总结常见问题

慢 SQL 如何定位呢? 慢 SQL 的监控主要通过两个途径: 慢查询日志:开启 MySQL 的慢查询日志,再通过一些工具比如 mysqldumpslow 去分析对应的慢查询日志,当然现在一般的云厂商都提供了可视化的平台。服务监控&#xf…

血清与血浆

生物 血清与血浆 文章目录 生物一、血清和血浆的区别二、加入抗凝剂的全血经过离心后的分层(如何获得血清/浆)三、常见抗凝剂3.1、常用抗凝剂3.2、水蛭抗凝剂 今天去给兔子抽血了,给全血离心的时候谈及到血清和血浆才发现自己对这方面的概念…