from openpyxl import load_workbook # 读取原始Excel input_path = "/root/.openclaw/media/inbound/12-5---1879d0c9-7cdf-4cd5-9aff-f03091ebada3.xlsx" output_path = "/root/.openclaw/workspace-xiaoyan/L1-S1-U12-L5_组件完成版_按ID匹配.xlsx" # 定义组件内容,按ID对应行号(Excel行号从1开始) component_map = { 32: """【任务标题】描述当前时间 【资源配置】 图片时机:【互动内容】 音频载体:无 【情境引入】 无 【互动内容】 User: It is still night.(朗读) 【互动反馈】 正确:无 错误:Vicky : Wait, that didn't sound right. 【后置对话】 无""", 33: """【任务标题】等待清晨 【情境引入】 无 【互动内容】 题干:We must wait for the $morning$. 选项: 00 01(正确) 辅助信息:morning指"清晨" 【互动反馈】 正确:无 错误:Sally : Oh no, that's not right. Look outside, it's still dark! 【后置对话】 无""", 34: """【任务标题】询问清晨时间 【资源配置】 图片时机:无 音频载体:无 【情境引入】 无 【互动内容】 Vicky: How do we know when it's morning?(朗读) 【互动反馈】 正确:无 错误:Sally : Hmm, I didn't catch that. Can you say it again? 【后置对话】 无""", 52: """【任务标题】表达尝试意愿 【资源配置】 图片时机:无 音频载体:无 【情境引入】 无 【互动内容】 User: I'd like to try too.(朗读) 【互动反馈】 正确:无 错误:Sally : Oh, that doesn't sound quite right. 【后置对话】 Ben: Me too.""", 59: """【任务标题】尝试做手影狗 【资源配置】 图片时机:无 音频载体:无 【情境引入】 无 【互动内容】 User: I want to try to make a dog!(朗读) 【互动反馈】 正确:无 错误:Lucy : Wait, what did you say? I didn't get it. 【后置对话】 无""", 70: """【任务标题】评价夜晚乐趣 【资源配置】 图片时机:无 音频载体:无 【情境引入】 无 【互动内容】 User: Night is so much fun!(朗读) 【互动反馈】 正确:无 错误:Lucy : Hmm, that didn't sound right. 【后置对话】 无""", 85: """【任务标题】否定当前是清晨 【资源配置】 图片时机:无 音频载体:无 【情境引入】 无 【互动内容】 题干:It isn't ____. 选项: 选项1:night 选项2:morning(正确) 辅助信息:morning指"清晨" 【互动反馈】 正确:无 错误:Ben : Oh no, that's wrong. It's still dark out! 【后置对话】 无""", 86: """【任务标题】确认当前是夜晚 【资源配置】 图片时机:无 音频载体:无 【情境引入】 无 【互动内容】 题干:It is still ____! 选项: 选项1:night(正确) 选项2:morning 辅助信息:night指"夜晚" 【互动反馈】 正确:无 错误:Ben : Wait, that's not right. The sun isn't up yet! 【后置对话】 无""", 96: """【任务标题】提议逐个尝试 【资源配置】 图片时机:无 音频载体:无 【情境引入】 无 【互动内容】 User: Let's try them one by one!(朗读) 【互动反馈】 正确:无 错误:Sally : Hmm, that didn't sound quite right. 【后置对话】 无""", 104: """【任务标题】尝试下一个格子 【资源配置】 图片时机:无 音频载体:无 【情境引入】 无 【互动内容】 请选择一句朗读: 选项1:Let's try the next! 选项2:Let's try them one by one! 辅助信息:两个选项均为正确答案 【互动反馈】 正确:无 错误:Sally : Oh, that's not one of the choices. 【后置对话】 无""", 110: """【任务标题】排序跳格子顺序 【情境引入】 无 【互动内容】 题干:Put the actions in order of $one by one$. 选项: 00 01 02 03 正确顺序:00→01→02→03 辅助信息:one by one指"一个接一个" 【互动反馈】 正确:无 错误:Dan : Oops, that's the wrong order! We can't jump like that. 【后置对话】 无""", 118: """【任务标题】提议尝试另一块格子 【资源配置】 图片时机:无 音频载体:无 【情境引入】 无 【互动内容】 题干:____ that one. 选项: 选项1:let's try(正确) 选项2:let's play 辅助信息:let's try指"我们试试" 【互动反馈】 正确:无 错误:Dan : Wait, that doesn't make sense. 【后置对话】 无""", 124: """【任务标题】询问下一个人选 【资源配置】 图片时机:无 音频载体:无 【情境引入】 无 【互动内容】 User: Who is the next?(朗读) 【互动反馈】 正确:无 错误:Sally : Hmm, that didn't sound quite right. 【后置对话】 Vicky: It's my turn!""", 127: """【任务标题】描述灯逐个亮起 【资源配置】 图片时机:【互动内容】 音频载体:无 【情境引入】 无 【互动内容】 题干:The lights are turning on ____! 选项: 选项1:one by one(正确) 选项2:two by two 辅助信息:one by one指"一个接一个" 【互动反馈】 正确:无 错误:Lucy : Oh no, that's wrong! The lights are turning on in order. 【后置对话】 无""", 136: """【任务标题】组句提议尝试 【资源配置】 图片时机:无 音频载体:无 【情境引入】 User: The first tile didn't work. 【互动内容】 题目:提议大家试试另一块格子 选项1:try this 选项2:Let's 选项3:one. 答案:Let's try this one. 辅助信息:Let's do sth.是提议做某事的固定句式 【互动反馈】 正确:无 错误:Sally : Oops, that's not the right sentence. 【后置对话】 无""", 155: """【任务标题】组句逐个行动 【资源配置】 图片时机:无 音频载体:无 【情境引入】 Sally: We need to stand on the tiles one after another. 【互动内容】 题目:告诉大家要一个接一个做 选项1:Let's do it 选项2:one 选项3:by 选项4:one! 答案:Let's do it one by one! 辅助信息:one by one是固定搭配,意思是"一个接一个" 【互动反馈】 正确:无 错误:Sally : Oh, that doesn't make sense. Try again. 【后置对话】 无""", 179: """【任务标题】判断当前时间 【资源配置】 图片时机:【互动内容】 音频载体:无 【情境引入】 Fred: I see the light from the lighthouse! 【互动内容】 Wow! It's so bright! ____ 选项: 选项1:It's morning now!(正确) 选项2:It's night now! 辅助信息:morning指"清晨",night指"夜晚" 【互动反馈】 正确:无 错误:Fred : Wait, that's not right! Look at the sun in the sky! 【后置对话】 无""" } # 加载工作簿 wb = load_workbook(input_path) ws = wb.active # 组件列是第7列(G列) component_col = 7 # 按行号填入组件 for row_num, comp_content in component_map.items(): ws.cell(row=row_num, column=component_col, value=comp_content) # 保存文件 wb.save(output_path) print(f"文件已保存到: {output_path}") print(f"已为{len(component_map)}个组件ID匹配并填入对应行")