ERP/test_py/create_shipments_template.py
2025-11-25 10:35:02 +08:00

108 lines
3.2 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/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("完成!您可以使用这些模板文件进行测试。")