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

wxpython:wx.grid 表格显示 Excel xlsx文件

pip install xlrd
xlrd-1.2.0-py2.py3-none-any.whl (103 kB)
摘要: Library for developers to extract data from Microsoft Excel (tm) spreadsheet files

pip install wxpython==4.2
wxPython-4.2.0-cp37-cp37m-win_amd64.whl (18.0 MB)
Successfully installed wxpython-4.2.0

编写 wx_grid_xlsx.py 如下

# -*- coding: utf-8 -*-
""" wx.grid 表格显示 Excel xlsx文件 """
import os
import sys
import datetime
import xlrd
import wx  
import wx.grid  class MyFrame(wx.Frame):def __init__(self):  super().__init__(parent=None, title='wx.grid view xlsx ', size=(1000,600))panel = wx.Panel(self)  # 选择.xlsx文件名fileFilter = "xlsx Files (*.xlsx)|*.xlsx|" "Excel files (*.xls)|*.xls"fileDialog = wx.FileDialog(self, message="选择xlsx文件", wildcard=fileFilter, style=wx.FD_OPEN)dialogResult = fileDialog.ShowModal()if dialogResult != wx.ID_OK:returnfilename = fileDialog.GetPath()if not os.path.exists(filename):print(f'Error: {filename} not found.')sys.exit(2)book = xlrd.open_workbook(filename)sheetname = "Sheet1"sheet = book.sheet_by_name(sheetname)nrows = sheet.nrows  # 获取sheet中的有效行数if nrows > 10000:print(f" 行数: {nrows} > 10000 !")nrows = 10000ncols = sheet.ncols  # 获取sheet中的有效列数if ncols > 26:print(f" columns: {ncols} > 26 !")ncols = 26# 创建一个表格  self.grid = wx.grid.Grid(panel)  self.grid.CreateGrid(nrows, ncols)  # 创建一个 nrows行 ncols列的表格  # 设置表格的列标题cols = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"for j in range(0, ncols):self.grid.SetColLabelValue(j, cols[j])   # 设置表格的行标题for i in range(0, nrows):self.grid.SetRowLabelValue(i, str(i+1))  #单元类型cell_type: 0.empty, 1.string, 2.number, 3.date, 4.boolean, 5.error, 6.blank# 向表格中添加数据for i in range(0, nrows):for j in range(0, ncols):v = sheet.cell_value(i,j)t = sheet.cell_type(i,j)if t ==0:self.grid.SetCellValue(i,j, '')elif t ==1:self.grid.SetCellValue(i,j, v)elif t ==2:if v%1 ==0:self.grid.SetCellValue(i,j, "%d" %v)else:self.grid.SetCellValue(i,j, "%.4f" %v)elif t ==3:date_tuple = xlrd.xldate_as_tuple(v, book.datemode)date_v = datetime.date(*date_tuple[:3])self.grid.SetCellValue(i,j, date_v.strftime('%Y-%m-%d'))else:self.grid.SetCellValue(i,j, str(v))  # 使用 sizer 来管理布局  sizer = wx.BoxSizer(wx.VERTICAL)  sizer.Add(self.grid, 1, wx.EXPAND | wx.ALL, 5)  panel.SetSizer(sizer)  if __name__ == '__main__':  app = wx.App(False)  frame = MyFrame()frame.Show(True)    app.MainLoop()

运行 python wx_grid_xlsx.py

参考了百度:文心一言:示例 wx_grid_demo.py

import wx  
import wx.grid  class MyFrame(wx.Frame):  def __init__(self):  super().__init__(parent=None, title='Grid Example')  panel = wx.Panel(self)  # 创建一个表格  self.grid = wx.grid.Grid(panel)  self.grid.CreateGrid(5, 3)  # 创建一个 5 行 3 列的表格  # 设置表格的列标题  self.grid.SetColLabelValue(0, "Column A")  self.grid.SetColLabelValue(1, "Column B")  self.grid.SetColLabelValue(2, "Column C")  # 设置表格的行标题  self.grid.SetRowLabelValue(0, "Row 1")  self.grid.SetRowLabelValue(1, "Row 2")  self.grid.SetRowLabelValue(2, "Row 3")  # 向表格中添加数据  self.grid.SetCellValue(0, 0, "Data 1-1")  self.grid.SetCellValue(0, 1, "Data 1-2")  self.grid.SetCellValue(0, 2, "Data 1-3")  self.grid.SetCellValue(1, 0, "Data 2-1")  self.grid.SetCellValue(1, 1, "Data 2-2")  self.grid.SetCellValue(1, 2, "Data 2-3")  # 使用 sizer 来管理布局  sizer = wx.BoxSizer(wx.VERTICAL)  sizer.Add(self.grid, 1, wx.EXPAND | wx.ALL, 5)  panel.SetSizer(sizer)  if __name__ == '__main__':  app = wx.App()  frame = MyFrame()frame.Show()    app.MainLoop()

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

相关文章:

  • 事件循环机制
  • 苹果曾考虑基于定位控制AirPods Pro自适应音频
  • 【代码阅读笔记】yolov5 rknn模型部署
  • 【多线程】进程与线程 并发编程 面试题总结
  • C++算法 —— 动态规划(10)二维费用背包
  • MySQL数据库正在耗用大量CPU的问题排查
  • php替换字符串里的a变为b
  • 黑豹程序员-架构师学习路线图-百科:CSS-网页三剑客
  • NUWA论文阅读
  • 4.Tensors For Beginners-Vector Definition
  • vertx学习总结5
  • Go,从命名开始!Go的关键字和标识符全列表手册和代码示例!
  • 【网络】网络扫盲篇 ——用简单语言和图解带你入门网络
  • 【项目开发 | C语言项目 | C语言薪资管理系统】
  • Android---GC回收机制与分代回收策略
  • 前缀、中缀、后缀表达式相互转换工具
  • Vue之ElementUI之动态树+数据表格+分页(项目功能)
  • 【CAD二次开发】给CAD添加TRUSTEDPATHS避免dll插件信任弹窗
  • 编译和链接
  • 常识判断 --- 科技常识
  • 修改npm全局安装的插件(下载目录指向)
  • <C++> 异常
  • 聊聊HttpClientBuilder
  • MacOS - Sonoma更新了啥
  • C++17中头文件filesystem的使用
  • 「专题速递」数字人直播带货、传统行业数字化升级、远程协作中的低延时视频、地产物业中的通讯终端...
  • PE格式之PE头部
  • SLAM从入门到精通(用python实现机器人运动控制)
  • 接口和抽象类有什么区别?
  • 基于springboot+vue的人事系统