python判断座位号_python生成excel格式座位表

脚本分两个文件:

1.生成二维随机列表:GenerateLocaltion.py  2.将列表导入excel文件:CreateExcel.py

先上GenerateLocaltion.py:

import random

class Table():

localtion = [([1] * 9) for i in range(5)]

room = []

def inIt(self):

localtion = [([1] * 9) for i in range(5)]

for i in range(5):

localtion[i][0] = 0

#标志特殊位置

localtion[0][0] = 1

localtion[1][0] = 1

localtion[0][8] = 0

localtion[1][5] = 0

localtion[3] = [0] * 9

localtion[3][1] = 1

localtion[3][2] = 1

localtion[4][4] = 0

localtion[4][5] = 0

localtion[4] = [0] * 9

for i in range(5):

localtion[4][i] = 1

self.localtion = localtion

#生成随机列表

def generateRandomList(self):

#去掉空位

nothing = []

nothing.append(1)

nothing.append(13)

nothing.append(32)

nothing.append(31)

nothing.append(30)

nothing.append(29)

nothing.append(28)

nothing.append(27)

nothing.append(35)

nothing.append(36)

nothing.append(37)

nothing.append(38)

nothing.append(44)

self.room = []

i = 0

while len(self.room) < 31:

m = int(random.random()*100 % 44 + 1)

if m not in self.room and m not in nothing:

self.room.append(m)

i += 1

return self.room

def generateLocal(self):

#随机列表对座位赋值

for i in range(5):

for j in range(9):

if self.localtion[i][j] == 1:

self.localtion[i][j] = self.room.pop(0)

return self.localtion

def getTable(self):

self.inIt()

self.generateRandomList()

return self.generateLocal()

代码很长,主要因为要特殊照顾一些位置,思路就是生成一个足够个数的随机序列(不能重复,不能有对应空位的座位号)往二维列表里塞,其他的都很简单

CreateExcel.py:

用xlwt模块和easygui模块

xlwt中调用的函数:

sheet.write_merge()函数:参数1,2,3,4可以理解为用行和列描述一块区域,前两个为行,后两个为列例如,i,i+n,j,j+n,边长为n的正方形

sheet.write()函数:向单元格中填充内容,参数1,2表示单元格坐标,参数3表示填充的内容,参数4是单元格格式

'''

Created on 2017年7月21日

@author: Garbos

'''

#coding:utf-8

import xlwt

import easygui as g

from GenerateLocaltion import Table as table

def setUnitStyle(name,height,bold=False):

style = xlwt.XFStyle()

font = xlwt.Font()

font.name = name

font.bold = bold

font.color_index = 4

font.height = height

style.font = font

return style

def createExcel():

#創建工作簿

e = xlwt.Workbook()

#創建表格sheet1

sheet1 = e.add_sheet(u'sheet1',cell_overwrite_ok=True)

#創建第一行

sheet1.write_merge(0,0,0,3,u'',setUnitStyle('Times New Roman',500,False))

sheet1.write_merge(0,0,3,10,u'ACM 404集训座位表',setUnitStyle('Times New Roman',500,False))

sheet1.write_merge(1,1,1,4,u'',setUnitStyle('Times New Roman',300,False))

sheet1.write_merge(1,1,6,10,u'',setUnitStyle('Times New Roman',300,False))

sheet1.write(1,5,u'讲台',setUnitStyle(u'微软雅黑',400,True))

sheet1.write_merge(3,5,5,6,u'走廊',setUnitStyle('Times New Roman',800,False))

sheet1.write_merge(2,2,5,6,u'',setUnitStyle('Times New Roman',300,False))

sheet1.write_merge(6,6,5,6,u'',setUnitStyle('Times New Roman',300,False))

sheet1.write(1,0,u'门',setUnitStyle(u'微软雅黑',400,False))

gt = table()

t = gt.getTable()

for i in range(5):

for j in range(9):

if t[i][j] == 0:

continue

temp = j

if temp >= 5:

temp += 2

sheet1.write(i+2,temp,t[i][j],setUnitStyle(u'微软雅黑',250,False))

filename = '404座位表.xls'

e.save(filename)#坑,xlsx无法打开

remind = g.msgbox(msg = filename + ' 已生成!',title='404座位表生成器',

ok_button = '取消')

if __name__ =='__main__':

createExcel()

最后用Pyinstaller打包

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值