Просмотр исходного кода

20250217 添加导出对话框(未调试)

rmy 2 месяцев назад
Родитель
Сommit
3ec4aee681
5 измененных файлов: 232 добавлений и 129 удалений
  1. 35
    35
      Front/back/GC/GCExport.py
  2. 36
    36
      Front/back/GS/GSExport.py
  3. 36
    36
      Front/back/WD/WDExport.py
  4. 121
    18
      Front/main.py
  5. 4
    4
      Front/modules/ui_functions.py

+ 35
- 35
Front/back/GC/GCExport.py Просмотреть файл

@@ -10,7 +10,7 @@ from openpyxl.utils.dataframe import dataframe_to_rows
10 10
 from openpyxl import Workbook
11 11
 
12 12
 
13
-def export_result_data(ui, utf_en, db_path, export_folder):
13
+def export_result_data(ui, utf_en, db_path, export_folder,file_name):
14 14
     try:
15 15
         # 解码 utf_en
16 16
         decoded_utf_en = utf_en.decode('utf-8') if isinstance(utf_en, bytes) else utf_en
@@ -134,8 +134,8 @@ def export_result_data(ui, utf_en, db_path, export_folder):
134 134
             # 获取当前时间并格式化为字符串,例如:20231010_143000
135 135
         timestamp = time.strftime("%Y%m%d", time.localtime())
136 136
         # 保存 Excel 文件
137
-        excel_filename = f"{os.path.splitext(decoded_utf_en)[0]}-成果数据-{timestamp}.xlsx"
138
-        excel_filepath = os.path.join(export_folder, excel_filename)
137
+        # excel_filename = f"{os.path.splitext(decoded_utf_en)[0]}-成果数据-{timestamp}.xlsx"
138
+        excel_filepath = os.path.join(export_folder, file_name)
139 139
         wb.save(excel_filepath)
140 140
 
141 141
         QMessageBox.information(ui, '成功', f'成果文件已成功导出到 {export_folder}')
@@ -146,7 +146,7 @@ def export_result_data(ui, utf_en, db_path, export_folder):
146 146
         conn.close()
147 147
 
148 148
 
149
-def export_initial_data(ui, utf_en, db_path, export_folder):
149
+def export_initial_data(ui, utf_en, db_path, export_folder,file_name):
150 150
     try:
151 151
         # 解码 utf_en
152 152
         decoded_utf_en = utf_en.decode('utf-8') if isinstance(utf_en, bytes) else utf_en
@@ -259,8 +259,8 @@ def export_initial_data(ui, utf_en, db_path, export_folder):
259 259
         # 获取当前时间并格式化为字符串,例如:20231010_143000
260 260
         timestamp = time.strftime("%Y%m%d", time.localtime())
261 261
         # 设置文件名
262
-        excel_filename = f"{os.path.splitext(decoded_utf_en)[0]}-初始数据-{timestamp}.xlsx"
263
-        excel_filepath = os.path.join(export_folder, excel_filename)
262
+        # excel_filename = f"{os.path.splitext(decoded_utf_en)[0]}-初始数据-{timestamp}.xlsx"
263
+        excel_filepath = os.path.join(export_folder, file_name)
264 264
 
265 265
         # 保存 Excel 文件
266 266
         wb.save(excel_filepath)
@@ -274,7 +274,7 @@ def export_initial_data(ui, utf_en, db_path, export_folder):
274 274
             print(e)
275 275
 
276 276
 
277
-def export_example_data(ui, utf_en, db_path, export_folder):
277
+def export_example_data(ui, utf_en, db_path, export_folder,file_name):
278 278
     try:
279 279
         # 解码 utf_en
280 280
         decoded_utf_en = utf_en.decode('utf-8') if isinstance(utf_en, bytes) else utf_en
@@ -386,8 +386,8 @@ def export_example_data(ui, utf_en, db_path, export_folder):
386 386
         ws.column_dimensions['J'].width = 11.5
387 387
 
388 388
         # 设置文件名
389
-        excel_filename = f"{os.path.splitext(decoded_utf_en)[0]}.xlsx"
390
-        excel_filepath = os.path.join(export_folder, excel_filename)
389
+        # excel_filename = f"{os.path.splitext(decoded_utf_en)[0]}.xlsx"
390
+        excel_filepath = os.path.join(export_folder, file_name)
391 391
 
392 392
         # 保存 Excel 文件
393 393
         wb.save(excel_filepath)
@@ -419,42 +419,42 @@ def process_utf_en(utf_en):
419 419
 
420 420
     return utf_en
421 421
 
422
-def main_function_initial(ui, utf_en, db_path):
422
+def main_function_initial(ui, utf_en, db_path,export_folder,file_name):
423 423
 
424
-    # 获取应用的安装目录
425
-    app_install_dir = os.getcwd()  # 假设脚本文件位于应用的安装目录下
426
-    export_folder = os.path.join(app_install_dir, 'Export')
427
-
428
-    # 如果 Export 文件夹不存在,则创建它
429
-    if not os.path.exists(export_folder):
430
-        os.makedirs(export_folder)
424
+    # # 获取应用的安装目录
425
+    # app_install_dir = os.getcwd()  # 假设脚本文件位于应用的安装目录下
426
+    # export_folder = os.path.join(app_install_dir, 'Export')
427
+    #
428
+    # # 如果 Export 文件夹不存在,则创建它
429
+    # if not os.path.exists(export_folder):
430
+    #     os.makedirs(export_folder)
431 431
 
432 432
     # 调用导出初始数据函数
433
-    export_initial_data(ui, utf_en, db_path, export_folder)
434
-
433
+    export_initial_data(ui, utf_en, db_path, export_folder,file_name)
435 434
 
436
-def main_function_example(ui, utf_en, db_path):
437 435
 
438
-    # 获取应用的安装目录
439
-    app_install_dir = os.getcwd()  # 假设脚本文件位于应用的安装目录下
440
-    example_folder = os.path.join(app_install_dir, 'Example')
436
+def main_function_example(ui, utf_en, db_path,export_folder,file_name):
441 437
 
442
-    # 如果 Example 文件夹不存在,则创建它
443
-    if not os.path.exists(example_folder):
444
-        os.makedirs(example_folder)
438
+    # # 获取应用的安装目录
439
+    # app_install_dir = os.getcwd()  # 假设脚本文件位于应用的安装目录下
440
+    # example_folder = os.path.join(app_install_dir, 'Example')
441
+    #
442
+    # # 如果 Example 文件夹不存在,则创建它
443
+    # if not os.path.exists(example_folder):
444
+    #     os.makedirs(example_folder)
445 445
 
446 446
     # 调用导出初始数据函数
447
-    export_example_data(ui, utf_en, db_path, example_folder)
447
+    export_example_data(ui, utf_en, db_path, export_folder,file_name)
448 448
 
449
-def main_function_result(ui, utf_en, db_path):
449
+def main_function_result(ui, utf_en, db_path,export_folder,file_name):
450 450
     # 处理 utf_en
451 451
     utf_en = process_utf_en(utf_en)
452
-    # 获取应用的安装目录
453
-    app_install_dir = os.getcwd()  # 假设脚本文件位于应用的安装目录下
454
-    export_folder = os.path.join(app_install_dir, 'Export')
452
+    # # 获取应用的安装目录
453
+    # app_install_dir = os.getcwd()  # 假设脚本文件位于应用的安装目录下
454
+    # export_folder = os.path.join(app_install_dir, 'Export')
455 455
 
456
-    # 如果 Export 文件夹不存在,则创建它
457
-    if not os.path.exists(export_folder):
458
-        os.makedirs(export_folder)
456
+    # # 如果 Export 文件夹不存在,则创建它
457
+    # if not os.path.exists(export_folder):
458
+    #     os.makedirs(export_folder)
459 459
     # 调用导出结果函数
460
-    export_result_data(ui, utf_en, db_path, export_folder)
460
+    export_result_data(ui, utf_en, db_path, export_folder,file_name)

+ 36
- 36
Front/back/GS/GSExport.py Просмотреть файл

@@ -63,7 +63,7 @@ def Arrange_Data2(list1):
63 63
     return list2
64 64
 
65 65
 
66
-def openpyxl_write(file_name, dbpath, filename):
66
+def openpyxl_write(folder_name, dbpath, filename,file_name):
67 67
     utf_en = filename.encode('utf-8')
68 68
     # 新建对应的excel
69 69
     wb = openpyxl.Workbook()
@@ -229,18 +229,18 @@ def openpyxl_write(file_name, dbpath, filename):
229 229
     # 获取当前时间并格式化为字符串,例如:20231010_143000
230 230
     timestamp = time.strftime("%Y%m%d", time.localtime())
231 231
     # 保存 Excel 文件
232
-    excel_filename = f"{os.path.splitext(filename)[0]}-成果数据-{timestamp}.xlsx"
233
-    excel_filepath = os.path.join(file_name, excel_filename)
232
+    # excel_filename = f"{os.path.splitext(filename)[0]}-成果数据-{timestamp}.xlsx"
233
+    excel_filepath = os.path.join(folder_name, file_name)
234 234
     wb.save(excel_filepath)
235 235
 
236 236
 
237
-def export_initial_data(ui, db_path, utf_en, export_folder):
237
+def export_initial_data(ui, db_path, utf_en, export_folder,file_name):
238 238
     # 获取当前时间并格式化为字符串,例如:20231010_143000
239 239
     timestamp = time.strftime("%Y%m%d", time.localtime())
240 240
     # 解码 utf_en
241 241
     decoded_utf_en = utf_en.decode('utf-8') if isinstance(utf_en, bytes) else utf_en
242
-    excel_file_name = f"{os.path.splitext(decoded_utf_en)[0]}-初始数据-{timestamp}.xlsx"
243
-    excel_path = os.path.join(export_folder, excel_file_name)
242
+    # excel_file_name = f"{os.path.splitext(decoded_utf_en)[0]}-初始数据-{timestamp}.xlsx"
243
+    excel_path = os.path.join(export_folder, file_name)
244 244
 
245 245
     # 创建一个新的工作簿和工作表
246 246
     wb = openpyxl.Workbook()
@@ -359,11 +359,11 @@ def export_initial_data(ui, db_path, utf_en, export_folder):
359 359
     # 保存工作簿
360 360
     wb.save(excel_path)
361 361
 
362
-def export_example_data(ui, db_path, utf_en, export_folder):
362
+def export_example_data(ui, db_path, utf_en, export_folder,file_name):
363 363
     # 解码 utf_en
364 364
     decoded_utf_en = utf_en.decode('utf-8') if isinstance(utf_en, bytes) else utf_en
365
-    excel_file_name = f"{os.path.splitext(decoded_utf_en)[0]}.xlsx"
366
-    excel_path = os.path.join(export_folder, excel_file_name)
365
+    # excel_file_name = f"{os.path.splitext(decoded_utf_en)[0]}.xlsx"
366
+    excel_path = os.path.join(export_folder, file_name)
367 367
 
368 368
     # 创建一个新的工作簿和工作表
369 369
     wb = openpyxl.Workbook()
@@ -483,31 +483,31 @@ def export_example_data(ui, db_path, utf_en, export_folder):
483 483
     wb.save(excel_path)
484 484
 
485 485
 # 主函数 写入excel文件
486
-def main_function(ui, dbpath, excelname):
487
-    # 获取应用的安装目录
488
-    app_install_dir = os.getcwd()  # 假设脚本文件位于应用的安装目录下
489
-    export_folder = os.path.join(app_install_dir, 'Export')
490
-
491
-    # 如果 Export 文件夹不存在,则创建它
492
-    if not os.path.exists(export_folder):
493
-        os.makedirs(export_folder)
486
+def main_function(ui, dbpath, excelname,export_folder,file_name):
487
+    # # 获取应用的安装目录
488
+    # app_install_dir = os.getcwd()  # 假设脚本文件位于应用的安装目录下
489
+    # export_folder = os.path.join(app_install_dir, 'Export')
490
+    #
491
+    # # 如果 Export 文件夹不存在,则创建它
492
+    # if not os.path.exists(export_folder):
493
+    #     os.makedirs(export_folder)
494 494
     try:
495
-        openpyxl_write(export_folder, dbpath, excelname)
495
+        openpyxl_write(export_folder, dbpath, excelname,file_name)
496 496
         QMessageBox.information(ui, '成功', f'成果文件已成功导出到 {export_folder}')
497 497
     except Exception as e:
498 498
         QMessageBox.critical(ui, '错误', f'导出过程中发生错误: {str(e)}')
499 499
 
500 500
 
501
-def main_function_initial(ui, dbpath, excelname_utf8):
502
-    # 获取应用的安装目录
503
-    app_install_dir = os.getcwd()  # 假设脚本文件位于应用的安装目录下
504
-    export_folder = os.path.join(app_install_dir, 'Export')
505
-
506
-    # 如果 Export 文件夹不存在,则创建它
507
-    if not os.path.exists(export_folder):
508
-        os.makedirs(export_folder)
501
+def main_function_initial(ui, dbpath, excelname_utf8,export_folder,file_name):
502
+    # # 获取应用的安装目录
503
+    # app_install_dir = os.getcwd()  # 假设脚本文件位于应用的安装目录下
504
+    # export_folder = os.path.join(app_install_dir, 'Export')
505
+    #
506
+    # # 如果 Export 文件夹不存在,则创建它
507
+    # if not os.path.exists(export_folder):
508
+    #     os.makedirs(export_folder)
509 509
     try:
510
-        export_initial_data(ui, dbpath, excelname_utf8, export_folder)
510
+        export_initial_data(ui, dbpath, excelname_utf8, export_folder,file_name)
511 511
         QMessageBox.information(ui, '成功', f'初始文件已成功导出到 {export_folder}')
512 512
     except PermissionError as e:
513 513
         if e.errno == 13:
@@ -518,16 +518,16 @@ def main_function_initial(ui, dbpath, excelname_utf8):
518 518
         QMessageBox.critical(ui, '错误', f'导出过程中发生错误: {str(e)}')
519 519
 
520 520
 
521
-def main_function_example(ui, dbpath, excelname_utf8):
522
-    # 获取应用的安装目录
523
-    app_install_dir = os.getcwd()  # 假设脚本文件位于应用的安装目录下
524
-    export_folder = os.path.join(app_install_dir, 'Example')
525
-
526
-    # 如果 Export 文件夹不存在,则创建它
527
-    if not os.path.exists(export_folder):
528
-        os.makedirs(export_folder)
521
+def main_function_example(ui, dbpath, excelname_utf8,export_folder,file_name):
522
+    # # 获取应用的安装目录
523
+    # app_install_dir = os.getcwd()  # 假设脚本文件位于应用的安装目录下
524
+    # export_folder = os.path.join(app_install_dir, 'Example')
525
+    #
526
+    # # 如果 Export 文件夹不存在,则创建它
527
+    # if not os.path.exists(export_folder):
528
+    #     os.makedirs(export_folder)
529 529
     try:
530
-        export_example_data(ui, dbpath, excelname_utf8, export_folder)
530
+        export_example_data(ui, dbpath, excelname_utf8, export_folder,file_name)
531 531
         QMessageBox.information(ui, '成功', f'示例文件已成功导出到 {export_folder}')
532 532
     except PermissionError as e:
533 533
         if e.errno == 13:

+ 36
- 36
Front/back/WD/WDExport.py Просмотреть файл

@@ -47,7 +47,7 @@ def Arrange_Data1(list1):
47 47
     return list2
48 48
 
49 49
 
50
-def openpyxl_write(file_name, dbpath, filename):
50
+def openpyxl_write(folder_name, dbpath, filename,file_name):
51 51
     utf_en = filename.encode('utf-8')
52 52
     # 新建对应的excel
53 53
     wb = openpyxl.Workbook()
@@ -190,18 +190,18 @@ def openpyxl_write(file_name, dbpath, filename):
190 190
     # 获取当前时间并格式化为字符串,例如:20231010_143000
191 191
     timestamp = time.strftime("%Y%m%d", time.localtime())
192 192
     # 保存 Excel 文件
193
-    excel_filename = f"{os.path.splitext(filename)[0]}-成果数据-{timestamp}.xlsx"
194
-    excel_filepath = os.path.join(file_name, excel_filename)
193
+    # excel_filename = f"{os.path.splitext(filename)[0]}-成果数据-{timestamp}.xlsx"
194
+    excel_filepath = os.path.join(folder_name, file_name)
195 195
     wb.save(excel_filepath)
196 196
 
197 197
 
198
-def export_initial_data(ui, db_path, utf_en, export_folder):
198
+def export_initial_data(ui, db_path, utf_en, export_folder,file_name):
199 199
     # 获取当前时间并格式化为字符串,例如:20231010_143000
200 200
     timestamp = time.strftime("%Y%m%d", time.localtime())
201 201
     # 解码文件名并去掉后缀名
202 202
     decoded_utf_en = utf_en.decode('utf-8') if isinstance(utf_en, bytes) else utf_en
203
-    excel_file_name = f"{os.path.splitext(decoded_utf_en)[0]}-初始数据-{timestamp}.xlsx"
204
-    excel_path = os.path.join(export_folder, excel_file_name)
203
+    # excel_file_name = f"{os.path.splitext(decoded_utf_en)[0]}-初始数据-{timestamp}.xlsx"
204
+    excel_path = os.path.join(export_folder, file_name)
205 205
 
206 206
     # 创建一个新的工作簿和工作表
207 207
     wb = openpyxl.Workbook()
@@ -335,11 +335,11 @@ def export_initial_data(ui, db_path, utf_en, export_folder):
335 335
     wb.save(excel_path)
336 336
 
337 337
 
338
-def export_example_data(ui, db_path, utf_en, export_folder):
338
+def export_example_data(ui, db_path, utf_en, export_folder,file_name):
339 339
     # 解码文件名并去掉后缀名
340 340
     decoded_utf_en = utf_en.decode('utf-8') if isinstance(utf_en, bytes) else utf_en
341
-    excel_file_name = f"{os.path.splitext(decoded_utf_en)[0]}.xlsx"
342
-    excel_path = os.path.join(export_folder, excel_file_name)
341
+    # excel_file_name = f"{os.path.splitext(decoded_utf_en)[0]}.xlsx"
342
+    excel_path = os.path.join(export_folder, file_name)
343 343
 
344 344
     # 创建一个新的工作簿和工作表
345 345
     wb = openpyxl.Workbook()
@@ -473,31 +473,31 @@ def export_example_data(ui, db_path, utf_en, export_folder):
473 473
     wb.save(excel_path)
474 474
 
475 475
 # 主函数 写入excel文件
476
-def main_function(ui, dbpath, excelname):
477
-    # 获取应用的安装目录
478
-    app_install_dir = os.getcwd()  # 假设脚本文件位于应用的安装目录下
479
-    export_folder = os.path.join(app_install_dir, 'Export')
480
-
481
-    # 如果 Export 文件夹不存在,则创建它
482
-    if not os.path.exists(export_folder):
483
-        os.makedirs(export_folder)
476
+def main_function(ui, dbpath, excelname,export_folder,file_name):
477
+    # # 获取应用的安装目录
478
+    # app_install_dir = os.getcwd()  # 假设脚本文件位于应用的安装目录下
479
+    # export_folder = os.path.join(app_install_dir, 'Export')
480
+    #
481
+    # # 如果 Export 文件夹不存在,则创建它
482
+    # if not os.path.exists(export_folder):
483
+    #     os.makedirs(export_folder)
484 484
     try:
485
-        openpyxl_write(export_folder, dbpath, excelname)
485
+        openpyxl_write(export_folder, dbpath, excelname,file_name)
486 486
         QMessageBox.information(ui, '成功', f'成果文件已成功导出到 {export_folder}')
487 487
     except Exception as e:
488 488
         QMessageBox.critical(ui, '错误', f'导出过程中发生错误: {str(e)}')
489 489
 
490 490
 
491
-def main_function_initial(ui, dbpath, excelname_utf8):
492
-    # 获取应用的安装目录
493
-    app_install_dir = os.getcwd()  # 假设脚本文件位于应用的安装目录下
494
-    export_folder = os.path.join(app_install_dir, 'Export')
495
-
496
-    # 如果 Export 文件夹不存在,则创建它
497
-    if not os.path.exists(export_folder):
498
-        os.makedirs(export_folder)
491
+def main_function_initial(ui, dbpath, excelname_utf8,export_folder,file_name):
492
+    # # 获取应用的安装目录
493
+    # app_install_dir = os.getcwd()  # 假设脚本文件位于应用的安装目录下
494
+    # export_folder = os.path.join(app_install_dir, 'Export')
495
+    #
496
+    # # 如果 Export 文件夹不存在,则创建它
497
+    # if not os.path.exists(export_folder):
498
+    #     os.makedirs(export_folder)
499 499
     try:
500
-        export_initial_data(ui, dbpath, excelname_utf8, export_folder)
500
+        export_initial_data(ui, dbpath, excelname_utf8, export_folder,file_name)
501 501
         QMessageBox.information(ui, '成功', f'初始文件已成功导出到 {export_folder}')
502 502
     except PermissionError as e:
503 503
         if e.errno == 13:
@@ -507,16 +507,16 @@ def main_function_initial(ui, dbpath, excelname_utf8):
507 507
     except Exception as e:
508 508
         QMessageBox.critical(ui, '错误', f'导出过程中发生错误: {str(e)}')
509 509
 
510
-def main_function_example(ui, dbpath, excelname_utf8):
511
-    # 获取应用的安装目录
512
-    app_install_dir = os.getcwd()  # 假设脚本文件位于应用的安装目录下
513
-    export_folder = os.path.join(app_install_dir, 'Example')
514
-
515
-    # 如果 Export 文件夹不存在,则创建它
516
-    if not os.path.exists(export_folder):
517
-        os.makedirs(export_folder)
510
+def main_function_example(ui, dbpath, excelname_utf8,export_folder,file_name):
511
+    # # 获取应用的安装目录
512
+    # app_install_dir = os.getcwd()  # 假设脚本文件位于应用的安装目录下
513
+    # export_folder = os.path.join(app_install_dir, 'Example')
514
+    #
515
+    # # 如果 Export 文件夹不存在,则创建它
516
+    # if not os.path.exists(export_folder):
517
+    #     os.makedirs(export_folder)
518 518
     try:
519
-        export_example_data(ui, dbpath, excelname_utf8, export_folder)
519
+        export_example_data(ui, dbpath, excelname_utf8, export_folder,file_name)
520 520
         QMessageBox.information(ui, '成功', f'示例文件已成功导出到 {export_folder}')
521 521
     except PermissionError as e:
522 522
         if e.errno == 13:

+ 121
- 18
Front/main.py Просмотреть файл

@@ -39,6 +39,7 @@ from Front.widgets import *
39 39
 # main.py
40 40
 from Front.back.Program_Run.utils import resource_path  # 从 utils.py 导入 resource_path
41 41
 import gc
42
+from pathlib import Path
42 43
 
43 44
 # IMPORT / GUI AND MODULES AND WIDGETS
44 45
 # ///////////////////////////////////////////////////////////////
@@ -371,6 +372,19 @@ class ElTree(QWidget):
371 372
             QMessageBox.critical(self, '错误', f'删除数据时出错: {str(e)}')
372 373
 
373 374
     def export_item(self):
375
+        file_path, ok = QFileDialog.getSaveFileName(
376
+            self,  # 父窗口
377
+            "保存文件",  # 对话框标题
378
+            "",  # 默认路径(刚才选择的文件夹)
379
+            "表格xlsx文件 (*.xlsx);;表格xls文件 (*.xls)",  # 文件过滤器
380
+        )
381
+        if ok and file_path:
382
+            # 将路径转换为 Path 对象
383
+            path = Path(file_path)
384
+            # 提取文件夹名
385
+            folder_name = path.parent
386
+            # 提取文件名
387
+            file_name = path.name
374 388
         # 获取当前选中的项目
375 389
         selected_items = widgets.allTreeWidget.selectedItems()
376 390
         if not selected_items:
@@ -399,14 +413,14 @@ class ElTree(QWidget):
399 413
 
400 414
         # 根据父节点名称确定导出操作
401 415
         if parent_name == '水准测段高差稳定计算':
402
-            GCExport.main_function_initial(self, tablename_utf8, dbpath)
403
-            GCExport.main_function_result(self, tablename_utf8, dbpath)
416
+            GCExport.main_function_initial(self, tablename_utf8, dbpath,folder_name,file_name)
417
+            GCExport.main_function_result(self, tablename_utf8, dbpath,folder_name,file_name)
404 418
         elif parent_name == '控制网复测平面基准计算':
405
-            GSExport.main_function(self, dbpath, tablename)
406
-            GSExport.main_function_initial(self, dbpath, tablename_utf8)
419
+            GSExport.main_function(self, dbpath, tablename,folder_name,file_name)
420
+            GSExport.main_function_initial(self, dbpath, tablename_utf8,folder_name,file_name)
407 421
         elif parent_name == '平面控制网稳定性计算':
408
-            WDExport.main_function(self, dbpath, tablename)
409
-            WDExport.main_function_initial(self, dbpath, tablename_utf8)
422
+            WDExport.main_function(self, dbpath, tablename,folder_name,file_name)
423
+            WDExport.main_function_initial(self, dbpath, tablename_utf8,folder_name,file_name)
410 424
         else:
411 425
             QMessageBox.warning(self, '警告', '未知的父节点')
412 426
             return
@@ -639,6 +653,20 @@ class ElTree1(QWidget):
639 653
             QMessageBox.critical(self, '错误', f'删除数据时出错: {str(e)}')
640 654
 
641 655
     def export_item(self):
656
+        #对话框
657
+        file_path, ok = QFileDialog.getSaveFileName(
658
+            self,  # 父窗口
659
+            "保存文件",  # 对话框标题
660
+            "",  # 默认路径(刚才选择的文件夹)
661
+            "表格xlsx文件 (*.xlsx);;表格xls文件 (*.xls)",  # 文件过滤器
662
+        )
663
+        if ok and file_path:
664
+            # 将路径转换为 Path 对象
665
+            path = Path(file_path)
666
+            # 提取文件夹名
667
+            folder_name = path.parent
668
+            # 提取文件名
669
+            file_name = path.name
642 670
         # 获取当前选中的项目
643 671
         selected_items = widgets.qureyTreeWidget.selectedItems()
644 672
         if not selected_items:
@@ -667,14 +695,14 @@ class ElTree1(QWidget):
667 695
 
668 696
         # 根据父节点名称确定导出操作
669 697
         if parent_name == '水准测段高差稳定计算':
670
-            GCExport.main_function_initial(self, tablename_utf8, dbpath)  # 导出初始文件
671
-            GCExport.main_function_result(self, tablename_utf8, dbpath)  # 导出结果文件
698
+            GCExport.main_function_initial(self, tablename_utf8, dbpath,folder_name,file_name)  # 导出初始文件
699
+            GCExport.main_function_result(self, tablename_utf8, dbpath,folder_name,file_name)  # 导出结果文件
672 700
         elif parent_name == '控制网复测平面基准计算':
673
-            GSExport.main_function(self, dbpath, tablename)  # 导出结果文件
674
-            GSExport.main_function_initial(self, dbpath, tablename_utf8)  # 导出初始文件
701
+            GSExport.main_function(self, dbpath, tablename,folder_name,file_name)  # 导出结果文件
702
+            GSExport.main_function_initial(self, dbpath, tablename_utf8,folder_name,file_name)  # 导出初始文件
675 703
         elif parent_name == '平面控制网稳定性计算':
676
-            WDExport.main_function(self, dbpath, tablename)  # 导出结果文件
677
-            WDExport.main_function_initial(self, dbpath, tablename_utf8)  # 导出初始文件
704
+            WDExport.main_function(self, dbpath, tablename,folder_name,file_name)  # 导出结果文件
705
+            WDExport.main_function_initial(self, dbpath, tablename_utf8,folder_name,file_name)  # 导出初始文件
678 706
         else:
679 707
             QMessageBox.warning(self, '警告', '未知的父节点')
680 708
             return
@@ -968,10 +996,31 @@ class MainWindow(QMainWindow):
968 996
 
969 997
     # 定义导出数据库的槽函数
970 998
     def on_export_2_clicked(self):
971
-        if self.file_path:
972
-            UIFunctions.export_database_to_excel(self, self.file_path)
999
+        #不清楚位置的按钮(?)
1000
+        #方法还是那个方法
1001
+        # 弹出输入对话框,让用户输入文件名
1002
+        file_path, ok = QFileDialog.getSaveFileName(
1003
+            self,  # 父窗口
1004
+            "保存文件",  # 对话框标题
1005
+            "",  # 默认路径(刚才选择的文件夹)
1006
+            "表格xlsx文件 (*.xlsx);;表格xls文件 (*.xls)",  # 文件过滤器
1007
+        )
1008
+        if ok and file_path:
1009
+            # 将路径转换为 Path 对象
1010
+            path = Path(file_path)
1011
+            # 提取文件夹名
1012
+            folder_name = path.parent
1013
+            # 提取文件名
1014
+            file_name = path.name
1015
+            # 在这里处理文件保存逻辑
1016
+            if self.file_path:
1017
+                UIFunctions.export_database_to_excel(self, self.file_path, folder_name, file_name)
1018
+                QMessageBox.information(self, "保存成功", f"文件将保存到: {file_name}")
1019
+            else:
1020
+                QMessageBox.warning(self, '警告', '请先选择项目并上传文件')
973 1021
         else:
974
-            QMessageBox.warning(self, '警告', '请先选择项目并上传文件')
1022
+            QMessageBox.warning(self, "取消", "用户取消了保存操作")
1023
+
975 1024
 
976 1025
     # RESIZE EVENTS
977 1026
     # ///////////////////////////////////////////////////////////////
@@ -1358,7 +1407,25 @@ class MainWindow(QMainWindow):
1358 1407
         db_path = resource_path(os.path.join('SQL', 'DataBase.db'))
1359 1408
         file_name = "平面控制网稳定性计算示例表.xlsx"
1360 1409
         excelname_utf8 = file_name.encode('utf-8')
1361
-        Back.WD.WDExport.main_function_example(self, db_path, excelname_utf8)
1410
+        file_path, ok = QFileDialog.getSaveFileName(
1411
+            self,  # 父窗口
1412
+            "保存文件",  # 对话框标题
1413
+            "",  # 默认路径(刚才选择的文件夹)
1414
+            "表格xlsx文件 (*.xlsx);;表格xls文件 (*.xls)",  # 文件过滤器
1415
+        )
1416
+        if ok and file_path:
1417
+            # 将路径转换为 Path 对象
1418
+            path = Path(file_path)
1419
+            # 提取文件夹名
1420
+            folder_name = path.parent
1421
+            # 提取文件名
1422
+            file_name = path.name
1423
+            # 在这里处理文件保存逻辑
1424
+            Back.WD.WDExport.main_function_example(self, db_path, excelname_utf8,folder_name,file_name)
1425
+            QMessageBox.information(self, "保存成功", f"文件将保存到: {file_name}")
1426
+        else:
1427
+            QMessageBox.warning(self, "取消", "用户取消了保存操作")
1428
+
1362 1429
 
1363 1430
     def on_download_2_clicked(self):
1364 1431
         # 获取应用的安装目录
@@ -1367,7 +1434,25 @@ class MainWindow(QMainWindow):
1367 1434
         db_path = resource_path(os.path.join('SQL', 'DataBase.db'))
1368 1435
         file_name = "控制网复测平面基准计算示例表.xlsx"
1369 1436
         excelname_utf8 = file_name.encode('utf-8')
1370
-        Back.GS.GSExport.main_function_example(self, db_path, excelname_utf8)
1437
+        file_path, ok = QFileDialog.getSaveFileName(
1438
+            self,  # 父窗口
1439
+            "保存文件",  # 对话框标题
1440
+            "",  # 默认路径(刚才选择的文件夹)
1441
+            "表格xlsx文件 (*.xlsx);;表格xls文件 (*.xls)",  # 文件过滤器
1442
+        )
1443
+        if ok and file_path:
1444
+            # 将路径转换为 Path 对象
1445
+            path = Path(file_path)
1446
+            # 提取文件夹名
1447
+            folder_name = path.parent
1448
+            # 提取文件名
1449
+            file_name = path.name
1450
+            # 在这里处理文件保存逻辑
1451
+            Back.GS.GSExport.main_function_example(self, db_path, excelname_utf8,folder_name,file_name)
1452
+            QMessageBox.information(self, "保存成功", f"文件将保存到: {file_name}")
1453
+        else:
1454
+            QMessageBox.warning(self, "取消", "用户取消了保存操作")
1455
+
1371 1456
 
1372 1457
     def on_download_3_clicked(self):
1373 1458
         # 获取应用的安装目录
@@ -1376,8 +1461,26 @@ class MainWindow(QMainWindow):
1376 1461
         db_path = resource_path(os.path.join('SQL', 'DataBase.db'))
1377 1462
         file_name = "水准测段高差稳定计算示例文件.xlsx"
1378 1463
         utf_en = file_name.encode('utf-8')
1464
+        file_path, ok = QFileDialog.getSaveFileName(
1465
+            self,  # 父窗口
1466
+            "保存文件",  # 对话框标题
1467
+            "",  # 默认路径(刚才选择的文件夹)
1468
+            "表格xlsx文件 (*.xlsx);;表格xls文件 (*.xls)",  # 文件过滤器
1469
+        )
1470
+        if ok and file_path:
1471
+            # 将路径转换为 Path 对象
1472
+            path = Path(file_path)
1473
+            # 提取文件夹名
1474
+            folder_name = path.parent
1475
+            # 提取文件名
1476
+            file_name = path.name
1477
+            # 在这里处理文件保存逻辑
1478
+            Back.GC.GCExport.main_function_example(self, utf_en, db_path,folder_name,file_name)
1479
+            QMessageBox.information(self, "保存成功", f"文件将保存到: {file_name}")
1480
+        else:
1481
+            QMessageBox.warning(self, "取消", "用户取消了保存操作")
1379 1482
         # 调用main_function_example函数
1380
-        Back.GC.GCExport.main_function_example(self, utf_en, db_path)
1483
+
1381 1484
 
1382 1485
 
1383 1486
 def main():

+ 4
- 4
Front/modules/ui_functions.py Просмотреть файл

@@ -353,7 +353,7 @@ class UIFunctions(MainWindow):
353 353
             WDshow.main_function(self.ui, db_path, utf_en)
354 354
 
355 355
     # 文件导出的方法
356
-    def export_database_to_excel(self, file_path):
356
+    def export_database_to_excel(self, file_path,folder_name,file_name):
357 357
         current_text = self.ui.comboBox_2.currentText()
358 358
         # # 获取当前脚本所在的目录
359 359
         # current_dir = os.getcwd()
@@ -367,11 +367,11 @@ class UIFunctions(MainWindow):
367 367
         excelname = os.path.basename(file_path)  # 文件名
368 368
         utf_en = excelname.encode('utf-8')  # 转换文件名为utf-8编码形式
369 369
         if current_text == "水准测段高差稳定计算":
370
-            GCExport.main_function_result(self, utf_en, db_path)
370
+            GCExport.main_function_result(self, utf_en, db_path,folder_name,file_name)
371 371
         elif current_text == "控制网复测平面基准计算":
372
-            GSExport.main_function(self, db_path, excelname)
372
+            GSExport.main_function(self, db_path, excelname,folder_name,file_name)
373 373
         elif current_text == "平面控制网稳定性计算":
374
-            WDExport.main_function(self, db_path, excelname)
374
+            WDExport.main_function(self, db_path, excelname,folder_name,file_name)
375 375
         else:
376 376
             QMessageBox.warning(self, '警告', '请选择有效的计算类型')
377 377
 

Загрузка…
Отмена
Сохранить