python实现生成批量引入物料信息原创
金蝶云社区-云社区用户lB85275
云社区用户lB85275
0人赞赏了该文章 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人打赏
还没有人打赏,快来当第一个打赏的人吧!