python 玩转openpyxl /wx/ComboBox
>>>**#一.利用openpyxl打开excel**
>>>import os #导入os,目的是为下一步getcwd
>>> os.getcwd() #查看当前python运行在哪一个目录下;那么就将”12345.xlsx”文件放入,该目录下,例如python37下---该步骤非常重要,不然会因为路径问题“瞎搞半天”
'C:\\Users \\AppData\\Local\\Programs\\Python\\Python37' 其中这里还有一个坑,参见:“大坑一”。
>>> import openpyxl# 安装这个只需要CMD里输入 PIP install openpyxl
>>> from openpyxl import load_workbook
>>>wa = load_workbook("12345.xlsx") #12345是你要处理的.xlsx文件,切记加密的文件不可以处理,wa就等于你要处理的这个文件
>>> b_sheet = wa.get_sheet_by_name('SC') #该步骤是将文件wa里的工作簿“SC“赋给b_sheet ,目的是方便后续操作; 注意在这一行会报警告没有关系,仍可以继续操作 ;解决办法:参见:“大坑二”
>>> M1= b_sheet['M1']# 将12345.xlsx的工作簿SC里的,第1行第M列的内容负值给M1
>>> print(f'{M1.value}') #打印第一行第M列的内容,输出的为字符串格式
Address(Byte Loc,Bit Loc)
>>> M3= b_sheet['M3'] # 将12345.xlsx的工作簿SC里的 第三行第M列的内容负值给M3
>>> print(f'{M3.value}') #打印第三行第M列的内容,输出的为字符串格式
>>>for cell in list(b_sheet.rows)[2]:#把第2行的数据全部打印出来
print(cell.value)
>>>>>>for kell in list(b_sheet.columns)[5]:#把第5列的数据全部打印出来
print(kell.value)
#利用openpyxl创作一个excel
from openpyxl import Workbook //导入写的操纵
>>> wc = Workbook() // 定义新的工作簿为wc
>>> ws = wc.active //将新的wc激活,并命名为ws
>>> ws['A2'] = 50 //将ws工作簿A2 (第二行第A列)写入50
>>> ws.append([1, 2, 3])//写入3行
>>>K = [
['12', 'Name', 'Department'],
['017', 'LeT','CS'],
['002', 'John','MA'],
['003', 'Amy','I0S']
]
sheet.append(K) #写入多行
>>> import datetime// 导入时间库
>>> ws['A3'] = datetime.datetime.now() //将当前时间写入到A3里面
>>> wc.save("wgm.xlsx")// 输出名字为wgm的工作簿
**《大坑一》**
如果碰到在.py文件,在IDLE尝试编写时能运行成功(使用的路径通过os.getcwd()获取),而另存.py确不能运行,要请尝试添加路径方法;
导入路径的方法:wa = load_workbook(r"C:\Users\AppData\Local\Programs\Python\Python37\12345.xlsx")
**《大坑二》**
直接就是:sheet = wa["SC"]
**《大坑三》**
运行报:zipfile.BadZipFile: File is not a zip file,,错误时,解决方法 ,把原来的excel删除,另存一个, 重新命名并调用; 不要问为什么这样确实可以解决,实践证明确实可以解决。
以上为openpyxl
附加
知识点1:
import sys,os#导入sys
sys.path.append(r"C:\Users\Public\Documents\Vector\CANoe\10.0 (x64)\CANoe Sample Configurations\Programming\Python\RunAllTests.py")#导入自己编写的python文件
知识点2:
那么如何把第N列的数值全部装到一个数组里呢;
Ms=[]
for cell in sheet['N']:
Ms.append(cell.value)
**python ComboBox 用法3步曲**
1.建立box1
list1=['A','B',"C","D","E","F","G"]
box1=wx.ComboBox(win,-1,value='A',pos =(250, 195),
size =(140, -1),choices=list1,style=wx.CB_SORT ) #依赖于win窗口建立ComboBOX,其中A是下拉列表的默认值
2. box1.Bind(wx.EVT_COMBOBOX,load)#将box1于1oad2 进行绑定
3. 创建因box1内容变化引起的事件函数
def load(event):#下拉框列表 选择事件时触发的事件函数
q=box1.GetValue() #获取box1的值
print(q)
**python wx 用法3步曲**
python wx用法很多,在这个里介绍下wx.TextCtr、wx.Button
import wx
app = wx.App()
win = wx.Frame(None,title = "你好啊", size=(1900,850))#创建版面
loadButton = wx.Button(win, label = '计算',pos = (1,160),size = (100,25))#创建按钮
filename_wgm = wx.TextCtrl(win, pos = (110,35),size = (100,25))#创建TexT版面
filename_wgm2 = wx.TextCtrl(win, pos = (110,460),size = (1730,180), style = wx.TE_MULTILINE | wx.HSCROLL)# 设置文本能够换行,并带滚动条
#以下开始利用上面创建的TEXT和按键
filename_wgm.SetValue( ) #往文本里写东西
filename_get.SetValue( )#获取文本里的东西
loadButtonfind.Bind(wx.EVT_BUTTON,load)#按键关联绑定
def load(event):#load函数
print("绑定成功")
#总结 wx的ComboBox 、wx.TextCtr、wx.Button 用法很像,都是创建、绑定、函数调用