elapouya / python-docx-template

Use a docx as a jinja2 template
GNU Lesser General Public License v2.1
1.92k stars 378 forks source link

add {% vm %} merge will create a target doc which can not be opend #533

Open Jinglouyan opened 3 months ago

Jinglouyan commented 3 months ago

here is my code ` from docxtpl import DocxTemplate, InlineImage

PRESET_VALUES = { "OUTPUT_DIR": "./output", "EDUCATION_DEPARTMENT": "汪清县", }

context = { "edu_department": PRESET_VALUES["EDUCATION_DEPARTMENT"], "start_date": "2024年2月22日", "end_date": "2024年3月26日", "year": "2024", "month": "3月", "season": "春季", "school_number": 8, "student_number": 940, "course_number": 17, "course_section_number": 16, "current_section_number": 4, "course_theme_range": "心理教育、思维训练、艺术启蒙", "course_theme_number": "七", "per_school_detail": [ { "school_name": "汪清县第一实验小学", "course_list": [ { "grade": "二年级", "course_name": "劳动乐趣多 I", "current_section_number": 4, }, ], }, { "school_name": "汪清县第二实验小学", "course_list": [ { "grade": "二年级", "course_name": "数字游戏", "current_section_number": 5, }, { "grade": "三年级", "course_name": "神奇科学:趣味实验活动", "current_section_number": 6, }, ], }, { "school_name": "汪清县第三小学", "course_list": [ { "grade": "三年级", "course_name": "探秘人工智能 I", "current_section_number": 4, } ], }, { "school_name": "汪清县第四小学", "course_list": [ { "grade": "二年级", "course_name": "画画巧学古诗词", "current_section_number": 3, } ], }, { "school_name": "大兴沟镇民族联合小学", "course_list": [ { "grade": "二年级", "course_name": "国学启蒙:乐唱经典", "current_section_number": 3, }, { "grade": "三年级", "course_name": "硬笔书法II", "current_section_number": 3, }, ], }, { "school_name": "汪清县鸡冠乡中心小学", "course_list": [ { "grade": "二年级", "course_name": "折纸奥秘:生活大百科", "current_section_number": 4, }, { "grade": "四年级", "course_name": "动物探秘", "current_section_number": 4, }, ], }, { "school_name": "汪清县天桥岭镇第一小学", "course_list": [ { "grade": "三年级", "course_name": "趣味心理减压课堂", "current_section_number": 4, }, { "grade": "四年级", "course_name": "乐器百科", "current_section_number": 4, }, ], }, { "school_name": "汪清县东振社区党爱育苗之家", "course_list": [ { "grade": "四年级", "course_name": "记忆力大作战", "current_section_number": 0, }, { "grade": "五年级", "course_name": "识情绪,善社交", "current_section_number": 0, }, { "grade": "五年级", "course_name": "我与时间", "current_section_number": 4, }, { "grade": "五年级", "course_name": "趣味心理减压课堂", "current_section_number": 0, }, { "grade": "五年级", "course_name": "了不起的逻辑思维", "current_section_number": 0, }, { "grade": "五年级", "course_name": "超能学习力", "current_section_number": 0, }, ], } ], "course_status_description": "如上数据所示,各学校稳步开展课堂,汪清县东振社区党爱育苗之家采购课程较多,学生写作业之余到达社区后会利用课程逐一开展,目前集中在《我与时间》进行授课。", "course_science_range": "心理、劳动、思维、科学", "teacher_feedback_list": [ { "feedback_school_name": "大兴沟镇民族联合小学老师", "feedback_str": "《硬笔书法 II》课程里面讲解的汉字书写特别详细,一节课能在轻松的气氛里通过学习好几个汉字来认识各种字形的书写,孩子们上完课之后学习写字的时候更积极了,课堂环节环环相扣,设置的很合理,老师开展起来很轻松。", }, { "feedback_school_name": "汪清县第四小学老师", "feedback_str": "飞象课程的这种双师模式,老师开展起来比较轻松,一般几分钟就能完成备课,课程环节都有设计好了的,课堂节奏也有个预计的时间,我再根据孩子的情况看,很好把控。线上老师的专业知识的讲解也很到位,课堂氛围也很活跃,孩子们都很喜欢这个课程。", }, ], }

if name == "main": print("Hello World!") doc = DocxTemplate("template.docx") # 选定模板

context = { 'company_name' : "World company" } #需要替换的内容

doc.render(context)  # 渲染替换
doc.save("generated_doc.docx")  # 保存

`

and here is my template doc template.docx

after running the code and then i try to open the generated_doc.docx, it show like this image in Chinese, it means that file has an error and can not be opened Can anybody help me? Thanks

Jinglouyan commented 3 months ago

besides, when i remove the tag {%vm %},everything goes right

pangao1990 commented 3 months ago

同问