From 26d80eafa8e963cf220d2945c0f0de1f54f8d146 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BE=AF=E6=AC=A2?= Date: Wed, 16 Apr 2025 10:25:46 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=8A=E4=BC=A0=E6=96=87=E4=BB=B6=E8=87=B3?= =?UTF-8?q?=20/?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 烟草公司订单下载到下载目录,自动检测今天下载的单个文件,处理生成进货单之后,删除源文件,生成桌面“进货单-生成”的xls文件,然后导入银豹 --- 烟草公司.py | 96 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 96 insertions(+) create mode 100644 烟草公司.py diff --git a/烟草公司.py b/烟草公司.py new file mode 100644 index 0000000..843a1a4 --- /dev/null +++ b/烟草公司.py @@ -0,0 +1,96 @@ +import os, glob, datetime +import pandas as pd +import xlrd +from xlutils.copy import copy +from openpyxl import load_workbook # 用于读取 .xlsx 的 H1、H3 信息 + +# --------------------------- 配置路径 --------------------------- +downloads_dir = r"D:\Downloads" +template_file = r"C:\Users\Administrator\Desktop\银豹-采购单模板.xls" +output_file = r"C:\Users\Administrator\Desktop\银豹采购单_生成版.xls" + +# --------------------------- 获取今日开始时间戳 --------------------------- +today = datetime.date.today() +today_start = datetime.datetime.combine(today, datetime.time.min).timestamp() + +# --------------------------- 查找今日的订单明细文件 --------------------------- +file_pattern = os.path.join(downloads_dir, "订单明细202504*.xlsx") +candidates = glob.glob(file_pattern) + +target_file = None +for file in candidates: + if os.path.getctime(file) >= today_start: + target_file = file + break + +if not target_file: + print("!!!注意:未查找到今日生成的订单明细文件。") + exit() + +print(f"1.✅ 已找到文件:{target_file}") + +# --------------------------- 读取订单时间(H1)与总金额(H3) --------------------------- +try: + wb_info = load_workbook(target_file, data_only=True) + ws_info = wb_info.active + order_time = ws_info["H1"].value or "(空)" + total_amount = ws_info["H3"].value or 0 +except Exception as e: + print(f"❌ 读取订单信息出错(H1/H3):{e}") + order_time = "(读取失败)" + total_amount = "(读取失败)" + +# --------------------------- 读取订单数据 --------------------------- +columns = ['商品', '盒码', '条码', '建议零售价', '批发价', '需求量', '订单量', '金额'] + +try: + df_old = pd.read_excel(target_file, header=None, skiprows=3, names=columns) +except Exception as e: + print(f"❌ 读取订单数据失败:{e}") + exit() + +# 过滤订单量不为0的数据,并计算采购量和单价 +df_old = df_old[df_old['订单量'] != 0].copy() +df_old['采购量'] = df_old['订单量'] * 10 +df_old['采购单价'] = df_old['金额'] / df_old['采购量'] +df_old = df_old.reset_index(drop=True) + +# --------------------------- 打开模板,准备写入 --------------------------- +try: + template_rd = xlrd.open_workbook(template_file, formatting_info=True) + template_wb = copy(template_rd) + template_ws = template_wb.get_sheet(0) + + # 获取模板中的表头列索引 + header_row = template_rd.sheet_by_index(0).row_values(0) + barcode_col = header_row.index("条码(必填)") + amount_col = header_row.index("采购量(必填)") + gift_col = header_row.index("赠送量") + price_col = header_row.index("采购单价(必填)") + + # 写入数据到模板 + for i, row in df_old.iterrows(): + template_ws.write(i + 1, barcode_col, row['盒码']) # 商品条码 + template_ws.write(i + 1, amount_col, int(row['采购量'])) # 采购量 + template_ws.write(i + 1, gift_col, "") # 赠送量为空 + template_ws.write(i + 1, price_col, round(row['采购单价'], 2)) # 采购单价保留两位小数 + + # 保存输出文件 + template_wb.save(output_file) + print(f"2.✅ 文件生成成功:{output_file}") + +except Exception as e: + print(f"2.❌ 写入模板失败:{e}") + exit() + +# --------------------------- 输出处理结果 --------------------------- +print(f"3.📌 共处理条目数:{len(df_old)} 条") +print(f" 🕒 订单时间:{order_time}") +print(f" 💰 订单总金额:{total_amount} 元") + +# --------------------------- 删除源文件 --------------------------- +try: + os.remove(target_file) + print(f"4.🗑️ 已删除源文件:{target_file}") +except Exception as e: + print(f"4.⚠️ 删除源文件失败:{e}")