python实现生成批量引入物料信息原创
46次浏览
编辑于2024年04月15日 15:13:20
原因:性能测试,批量引入功能需要大量物料信息数据(1w条),手工录入需要大量时间,且为重复性劳动,所以想到通过pthon实现
目的:通过python写脚本,生成Excel表,生成虚拟的物料信息,节省时间,一劳永逸
完整代码如下:
python版本:3.9
import random import time import datetime import uuid from openpyxl import Workbook from openpyxl.utils import get_column_letter # 创建一个新的工作簿 wb = Workbook() # 激活第一个工作表 ws = wb.active # 向工作表中写入数据 ws['A1'] = '物料 # bd_material' ws['O1'] = '单位信息单据体 # entryentity' ws['V1'] = '辅助属性单据体 # auxptyentry' ws['AA1'] = '分类标准 # entry_groupstandard' ws['A2'] = '说明' data = [['number', 'name.zh_CN', 'name.zh_TW', 'name.en_US', 'isenablematerialversion', 'isversionaffectinv', 'isversionaffectplan', 'versionrule.number', 'versionrule.name', 'isuseauxpty', 'baseunit.number', 'baseunit.name', 'createorg.number', 'createorg.name', 'denominator', 'numerator', 'converttype', 'measureunitid.number', 'measureunitid.name', 'desmuid.number', 'desmuid.name', 'auxptyentry_id', 'auxpty.number', 'auxpty.name', 'isaffectinv', 'isaffectplan', 'groupid.number', 'groupid.name', ], ['编码', '*名称.简体中文', '名称.繁體中文', '名称.English', '启用版本管理', '影响库存', '影响计划', '版本编码规则.编码', '版本编码规则.名称', '启用辅助属性', '*基本单位.编码', '基本单位.名称', '*创建组织.编码', '创建组织.名称', '*源单位换算系数', '*基本单位换算系数', '*换算类型', '源单位.编码', '源单位.名称', '基本单位.编码', '基本单位.名称', '内码', '*辅助属性.编码', '辅助属性.名称', '影响库存', '影响计划', '物料分类编码.编码', '物料分类编码.名称', ]] for row in data: ws.append(row) start_time = datetime.datetime.now() def generate_data(): for _ in range(1000): # 格式化输出,包括微秒 number = 'item-' + str(uuid.uuid4()) name_zh_CN = number name_zh_TW = '' name_en_US = '' isenablematerialversion = '否' isversionaffectinv = '否' isversionaffectplan = '否' versionrule_number = '' versionrule_name = '' isuseauxpty = '是' baseunit_number = 'pcs' baseunit_name = '个' createorg_number = 'BU-00001' createorg_name = '金蝶总公司' denominator = '' numerator = '' converttype = '' measureunitid_number = '' measureunitid_name = '' desmuid_number = '' desmuid_name = '' auxptyentry_id = '' isaffectinv = '' isaffectplan = '' groupid_number = '' groupid_name = '' for i in range(37): auxpty_number = 'RG350-00000{0:03d}'.format(i + 1) auxpty_name = auxpty_number data_fake = [number, name_zh_CN, name_zh_TW, name_en_US, isenablematerialversion, isversionaffectinv, isversionaffectplan, versionrule_number, versionrule_name, isuseauxpty, baseunit_number, baseunit_name, createorg_number, createorg_name, denominator, numerator, converttype, measureunitid_number, measureunitid_name, desmuid_number, desmuid_name, auxptyentry_id, auxpty_number, auxpty_name, isaffectinv, isaffectplan, groupid_number, groupid_name, ] yield data_fake for row in generate_data(): ws.append(row) # 设置列宽 for i, column in enumerate(ws.columns, start=1): max_length = 0 column_letter = get_column_letter(i) for cell in column: try: if len(str(cell.value)) > max_length: max_length = len(cell.value) except: pass adjusted_width = (max_length + 2) * 1.1 ws.column_dimensions[column_letter].width = adjusted_width # 保存工作簿 wb.save(datetime.datetime.now().strftime('%Y%m%d%H%M%S%f') + ".xlsx") end_time = datetime.datetime.now() print("运行时间:") print(end_time - start_time)
赞 0
0人点赞
还没有人点赞,快来当第一个点赞的人吧!
打赏
0人打赏
还没有人打赏,快来当第一个打赏的人吧!
推荐阅读