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