首先打开现有的表格
python 实现从excel表中读取数据并存入class()类以实现数据关联-LMLPHP

import xlrd
#打开人员信息表
wb1=xlrd.open_workbook("C:\\Users\\Bruce Shaw\\Desktop\\datap.xls")#括号里为路径
sheet1=wb1.sheet_by_index(0)#索引至页
#创建类,读入人员信息:序号、姓名、房间号、床号
class P():
    def __init__(self, num=0, name="name", room=0, bed=0):
        self.num = num
        self.name = name
        self.room = room
        self. bed =  bed
n=int(input("请输入总人数:"))+1 #输入值班的人数,n为值班人数加1
Sentry= [] # 创建列表,以将类通过append加入其中,避免覆盖
for i in range(1,n):
    Sentry.append(P())
#中间量,以暂时存储从表中读取的数据
Name=[]
Room=[]
Bed=[]
for i in range(1,n):
    Name.append(sheet1.cell_value(i,1))
    Room.append(sheet1.cell_value(i,2))
    Bed.append(sheet1.cell_value(i,3))

##生成不重复的整数随机数,作为对原有人员进行随机排序的顺序

import random
resultList=[]
COUNT=n-1
resultList=random.sample(range(1,n),COUNT) #范围为1到n-1,Count为随机数的数量

##将值存入类中,可以通过下标查找相关值,不会产生覆盖

for i in range(0,n-1):
    Sentry[i].num=resultList[i]
    Sentry[i].name=Name[i]
    Sentry[i].room=Room[i]
    Sentry[i].bed=Bed[i]

##查看是否成功,如下图。

for i in range(0,n-1):
    print(Sentry[i].num,end=" ") #end=" "以保证同一个人的信息打印在同一行
    print(Sentry[i].name,end=" ")
    print(Sentry[i].room,end=" ")
    print(Sentry[i].bed,)

python 实现从excel表中读取数据并存入class()类以实现数据关联-LMLPHP

##新建excel表,将数据保存至其中

import xlwt
ws=wb.add_sheet('Sentry')#创建新的表单
#在表中写入目录
ws.writ(0,0,lable='序号')
ws.writ(0,0,lable='姓名')
ws.writ(0,0,lable='房号')
ws.writ(0,0,lable='床号')

#写入对应的人员信息数据
for i in range(1,n-1)
    ws.writ(i,0,lable=Sentry[i].num)
    ws.writ(i,1,lable=Sentry[i].name)
    ws.writ(i,2,lable=Sentry[i].room)
    ws.writ(i,3,lable=Sentry[i].bed)
wb.save('Sentry.xls') #保存为Sentry.xls,文件目录与该python程序目录一致

python 实现从excel表中读取数据并存入class()类以实现数据关联-LMLPHP

08-06 13:42