110 lines
4.3 KiB
Python
110 lines
4.3 KiB
Python
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) |