60 lines
1.7 KiB
Python
60 lines
1.7 KiB
Python
|
|
#!/usr/bin/env python3
|
|||
|
|
"""
|
|||
|
|
验证Excel文件格式是否符合MAC与批次导入要求
|
|||
|
|
"""
|
|||
|
|
import sys
|
|||
|
|
import pandas as pd
|
|||
|
|
import warnings
|
|||
|
|
|
|||
|
|
warnings.filterwarnings('ignore', category=UserWarning, module='openpyxl')
|
|||
|
|
|
|||
|
|
def validate_excel(file_path):
|
|||
|
|
"""
|
|||
|
|
验证Excel文件格式
|
|||
|
|
返回: (is_valid, error_message)
|
|||
|
|
"""
|
|||
|
|
try:
|
|||
|
|
df = pd.read_excel(file_path)
|
|||
|
|
|
|||
|
|
if df.empty:
|
|||
|
|
return False, "文件为空,没有数据"
|
|||
|
|
|
|||
|
|
columns = df.columns.tolist()
|
|||
|
|
|
|||
|
|
# 检查是否有批次号列
|
|||
|
|
if '批次号' not in columns:
|
|||
|
|
return False, "缺少必需的列:批次号"
|
|||
|
|
|
|||
|
|
# 检查是否有MAC或SN_MAC列
|
|||
|
|
has_mac = 'MAC' in columns
|
|||
|
|
has_sn_mac = 'SN_MAC' in columns
|
|||
|
|
|
|||
|
|
if not has_mac and not has_sn_mac:
|
|||
|
|
return False, "缺少必需的列:MAC 或 SN_MAC"
|
|||
|
|
|
|||
|
|
# 检查列数(应该只有2列)
|
|||
|
|
if len(columns) != 2:
|
|||
|
|
return False, f"文件应该只包含2列数据,当前有{len(columns)}列:{', '.join(columns)}"
|
|||
|
|
|
|||
|
|
# 验证通过
|
|||
|
|
mac_col = 'MAC' if has_mac else 'SN_MAC'
|
|||
|
|
return True, f"文件格式正确,包含列:{mac_col} 和 批次号,共{len(df)}行数据"
|
|||
|
|
|
|||
|
|
except Exception as e:
|
|||
|
|
return False, f"读取文件失败:{str(e)}"
|
|||
|
|
|
|||
|
|
if __name__ == '__main__':
|
|||
|
|
if len(sys.argv) < 2:
|
|||
|
|
print("用法: python validate_excel.py <excel文件路径>")
|
|||
|
|
sys.exit(1)
|
|||
|
|
|
|||
|
|
file_path = sys.argv[1]
|
|||
|
|
is_valid, message = validate_excel(file_path)
|
|||
|
|
|
|||
|
|
if is_valid:
|
|||
|
|
print(f"✓ {message}")
|
|||
|
|
sys.exit(0)
|
|||
|
|
else:
|
|||
|
|
print(f"✗ {message}")
|
|||
|
|
sys.exit(1)
|