栏目分类:
子分类:
返回
文库吧用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
文库吧 > IT > 软件开发 > 后端开发 > Python

物流行业标杆价格,投标为降价幅度表,自动生成新的价格文件,python批量处理

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

物流行业标杆价格,投标为降价幅度表,自动生成新的价格文件,python批量处理

批量价格表数量多,每次excel表格打开缓慢,人工统计或excel公式拉取缓慢,如自动生成新的excel只能使用VB,需要一定基础

故使用python批量处理:

1、将所有报价表放入待处理文件夹

import xlwings as xw
import os  # 新建文件夹创建用

filePath = "D:\pytest\baojia\"
file_name = list()  # 新建列表
for i in os.listdir(filePath):  # 获取filePath路径下所有文件名
    data_collect = ''.join(i)  # 文件名字符串格式
    file_name.append(data_collect)  # 将文件名作为列表元素填入
    for item in file_name:
        if "~" in item:  # 删掉临时文件
            file_name.remove(item)
print(file_name)  # 打印获取成功提示

2、读取报价表内容

app = xw.App(visible=False, add_book=False)  # 启动excel
print(
    "*******************************************************************start"
    "*******************************************************************")
for i in file_name:
    workbook1 = app.books.open(f'D:\pytest\baojia\{i}')  # 打开价格表
    worksheet1 = workbook1.sheets["Sheet1"]  # 打开价格表sheet1
    print("表格打开成功")
    province = worksheet1.range('C2').value  # 读取报价省份
    company = worksheet1.range('H2').value  # 读取报价承运商
    # 以下为降幅比例获取,可简化,暂为交流易懂
    price1 = worksheet1.range('B5').value
    price2 = worksheet1.range('c5').value
    price3 = worksheet1.range('d5').value
    price4 = worksheet1.range('e5').value
    price5 = worksheet1.range('f5').value
    price6 = worksheet1.range('g5').value
    price7 = worksheet1.range('h5').value
    price8 = worksheet1.range('i5').value
    price9 = worksheet1.range('j5').value
    # 展示降幅比例
    print("降幅为A分公司产品{},B分公司产品{},C分公司产品{},D分公司产品{},E分公司产品{},F分公司产品{},I分公司产品{},J分公司产品{},K分公司产品{}". 
          format(price1, price2, price3, price4, price5, price6, price7, price8, price9))

    workbook = app.books.open(f"D:\pytest\{province}.xls")  # 打开标杆价格表

    # 创建一个字典,存放有效价终止单元格,即每个省份市县数量不同,固定操作单元格范围
    company_dict = {'海南省': 'N16', '北京市': 'N20', '河南省': 'N20', '湖北省': 'N19', '新疆省': 'N150'}
    con_end = company_dict.get(province)

    print("{}有效数据范围到:{}".format(province, con_end))

3、根据报价表里的降幅,构建新的价格表

    def mdd(sfx, sff, sfz):  # 以下为根据降幅构建新的标杆价格表函数
        worksheet = workbook.sheets[sfx]  # 指定工作簿
        data = worksheet.range("E3", con_end).value  #
        for i, j in enumerate(data):  # 遍历工作表数据
            for s in range(0, sfz):
                if type(data[i][s]) == float:  # 跳过非数字
                    data[i][s] = float(j[s]) * (1 - sff)  # 替换数据
                else:
                    continue
        worksheet.range("E3", con_end).value = data  # 将完成替换的数据写入工作表


    # 以下为代入报价表构建新的标杆价格表,每个公司报价跨度不同(公司,价格系数,报价跨度数量)
    mdd("A公司产品", price1, 10)
    mdd("B公司产品", price2, 10)
    mdd("C公司产品", price3, 10)
    mdd("D公司产品", price4, 9)
    mdd("E公司产品", price5, 10)
    mdd("F公司产品", price8, 10)
    mdd("G公司产品", price9, 10)

4将数据根据报价表中的承运商名称形成新的价格文件夹和价格文件

    # 根据承运商创建公司文件夹
    try:
        File_Path = f"D:\pytest\new\{company}"
        print(File_Path)
        # 判断是否已经存在该目录
        if not os.path.exists(File_Path):
            # 目录不存在,进行创建操作
            os.makedirs(File_Path)  # 使用os.makedirs()方法创建多层目录
            print("目录新建成功,文件放入:" + File_Path)
        else:
            print("目录已存在,文件放入")
    except BaseException as msg:
        print("新建目录失败:" + msg)

    # 保存和退出
    workbook.save(f"D:\pytest\new\{company}\{province}{'2022-2023'}.xlsx")
    workbook1.close()  # 不关全在后台
    print("报价表close")
    workbook.close()
    print("标杆价close")  # 不关全在后台
app.quit()  # 退出excel程序
print("*******************************************************************end"
      "*******************************************************************")
input('Press Enter to exit...')

转载请注明:文章转载自 www.wk8.com.cn
本文地址:https://www.wk8.com.cn/it/1038056.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 wk8.com.cn

ICP备案号:晋ICP备2021003244-6号