#!/usr/bin/env python3 """ 创建发货记录 Excel 模板文件 """ import pandas as pd from datetime import datetime, timedelta def create_template(): """创建发货记录模板文件(带合并单元格)""" import openpyxl from openpyxl.styles import Alignment, Font, Border, Side # 创建工作簿 wb = openpyxl.Workbook() ws = wb.active ws.title = "发货记录" # 创建表头 headers = ['出货日期', '箱号'] headers.extend([f'SN{i}' for i in range(1, 21)]) ws.append(headers) # 设置表头样式 for cell in ws[1]: cell.font = Font(bold=True) cell.alignment = Alignment(horizontal='center', vertical='center') # 创建示例数据 base_date = datetime.now() row_num = 2 # 每个日期3个箱子 for day in range(3): date = (base_date + timedelta(days=day)).strftime('%Y-%m-%d') start_row = row_num # 每天3个箱子 for box in range(3): box_num = f"BOX{day*3+box+1:03d}" # 第一列:日期(只在第一行写入,后面会合并) if box == 0: ws.cell(row=row_num, column=1, value=date) # 第二列:箱号 ws.cell(row=row_num, column=2, value=box_num) # SN1-SN20 for sn_idx in range(1, 21): sn_value = f"SN{(day*3+box)*20+sn_idx:04d}" if sn_idx <= 15 else '' ws.cell(row=row_num, column=2+sn_idx, value=sn_value) row_num += 1 # 合并日期单元格 if start_row < row_num - 1: ws.merge_cells(f'A{start_row}:A{row_num-1}') # 设置合并单元格的对齐方式 ws.cell(row=start_row, column=1).alignment = Alignment(horizontal='center', vertical='center') # 调整列宽 ws.column_dimensions['A'].width = 12 ws.column_dimensions['B'].width = 10 for i in range(3, 23): ws.column_dimensions[openpyxl.utils.get_column_letter(i)].width = 10 # 保存文件 output_file = 'shipments_template.xlsx' wb.save(output_file) print(f"✓ 模板文件已创建:{output_file}") print(f" - 包含 {row_num-2} 行示例数据") print(f" - 列:出货日期(合并单元格)、箱号、SN1-SN20") print(f" - 每个日期包含 3 个箱子") return output_file def create_empty_template(): """创建空白模板文件""" # 创建列头 columns = ['出货日期', '箱号'] columns.extend([f'SN{i}' for i in range(1, 21)]) # 创建空 DataFrame df = pd.DataFrame(columns=columns) # 保存为 Excel output_file = 'shipments_template_empty.xlsx' df.to_excel(output_file, index=False, engine='openpyxl') print(f"✓ 空白模板文件已创建:{output_file}") return output_file if __name__ == '__main__': print("创建发货记录 Excel 模板...\n") # 创建带示例数据的模板 create_template() print() # 创建空白模板 create_empty_template() print() print("完成!您可以使用这些模板文件进行测试。")