生成随机串码并保存到Excel中

import string,time,os
import random
from openpyxl import load_workbook,Workbook
from openpyxl.styles import Alignment
from openpyxl.styles import PatternFill
from openpyxl.styles import Side,Border


def genPassword(length):
    chars = string.ascii_lowercase + string.digits
    return ''.join(random.sample(chars,length))  #返回的字符串中没有重复的字符
    # return ''.join(random.choice(chars)  for i in range(length))  #返回的字符串中有重复的字符

def writeTxt(file_name,length=3):
    date = time.strftime('%Y%m', time.localtime())
    t = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime())
    password = 'dag' + date
    password += genPassword(length)
    tplt = "{0}\t{1}\n".format(t,password)
    with open(file_name,'a+') as f:
        f.write(tplt)

def write_Excel(file_name,username,password,length=3):
    password = password+ genPassword(length)
    t = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime())
    if os.path.exists(file_name):
        #打开存在的excel表
        workbook = load_workbook(file_name)
        sheet = workbook.active
    else:
        #创建新的excel表
        workbook = Workbook()
        sheet = workbook.active
    print(sheet.max_row)
    if(sheet.max_row == 1 and sheet.max_column == 1):  #判断是否为空表
        header = ['序号', '用户名', '密码', '生成时间']
        sheet.append(header)
    #print(sheet.max_row)
    no = sheet.max_row
    username = username
    #添加一整行
    row_lst = [no,username,password,t]
    sheet.append(row_lst)

    #调整列宽 Alignment
    sheet.column_dimensions['C'].width = 20
    sheet.column_dimensions['D'].width = 20
    sheet.row_dimensions[1].height = 30 #设置首行
    #设置其他行
    for i in range(2,sheet.max_row+1):
        sheet.row_dimensions[i].height = 20

    #填充单元格,PatternFill
    # 设置边框,Side,Border
    # 设置对齐, Alignment
    pattern_fill = PatternFill(fill_type='solid',fgColor='cccccc')
    side = Side(style='thin',color='000000')
    border = Border(left=side,right=side,top=side,bottom=side)
    alignment = Alignment(horizontal='center',vertical='center',wrap_text=True)
    #设置首行
    for row in sheet.iter_rows(min_row=1,max_row=1,min_col=1,max_col=4):
        for cell in row:
            cell.fill = pattern_fill #填充
            cell.border = border #边框
            cell.alignment = alignment #对齐
    #设置其他行
    for row in sheet.iter_rows(min_row=2,max_row=sheet.max_row,min_col=1,max_col=4):
        for cell in row:
            cell.border = border #边框
            cell.alignment = alignment #对齐

    #保存
    workbook.save(file_name)

def main():
    root = os.getcwd() + "/"
    file_name = 'password.xlsx'
    full_file_name = root + file_name
    #writeTxt(full_file_name)
    date = time.strftime('%Y%m', time.localtime())
    username = 'admin'
    try:
        iptName = str(input("请输入用户名[默认为admin]:"))
        if iptName:
            username = iptName
    except:
        print('')
    password = username + date
    try:
        length = int(input("密码固定前缀为:{}\n请输入密码后缀长度[默认长度为3]:".format(password)))
    except:
        length = 3
    write_Excel(full_file_name,username,password,length)
    os.startfile(full_file_name)

main()
posted @ 2021-05-20 10:00  yxmichael  阅读(362)  评论(0编辑  收藏  举报