xlwt自动生成EXCEL模板(python)

背景

最近在学校成为了一名“金牌客服”(自封)。每天上班都需要做一个端口保修登记表(excel)。因为表里涉及日期,所以不方便ctrl + V,所以就想着用python写一个exe自动生成(毕竟每次去弄还挺烦的)。废话不多说,进入主题。

excel模板

xlwt自动生成EXCEL模板(python)_第1张图片
表头是固定的,只有A2和B2两列涉及时间,模板比较简单。

配置文件路径

import xlwt
import time
import os

dirpath1 = r"C:/Users/Bisharp无愁/Desktop/{}年端口报修登记表".format(time.strftime('%Y'))
dirpath2 = r"C:/Users/Bisharp无愁/Desktop/{}年端口报修登记表/{}月".format(time.strftime('%Y'), time.strftime('%m'))
date = time.strftime("%Y.%m.%d")
filename = str(date) + "网络端口保修登记表.xls"
path = dirpath2 + '/' + filename

时间判断

valcation = ["10.1", '01.1', '05.1', '10.2', '10.3']
weekends = ['Sun', 'Sat']

def timejuice():
    # 判断时间,节假日和周末不执行
    if time.strftime("%m.%d") in valcation:
        return False
    elif time.strftime('%a') in weekends:
        return False
    else:
        return True

后来发现没必要,虽然设置了开机自动执行,但是周末和节假日不会有人开机的()。

xlwt描绘excel模板

设置表格格式:

def set_style(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
    # 设置框线
    # borders = xlwt.Borders
    style.borders.left = xlwt.Borders.THIN
    style.borders.right = xlwt.Borders.THIN
    style.borders.top = xlwt.Borders.THIN
    style.borders.bottom = xlwt.Borders.THIN
    # style.borders = borders
    return style

创建excel文件:

def createxcel(date):
    # 创建excel文件和表
    workbook = xlwt.Workbook()
    worksheet = workbook.add_sheet("sheet1", cell_overwrite_ok=True)
    # 设置列宽
    worksheet.col(0).width = 256 * 13
    worksheet.col(1).width = 256 * 12
    worksheet.col(2).width = 256 * 20
    worksheet.col(3).width = 256 * 26
    worksheet.col(4).width = 256 * 11
    worksheet.col(5).width = 256 * 22
    worksheet.col(6).width = 256 * 9
    worksheet.col(7).width = 256 * 8
    # 写入表头
    head = ["管理编号", '保修日期', '用户名称', '地址', '联系方式', '维修结果', '维修日期', '维修人']
    colum0 = []
    colum1 = []
    for i in range(1, 4):
        colum0.append(date.replace('.', '') + '{:0>2d}'.format(i))
    for i in range(3):
        colum1.append(date)
    for i in range(len(head)):
        worksheet.write(0, i, head[i], set_style('宋体', 220, True))
    for i in range(1, 4):
        worksheet.write(i, 0, colum0[i - 1], set_style('Times New Roman', 220, True))
        worksheet.write(i, 1, colum1[i - 1], set_style('Times New Roman', 220, False))
    # 画框线
    for x in range(2, 8):
        for y in range(1, 4):
            worksheet.write(y, x, "", set_style('Times New Roman', 220, False))
    workbook.save(path)

逻辑简单,就不多加申明了,注意列宽设置,第一次设置的时候,列宽不够,导致excel输入号码后显示不全,对强迫症来说,会比较烦。

主函数代码

if not os.path.exists(dirpath1):
    os.mkdir(dirpath1)

if not os.path.exists(dirpath2):
    os.mkdir(dirpath2)

if timejuice():
    if not (os.path.exists(path)):
        try:
            createxcel(date)
        except:
            pass

判断文件路径是否完整,然后判断一下是不是工作日。最后用pyinstaller打包成exe文件,放入启动文件里就大功告成了(亲测可用,就是注意启动文件的权限问题和杀毒软件的启动文件保护)。

你可能感兴趣的:(笔记)