如何使用tkinter打开一个excel表格并读取数据,并显示出来?

1、使用filedialog,打开文件夹并选择文件

代码如下:

#选择文件

def openfile():

sfname = filedialog.askopenfilename(title='选择Excel文件', filetypes=[('Excel', '*.xlsx'), ('All Files', '*')])

return sfname

2、使用treeview(树状表格)显示出来

代码如下:

def showdata(frame,data):

# 定义树状图表格函数

'''

frame:容器

data:数据,数据类型为列表

'''

nrows = len(data)

ncols = len(data[0])

columns = [""]

for i in range(ncols):

columns.append(str(i))

heading = columns

"""

定义Treeview

self.Frame2为父容器

columns为列名集合

show="headings"表示显示表头

"""

tree = ttk.Treeview(frame, columns=columns, show="headings")

# 定义各列列宽及对齐方式

for item in columns:

tree.column(item, width=50, anchor="center")

tree.heading(heading[0], text=heading[0]) #第一列的表头为空

# 定义表头

for i in range(1, len(columns)):

tree.heading(heading[i], text=str(i))

# 设置表格内容

i = 0

for v in data:

v.insert(0, i + 1) #第一列的显示内容(序号)

tree.insert('', i, values=(v))

i += 1

# 放置控件,rel*表示使用相对定位,相对于父容器的定位

# tree.place(relx=0, rely=0, relwidth=1, relheight=1)

return tree

完整代码如下:

from tkinter import filedialog

import xlrd

import tkinter as tk

from tkinter import ttk

#选择文件

def openfile():

sfname = filedialog.askopenfilename(title='选择Excel文件', filetypes=[('Excel', '*.xlsx'), ('All Files', '*')])

return sfname

"输入文件名,返回数据"

def readdata(sfname):

# 读取表格数据

book = xlrd.open_workbook(sfname)

sheet1 = book.sheets()[0]

nrows = sheet1.nrows

print('表格总行数', nrows)

ncols = sheet1.ncols

print('表格总列数', ncols)

values = []

for i in range(nrows):

row_values = sheet1.row_values(i)

values.append(row_values)

return values

def showdata(frame,data):

# 定义树状图表格函数

'''

frame:容器

data:数据,数据类型为列表

'''

nrows = len(data)

ncols = len(data[0])

columns = [""]

for i in range(ncols):

columns.append(str(i))

heading = columns

"""

定义Treeview

self.Frame2为父容器

columns为列名集合

show="headings"表示显示表头

"""

tree = ttk.Treeview(frame, columns=columns, show="headings")

# 定义各列列宽及对齐方式

for item in columns:

tree.column(item, width=50, anchor="center")

tree.heading(heading[0], text=heading[0]) #第一列的表头为空

# 定义表头

for i in range(1, len(columns)):

tree.heading(heading[i], text=str(i))

# 设置表格内容

i = 0

for v in data:

v.insert(0, i + 1) #第一列的显示内容(序号)

tree.insert('', i, values=(v))

i += 1

# 放置控件,rel*表示使用相对定位,相对于父容器的定位

# tree.place(relx=0, rely=0, relwidth=1, relheight=1)

return tree

#打开文件并以树状表格形式显示

def openshow():

global root

filename=openfile()

data=readdata(filename)

tree=showdata(root,data)

tree.place(relx=0.03,rely=0.2,relheight=0.7,relwidth=0.9)

def main():

global root

root = tk.Tk()

root.title("打开文件")

root.geometry("600x400")

B1 = tk.Button(root, text="打开文件", command=openshow)

B1.place(relx=0.03,rely=0.05)

root.mainloop()

if __name__=='__main__':

main()

参考文献1(打开文件)

https://www.cnblogs.com/SH170706/p/10443947.html

参考文献2(treeview)

https://www.cnblogs.com/yang-2018/p/11824250.html

原文链接:https://blog.csdn.net/weixin_43184622/article/details/107054131

python实现选择文件_用tkinter 实现从文件夹选择文件并显示相关推荐

  1. python拖拽获取文件路径_求助tkinter模块如何获取拖拽文件的内容

    from tkinter import filedialog import xlrd import tkinter as tk from tkinter import ttk import windn ...

  2. python打开控制台运行_如何在IPython控制台中默认运行文件而不是终端?

    我在PyCharm开始了一个新项目.我安装了Anaconda 3.6.所以,在PyCharm中,我选择了Anaconda python.exe作为项目解释器. 当我第一次运行PyCharm时,它使用I ...

  3. python导入库关键词_怎么样导入RobotFramework 自定义关键字(库文件)

    标准库关键字在使用的过程中,简单的需求还是可以满足.但是遇到有些需求还是不好满足的,还是需要自己去编码,自定义库文件关键字. -----------------来自小马哥的故事 假设python的安装 ...

  4. python 3d游戏脚本_【Maya】pythonInMaya_调用外部脚本文件

    通常我们会在maya的脚本编辑器中执行python代码,如果是使用外部的.py脚本文件,两种方法可选: 1.        使用File菜单下的LoadScript载入.py脚本文件的内容,然后在编辑 ...

  5. 基于python的计算基因组_科学网—python3 计算 基因组测序结果文件 各碱基数目(个人练习) - 靳泽星的博文...

    基因组测学回来的结果后,从assembly(组装)里找到序列文件,格式可能是:.fasta..fastq..seq.和.contig.fastq要转化为fasta,转化方法网上一大把哈.我的基因组序列 ...

  6. qt 快速按行读取文件_这是知识点之Linux下分割文件并保留文件头

    点击上方"开发者的花花世界",选择"设为星标"技术干货不定时送达! 这是一个知识点 方便快捷的给结构化数据文件分割大小并保留文件的表头,几十个G的结构化文件不仅 ...

  7. 如何恢复录音删除的录音文件_硬盘分区数据误删除如何恢复?文件删除不用急...

    硬盘分区数据误删除如何恢复?相信很多人在安装系统或者重装电脑时,往往也都会对电脑原有数据的卷大小进行调整,以此来满足我们日常使用的需求.然而对于一些新手来说,在操作时也都容易不小心把整个硬盘的分区给删 ...

  8. .f90文件批量转为dll文件_办公必备神器DropIt V8.5.1Portable文件整理分类工具

    文件混乱用这1款神器就够了 目录 [url=]DropIt 的使用思路[/url] [url=]快捷调用 DropIt 的两种方式[/url] [url=]配合 IrfanView 对图片进行操作[/ ...

  9. c++读取utf8文件_经常在日常工作中处理统一码文件(or其他编码)?这篇必读

    全文共2717字,预计学习时长5分钟 对于那些经常在日常工作中处理统一码文件(也适用于其他编码)的人来说,这篇文章是必读的.对于自然语言处理的从业者,处理统一码文件是一场噩梦,尤其是使用Windows ...

  10. linux怎样自动检查link文件_怎样理解和识别 Linux 中的文件类型 | Linux 中国

    众所周知,在 Linux 中一切皆为文件,包括硬盘和显卡等.在 Linux 中导航时,大部分的文件都是普通文件和目录文件.但是也有其他的类型,对应于 5 类不同的作用.因此,理解 Linux 中的文件 ...

最新文章

  1. 教育部:“博士分流淘汰制”真来了!不合格的导师,退出!
  2. easyui placeholder 解决方案
  3. Linux的编译器vi之最详细介绍
  4. Java的坏功能是什么
  5. 【计算机网络】比较TCP与UDP
  6. 《设计原本—计算机科学巨匠Frederick P. Brooks的反思》一一第 3 章 理性模型有哪些缺陷...
  7. VS error C2471: 无法更新程序数据库vc90.pdb的解决办法
  8. android 虚拟按键挡住布局,Android 虚拟按键遮住了页面内容解决办法
  9. html5 audio左侧,HTML5之Audio(四)—— 左右声道
  10. DoraCloud for Proxmox桌面云上启用NVIDIA Tesla P4的vGPU功能
  11. 数据库查询语句(书上例题)
  12. python爬取智联招聘职位信息(单进程)
  13. 版式设计在界面中的应用
  14. 【腾讯Bugly干货分享】手游热更新方案xLua开源:Unity3D下Lua编程解决方案
  15. 利用云开发+Vant-Weapp开发的校园二手交易小程序
  16. iview中纯CSS美化select和Cascader滚动条
  17. 爬虫学习(10):xpath爬取包图网高清模板视频
  18. Matlab var(转)
  19. C8051F系列单片机技术问答
  20. mysql 行级锁的使用

热门文章

  1. vue和微信小程序的区别、比较
  2. Centos 6.2 单网卡安装pptpd 经验
  3. Java代码中的注释详解
  4. 12. 我的第一个容器化应用
  5. MyBatis中![CDATA[ ]]的使用
  6. 【总结】实现点击累加效果的几种方式对比
  7. WebAPI PUT,DELETE请求404
  8. thinkPHP的Excel插件
  9. 开启apache服务
  10. JAVA标识符和命名规则