小兴趣:用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打包

        

时间: 2024-10-15 18:55:58

小兴趣:用python生成excel格式座位表的相关文章

服务器巡检shell脚本,python生成excel文档并邮件发出

背景及思路: 五一小长假之前,公司要求我做一次服务器巡检. 1.写了一个简单的脚本获取服务器的各种基础信息:cpu,内存,swap分区使用情况,磁盘,网卡信息种种,具体见脚本,将这些信息追加到一个文件中,然后在监控机上做一次汇总,汇总方式就不详谈,我用的是for循环ssh追加 2.然后利用python的xlsxwriter模块生成excel 3.最后利用python发带附件为excel的邮件到指定邮箱 获取服务器信息部分脚本: #取所需要的内网IP Int_ip=`ifconfig|awk '/

web利用table表格生成excel格式问题

当我们把web页面上的table导成excel形式时,有时候我们的数据需要以特定的格式呈现出来,这时候我们就需要给指定的单元格添加一些样式规格信息. 文本:vnd.ms-excel.numberformat:@ 日期:vnd.ms-excel.numberformat:yyyy/mm/dd 数字:vnd.ms-excel.numberformat:#,##0.00 货币:vnd.ms-excel.numberformat:¥#,##0.00 百分比:vnd.ms-excel.numberform

【python小随笔】python解析xml格式字符串与xml文件

1:解析xml---文件 from xml.dom.minidom import parse import xml.dom.minidom # 使用minidom解析器打开XML文档 DOMTree = xml.dom.minidom.parse("./test.xml") print(DOMTree) collection = DOMTree.documentElement # 集合某个标签 VariationChilds = collection.getElementsByTagN

python读取和生成excel文件

今天来看一下如何使用python处理excel文件,处理excel文件是在工作中经常用到的,python为我们考虑到了这一点,python中本身就自带csv模块. 1.用python读取csv文件: csv是逗号分隔符格式 一般我们用的execl生成的格式是xls和xlsx  直接重命名为csv的话会报错: Error: line contains NULL byte insun解决方案:出错原因是直接是把后缀为xls的execl文件重命名为csv的 正常的要是另存为csv文件 就不会报错了 譬

python读取excel表格生成sql语句 第一版

由于单位设计数据库表·,都用sql.不知道什么原因不用 powerdesign或者ermaster工具,建表很痛苦  作为程序猿当然要想办法解决,用Python写一个程序解决 需要用到 xlrd linux下 sudo pip install xlrd 主要是适用于db2数据库 excel 表结构 其中 number是不正确的字段类型 不知道同事为啥这么设置.这里程序里有纠错,这个程序就是将sql语句拼好. __author__ = 'c3t' # coding:utf-8 import xlr

生成Excel *.xls 生成 xls的格式与文件扩展名指定的格式不一致

如果不想修改代码可以通过修改计算机配置完成  http://blog.csdn.net/g710710/article/details/21166453 用如下方法生成的xls不会提示此错误 protected static void ExportExcel(DataTable dt) { if (dt == null || dt.Rows.Count == 0) return; Microsoft.Office.Interop.Excel.Application xlApp = new Mic

python处理文本文件,生成指定格式的文件

import os import sys import string #以指定模式打开指定文件,获取文件句柄 def getFileIns(filePath,model): print("打开文件") print(filePath) print(model) return open(filePath,model) #获取需要处理的文件 def getProcFile(path): return os.listdir(path) #判断是否满足某个条件,如果满足则执行 def isTru

Python读取Excel文件并生成分析结果

笔者需要对存放在Excel里的很多媒资文件进行分析,这些节目的分辨率有高清.标清之分,高清的节目名称前面加上"HD-",比如下面的"HD-护宝联盟第一季",标清的则直接是节目名称,如"HD-护宝联盟第一季",这些节目可能分别属于电视剧.电影.娱乐的栏目,每个节目有对应的时长(分钟数),然后按栏目放在不同的sheet里 需要实现的目标有: 1.统计高清节目的时长,这个在Excel里可以直接统计: 2.统计标清节目的时长,这个在Excel里可以直接统

python提取Excel中的特定列生成新的表格

#coding=utf-8 import xlrd,chardet,traceback,csv #根据列名获取相应序号 def getColumnIndex(table,columnName): columnIndex=None for i in range(table.ncols): if(table.cell_value(0,i)==columnName): columnIndex=i break return columnIndex #根据Excel中sheet名称读取数据 def rea