diff --git a/gui.py b/gui.py index 534b75b..126fd57 100644 --- a/gui.py +++ b/gui.py @@ -11,6 +11,7 @@ from main import ( load_data_from_excel, generate_wind_farm_data, visualize_design, + export_all_scenarios_to_excel, ) import pandas as pd @@ -229,11 +230,44 @@ def index(): import zipfile - zip_filename = "all_designs.zip" + # 1. 确定文件名 + zip_filename = "all_designs_result.zip" + excel_result_name = "wind_farm_design_result.xlsx" + + # 推断 main.py 生成的原始 Excel 路径 + generated_excel_path = "wind_farm_design.xlsx" + + if state.get("original_filename"): + name_no_ext = os.path.splitext(state["original_filename"])[0] + zip_filename = f"{name_no_ext}_result.zip" + excel_result_name = f"{name_no_ext}_result.xlsx" + + if state.get("excel_path"): + dir_name = os.path.dirname(state["excel_path"]) + generated_excel_path = os.path.join( + dir_name, f"{name_no_ext}_design.xlsx" + ) + try: with zipfile.ZipFile( zip_filename, "w", zipfile.ZIP_DEFLATED ) as zipf: + # 2. 添加 Excel 结果表 + if os.path.exists(generated_excel_path): + zipf.write(generated_excel_path, arcname=excel_result_name) + else: + # 尝试重新生成 + try: + temp_excel = "temp_export.xlsx" + export_all_scenarios_to_excel( + state["results"], temp_excel + ) + zipf.write(temp_excel, arcname=excel_result_name) + os.remove(temp_excel) + except Exception as e: + print(f"生成Excel失败: {e}") + + # 3. 添加所有 DXF for res in state["results"]: safe_name = "".join( [ @@ -255,7 +289,7 @@ def index(): except: pass ui.download(zip_filename) - ui.notify("已导出所有方案", type="positive") + ui.notify("已导出所有方案 (含Excel)", type="positive") except Exception as ex: ui.notify(f"导出失败: {ex}", type="negative")