批量生成符合规则的excel条目内容
admin
2023-07-12 02:03:29
0

一、需求场景:

1、需要系统自动注册某账号时候,要按照规范编写Excel,再导入到系统中。

2、需要手工核对,或者使用七拼八凑的各网站功能生成结果再粘贴进Excel整理。

二、想法:

使用Python的openpyxl模块一次性完成表的填写

三、实践:

# -*- coding: utf-8 -*-
import time
import random
import string
import names
from openpyxl import Workbook


wb = Workbook()
current_time = time.strftime('%Y-%m-%d_%H%M%S')
dest_filename = 'Ali' + current_time + '.xlsx'
ws = wb.active
num = input("请输入需要生成的账号数量:")
if num.isdigit():
        num = int(num)
##
print("初始化数据......")
column_name = [
    '账号用户名', '密码', '网站代码', '手机号', '手机任务机code',
    'pc任务机code', '支付类型', '标签名称', '代理方式', '代理IP', '代理端口号',
    '代理用户名', '代理密码', '代理协议', '支付账号卡号', '支付账号绑定方式',
    '购买方案名称', '状态', '初始化状态', '推手手机号', '是否可销售', '是否可评论',
    '账号类型', '名', '姓', '性别', '生日', '邮箱', '国家', '洲/省', '城市', '邮编',
    '详细地址', '收件人名', '收件人姓', '收件人电话', '地址使用方式', '注册帐号状态',
    '分组名称', '支付账号使用金额', '地区代码', '机房名称', '手机代理方式'
]
email_list = ['@hotmail.com', '@outlook.com', '@msn.com', '@gmail.com']
src = string.ascii_letters + string.digits
c_col = "aliexpress"
g_col = "信用卡"
i_col = aq_col = "L-US-FLOW"
n_col = "socks5"
digits = string.digits
p_col = "固定"
q_col = "摆布系统测试方案"
r_col = "启用"
s_col = "初始化成功"
t_col = "promoteAdmin1"
w_col = "新号"
gender = ['male', 'female']
start = (1971, 1, 1, 0, 0, 0, 0, 0, 0)
end = (2005, 12, 31, 23, 59, 59, 0, 0, 0)
start_time = time.mktime(start)
end_time = time.mktime(end)
ac_col = "美国"
ak_col = "使用地址库地址"
al_col = "未注册"
am_col = "速卖通2"
ao_col = [
    "Alaska", "Alabama", "Arkansas", "Eastern Samoa", "Arizona",
    "California", "Colorado", "Connecticut", "Delaware", "Florida", "Georgia",
    "Guam", "Hawaii", "Idaho", "Illinois", "Indiana", "Kansas", "Kentucky",
    "Louisiana", "Massachusetts", "Maryland", "Maine", "Marshall Island",
    "Michigan", "Minnesota", "Missouri", "Mississippi", "Montana", "Iowa",
    "North Dakota", "Nebraska", "New hampshire", "New jersey", "New mexico",
    "New York", "Ohio", "Oklahoma", "Oregon", "Pennsylvania", "Rhode island",
    "South carolina", "Tennessee", "Texas", "Utah", "Virginia", "Vermont",
    "Washington", "Wisconsin", "Wyoming", "Nevada", "North Carolina"
]
ap_col = "克利夫兰机房"
##
print(f"正在生成数量为{num}的速卖通账号,请稍后......",)
length = len(column_name)
n = 1
for t in column_name:
    if length:
        length -= 1
        ws.cell(row=1, column=n, value=t)
        n += 1
##
for _ in range(2, num+2):
    str1 = random.choice([names.get_last_name(), names.get_first_name()])
    str2 = ''.join(random.sample(string.ascii_letters + string.digits, 8))
    str3 = random.choice(email_list)
    strs = str1 + str2 + str3
    ws.cell(row=_, column=1, value=strs)
    #
    list_passwd_all = random.sample(src, 9)
    list_passwd_all.extend(random.sample(string.digits, 1))
    list_passwd_all.extend(random.sample(string.ascii_lowercase, 1))
    list_passwd_all.extend(random.sample(string.ascii_uppercase, 1))
    random.shuffle(list_passwd_all)
    str_passwd = ''.join(list_passwd_all)
    ws.cell(row=_, column=2, value=str_passwd)
    #
    ws.cell(row=_, column=3, value=c_col)
    ws.cell(row=_, column=7, value=g_col)
    ws.cell(row=_, column=9, value=i_col)
    ws.cell(row=_, column=14, value=n_col)
    #
    payment_account = '9' + ''.join(random.sample(digits, 9))
    ws.cell(row=_, column=15, value=payment_account)
    #
    ws.cell(row=_, column=16, value=p_col)
    ws.cell(row=_, column=17, value=q_col)
    ws.cell(row=_, column=18, value=r_col)
    ws.cell(row=_, column=19, value=s_col)
    ws.cell(row=_, column=20, value=t_col)
    ws.cell(row=_, column=23, value=w_col)
    #
    current_gender = random.choice(gender)
    name1 = names.get_first_name(gender=current_gender)
    ws.cell(row=_, column=24, value=name1)
    ws.cell(row=_, column=34, value=name1)
    if current_gender == 'male':
        ws.cell(row=_, column=26, value='男')
    else:
        ws.cell(row=_, column=26, value='女')
    name2 = names.get_last_name()
    ws.cell(row=_, column=25, value=name2)
    ws.cell(row=_, column=35, value=name2)
    #
    date_touple = time.localtime(random.randint(start_time, end_time))
    date = time.strftime("%Y/%m/%d", date_touple)
    ws.cell(row=_, column=27, value=date)
    #
    ws.cell(row=_, column=28, value=ac_col)
    #  州,城市,邮编,详细地址,收件人电话,地区代码-------未完成
    #
    ws.cell(row=_, column=37, value=ak_col)
    ws.cell(row=_, column=38, value=al_col)
    ws.cell(row=_, column=39, value=am_col)
    #
    address_code = random.choice(ao_col)
    ws.cell(row=_, column=41, value=address_code)
    #
    ws.cell(row=_, column=42, value=ap_col)
    ws.cell(row=_, column=43, value=aq_col)
try:
    wb.save(filename=dest_filename)
    print(f"速卖通账号生成完毕,请查看当前目录下的{dest_filename},如果该文件已存在将被覆盖")
except PermissionError as reason:
    print(reason)
    print(f"出错啦!!请保持{dest_filename}为关闭状态")

四、结果演示:

输入数量运行后,将生成如Ali2018-12-05_174523.xlsx名字的Excel

值得一提的是,使用了names可以准确地生成名字的“正确”性别。

性别生日
GeorgeRhodarmer2001/11/03
EbonyTrinka1987/05/24
CaronMitchell1985/09/27
TrishaBell2002/12/22
MariaSpaulding1973/02/18
DorothyNoyes1991/01/18
NicholasWilliams1992/06/11
CharlesDougherty1999/04/07
CortneyMoore1997/09/24
PilarMiller1991/08/04
JaynaRamirez1973/10/13
AnnieOsullivan2003/09/21
LeonardSapp2001/12/12
JoeAkins1971/09/29



相关内容

热门资讯

OpenAI,正式组建机器人事... 人工智能(AI)领域巨头OpenAI发布公告,宣布大力扩张内部机器人事业部,正式全面切入硬件赛道,实...
星火空间完成近亿元Pre-A轮... 据星火空间消息,6月1日,合肥星火空间科技有限公司完成近亿元Pre-A轮融资。本轮融资由云泽资本和轨...
刚刚,宇树IPO闪电过会!王兴... 智东西 作者 | 许丽思 编辑 | 漠影 智东西6月1日报道,刚刚,宇树通过上交所上市委会议审议。 ...
京东工业发起百川计划 携手上游... 京东工业大模型生态发布会6月1日在北京举行,京东工业携手合作伙伴正式开启“百川计划”,从数据、模型、...
强脑科技预计今年机械手销量大涨... IT之家 6 月 2 日消息,据彭博社 2 日(今天)报道,强脑科技预计,随着中国人形机器人产业快速...
一图看懂差距!iPhone 1... 快科技6月2日消息,iPhone 18 Pro不同版本电池容量不同的相关话题冲上社交平台热搜榜,引发...
iPhone 18 Pro 或... 据科技狐,近日,知名爆料人 Sonny Dickson 分享了 iPhone 18 Pro 全套机模...
武契奇:不排除卸任总统后担任总... 塞尔维亚总统武契奇近期密集释放政坛人事与大选相关信号,明确无意在 2027 年总统任期届满后谋求连任...
6月新机夯到拉盘点,告诉你哪台... 现在这形势,手机升价是不可能躲得过的了,而且涨价期至少持续两年。那既然内存涨价躲不过,就只能选升级大...
伊朗公开已故最高领袖哈梅内伊安... 新华社德黑兰6月2日电 据伊朗伊斯兰共和国通讯社2日报道,根据伊朗已故最高领袖阿里·哈梅内伊生前遗愿...