""" 质量检验报告生成脚本说明文档 ============================ 本文档详细说明了 generate_quality_inspection_reports.py 的工作原理和数据处理流程。 输入文件 -------- 1. 1.xls - 源数据文件,包含以下工作表: - HEADER: 包含基本信息如数量和批准人 - Dimension: 包含尺寸数据和检验日期 - Sand: 包含化学元素测试数据 2. 2.xlsx - 模板文件,包含: - WACKER: 模板工作表,包含预设格式 数据结构 -------- 1. Sand表结构(跳过前12行后): - 第3列 (索引2): Crucible ID(客户ID) - 第5-15列 (索引4-14): 化学元素测试数据 * Al: 第5列 (索引4) * Ca: 第6列 (索引5) * Cu: 第7列 (索引6) * Fe: 第8列 (索引7) * K: 第9列 (索引8) * Li: 第10列 (索引9) * Mg: 第11列 (索引10) * Mn: 第12列 (索引11) * Na: 第13列 (索引12) * Ti: 第14列 (索引13) * Zr: 第15列 (索引14) 2. 输出报告结构: - 基本信息(B3-D5):数量、批号、日期等 - 化学元素数据(D9-D19):对应11种元素的测试结果 - 尺寸数据(D20-D28):外径、高度、壁厚等 - 批准信息(D29):批准人姓名 处理流程 -------- 1. 数据读取阶段: - 读取HEADER表获取基本信息 - 读取Dimension表获取尺寸数据和日期信息 - 读取Sand表获取化学元素测试数据 - 读取模板文件作为基础格式 2. 数据处理阶段: - 遍历Dimension表中的每个Customer ID - 为每个Customer ID创建新的工作表 - 复制模板内容保持格式一致 - 填充基本信息(数量、日期等) - 从Sand表匹配并填充化学元素数据 - 填充尺寸数据 - 添加批准人信息 3. 数据映射关系: a. 元素行号映射 (element_row_mapping): - Al -> 第9行 - Ca -> 第10行 - Cu -> 第11行 ...(依此类推) b. 元素列索引映射 (element_col_mapping): - Al -> 第5列(索引4) - Ca -> 第6列(索引5) - Cu -> 第7列(索引6) ...(依此类推) 注意事项 -------- 1. 日期处理: - 检验日期格式化为 YYYY-MM-DD - 失效日期自动计算为检验日期+730天(2年) 2. 数据验证: - 检查Customer ID是否存在于Sand表中 - 确保所有必要的数据都被正确填充 3. 格式保持: - 通过复制模板内容保持原有格式 - 保持"批准人:"文本的一致性 使用方法 -------- 1. 确保输入文件 (1.xls 和 2.xlsx) 在正确的位置 2. 运行脚本:python generate_quality_inspection_reports.py 3. 输出文件将保存为 2_updated.xlsx 输出文件 -------- 2_updated.xlsx:包含所有客户的质量检验报告,每个客户一个工作表, 保持了原有的格式并填充了所有必要的数据。 """ # 示例:如何使用生成的报告 def usage_example(): print("使用示例:") print("1. 准备输入文件:") print(" - 确保有1.xls(源数据)") print(" - 确保有2.xlsx(模板)") print("\n2. 运行脚本:") print(" python generate_quality_inspection_reports.py") print("\n3. 检查输出:") print(" - 查看2_updated.xlsx") print(" - 验证每个客户的工作表是否正确生成") if __name__ == "__main__": usage_example()