from tools.win32_total_copy import WordDocumentMerger import os, logging from docx import Document from tools.json_process import merge_info from tools.docx_tools import search_and_replace from source.defines import * def main(base_info, baogao_info): try: base_info = merge_info(base_info, DEFAULT_BASE_INFO) logger = logging.getLogger(base_info['shengcheng_dir'] + __name__) picture_dir = base_info['picture_dir'] shengcheng_dir = base_info['shengcheng_dir'] muban_dir = base_info['muban_dir'] jituan_jianxie = base_info['jituan_jianxie'] jia_company_name = base_info['jia_company_name'] kehu_company_name = base_info['kehu_company_name'] kehu_fuzeren = base_info['kehu_fuzeren'] kehu_phone = base_info['kehu_phone'] shigong_company_name = base_info['shigong_company_name'] jizu_num = base_info['jizu_num'] zhengji_changjia = base_info['zhengji_changjia'] yepian_changjia = base_info['yepian_changjia'] fengchang_name = base_info['fengchang_name'] fengchang_location = base_info['fengchang_location'] shigong_date = base_info['shigong_date'] jizu_type = base_info['jizu_type'] yepian_type = base_info['yepian_type'] jiancha_fangshi = base_info['jiancha_fangshi'] yi_Company = base_info['yi_Company'] fuzeren = base_info['fuzeren'] phone_fuzeren = base_info['phone_fuzeren'] except Exception as e: logger.error(f"获取项目基本信息失败:{e}") return try: baogao_info = merge_info(baogao_info, DEFAULT_BAOGAO_INFO) jizu_bianhao = baogao_info['jizu_bianhao'] baogao_date = baogao_info['baogao_date'] jiancha_fangshi = baogao_info['jiancha_fangshi'] bianzhi_renyuan = baogao_info['baogao_bianzhi'] baogao_shenghe = baogao_info['baogao_shenghe'] pizhun_renyuan = baogao_info['pizhun_renyuan'] jiancha_renyuan = baogao_info['jiancha_renyuan'] except Exception as e: logger.error(f"获取报告基本信息失败:{e}") return list_to_replace = { 'jia_company_name' : jia_company_name, 'fengchang_name' : fengchang_name, 'jizu_hao' : jizu_bianhao, 'bianzhi_renyuan': bianzhi_renyuan, 'shenghe_renyuan': baogao_shenghe, 'pizhun_renyuan': pizhun_renyuan, 'bianzhi_riqi': baogao_date, 'jia_company_name' : jia_company_name, 'fengchang_name' : fengchang_name, 'jizu_hao' : jizu_bianhao, 'fengchang_location' : fengchang_location, 'kehu_company' : kehu_company_name, 'xiangmuguige' : jizu_num, 'kehu_fuzeren' : kehu_fuzeren, 'yezhu_phone' : kehu_phone, 'shigong_company' : shigong_company_name, 'shigong_date' : shigong_date, 'shigong_fuzeren' : fuzeren, 'shigong_phone' : phone_fuzeren, 'zhengji_changjia' : zhengji_changjia, 'yepian_changjia' : yepian_changjia, 'jizu_type' : jizu_type, 'yepian_type' : yepian_type, 'jiancha_fangshi' : jiancha_fangshi, 'jiancha_renyuan' : jiancha_renyuan } output_filename = os.path.join(shengcheng_dir, f"{jizu_bianhao}_{baogao_date}.docx") # 合并并替换 merger = WordDocumentMerger() try: output_filename = merger.merge_documents(os.path.join(muban_dir, "empty.docx"), os.path.join(muban_dir, 'jingfeng_1.docx'), output_filename) for find_text, replace_text in list_to_replace.items(): print(search_and_replace(output_filename, find_text, replace_text)) except Exception as e: logger.error(f"合并文档失败:{e}") return #=======开始添加缺陷文字列表======== #获取缺陷信息 if __name__ == '__main__': # 配置日志 logging.basicConfig( level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s', handlers=[ logging.FileHandler('docx_merge_win32com.log'), logging.StreamHandler() ] ) base_info = { "muban_dir" : r"C:\Users\VogelimKafig\Desktop\金风模板\source\muban", "shengcheng_dir" : r"C:\Users\VogelimKafig\Desktop\金风模板\output" } main(base_info, None)