Browse Source

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

rmy 3 months ago
parent
commit
3ec4aee681
5 changed files with 232 additions and 129 deletions
  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 View File

10
 from openpyxl import Workbook
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
     try:
14
     try:
15
         # 解码 utf_en
15
         # 解码 utf_en
16
         decoded_utf_en = utf_en.decode('utf-8') if isinstance(utf_en, bytes) else utf_en
16
         decoded_utf_en = utf_en.decode('utf-8') if isinstance(utf_en, bytes) else utf_en
134
             # 获取当前时间并格式化为字符串,例如:20231010_143000
134
             # 获取当前时间并格式化为字符串,例如:20231010_143000
135
         timestamp = time.strftime("%Y%m%d", time.localtime())
135
         timestamp = time.strftime("%Y%m%d", time.localtime())
136
         # 保存 Excel 文件
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
         wb.save(excel_filepath)
139
         wb.save(excel_filepath)
140
 
140
 
141
         QMessageBox.information(ui, '成功', f'成果文件已成功导出到 {export_folder}')
141
         QMessageBox.information(ui, '成功', f'成果文件已成功导出到 {export_folder}')
146
         conn.close()
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
     try:
150
     try:
151
         # 解码 utf_en
151
         # 解码 utf_en
152
         decoded_utf_en = utf_en.decode('utf-8') if isinstance(utf_en, bytes) else utf_en
152
         decoded_utf_en = utf_en.decode('utf-8') if isinstance(utf_en, bytes) else utf_en
259
         # 获取当前时间并格式化为字符串,例如:20231010_143000
259
         # 获取当前时间并格式化为字符串,例如:20231010_143000
260
         timestamp = time.strftime("%Y%m%d", time.localtime())
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
         # 保存 Excel 文件
265
         # 保存 Excel 文件
266
         wb.save(excel_filepath)
266
         wb.save(excel_filepath)
274
             print(e)
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
     try:
278
     try:
279
         # 解码 utf_en
279
         # 解码 utf_en
280
         decoded_utf_en = utf_en.decode('utf-8') if isinstance(utf_en, bytes) else utf_en
280
         decoded_utf_en = utf_en.decode('utf-8') if isinstance(utf_en, bytes) else utf_en
386
         ws.column_dimensions['J'].width = 11.5
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
         # 保存 Excel 文件
392
         # 保存 Excel 文件
393
         wb.save(excel_filepath)
393
         wb.save(excel_filepath)
419
 
419
 
420
     return utf_en
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
     # 处理 utf_en
450
     # 处理 utf_en
451
     utf_en = process_utf_en(utf_en)
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 View File

63
     return list2
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
     utf_en = filename.encode('utf-8')
67
     utf_en = filename.encode('utf-8')
68
     # 新建对应的excel
68
     # 新建对应的excel
69
     wb = openpyxl.Workbook()
69
     wb = openpyxl.Workbook()
229
     # 获取当前时间并格式化为字符串,例如:20231010_143000
229
     # 获取当前时间并格式化为字符串,例如:20231010_143000
230
     timestamp = time.strftime("%Y%m%d", time.localtime())
230
     timestamp = time.strftime("%Y%m%d", time.localtime())
231
     # 保存 Excel 文件
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
     wb.save(excel_filepath)
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
     # 获取当前时间并格式化为字符串,例如:20231010_143000
238
     # 获取当前时间并格式化为字符串,例如:20231010_143000
239
     timestamp = time.strftime("%Y%m%d", time.localtime())
239
     timestamp = time.strftime("%Y%m%d", time.localtime())
240
     # 解码 utf_en
240
     # 解码 utf_en
241
     decoded_utf_en = utf_en.decode('utf-8') if isinstance(utf_en, bytes) else utf_en
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
     wb = openpyxl.Workbook()
246
     wb = openpyxl.Workbook()
359
     # 保存工作簿
359
     # 保存工作簿
360
     wb.save(excel_path)
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
     # 解码 utf_en
363
     # 解码 utf_en
364
     decoded_utf_en = utf_en.decode('utf-8') if isinstance(utf_en, bytes) else utf_en
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
     wb = openpyxl.Workbook()
369
     wb = openpyxl.Workbook()
483
     wb.save(excel_path)
483
     wb.save(excel_path)
484
 
484
 
485
 # 主函数 写入excel文件
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
     try:
494
     try:
495
-        openpyxl_write(export_folder, dbpath, excelname)
495
+        openpyxl_write(export_folder, dbpath, excelname,file_name)
496
         QMessageBox.information(ui, '成功', f'成果文件已成功导出到 {export_folder}')
496
         QMessageBox.information(ui, '成功', f'成果文件已成功导出到 {export_folder}')
497
     except Exception as e:
497
     except Exception as e:
498
         QMessageBox.critical(ui, '错误', f'导出过程中发生错误: {str(e)}')
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
     try:
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
         QMessageBox.information(ui, '成功', f'初始文件已成功导出到 {export_folder}')
511
         QMessageBox.information(ui, '成功', f'初始文件已成功导出到 {export_folder}')
512
     except PermissionError as e:
512
     except PermissionError as e:
513
         if e.errno == 13:
513
         if e.errno == 13:
518
         QMessageBox.critical(ui, '错误', f'导出过程中发生错误: {str(e)}')
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
     try:
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
         QMessageBox.information(ui, '成功', f'示例文件已成功导出到 {export_folder}')
531
         QMessageBox.information(ui, '成功', f'示例文件已成功导出到 {export_folder}')
532
     except PermissionError as e:
532
     except PermissionError as e:
533
         if e.errno == 13:
533
         if e.errno == 13:

+ 36
- 36
Front/back/WD/WDExport.py View File

47
     return list2
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
     utf_en = filename.encode('utf-8')
51
     utf_en = filename.encode('utf-8')
52
     # 新建对应的excel
52
     # 新建对应的excel
53
     wb = openpyxl.Workbook()
53
     wb = openpyxl.Workbook()
190
     # 获取当前时间并格式化为字符串,例如:20231010_143000
190
     # 获取当前时间并格式化为字符串,例如:20231010_143000
191
     timestamp = time.strftime("%Y%m%d", time.localtime())
191
     timestamp = time.strftime("%Y%m%d", time.localtime())
192
     # 保存 Excel 文件
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
     wb.save(excel_filepath)
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
     # 获取当前时间并格式化为字符串,例如:20231010_143000
199
     # 获取当前时间并格式化为字符串,例如:20231010_143000
200
     timestamp = time.strftime("%Y%m%d", time.localtime())
200
     timestamp = time.strftime("%Y%m%d", time.localtime())
201
     # 解码文件名并去掉后缀名
201
     # 解码文件名并去掉后缀名
202
     decoded_utf_en = utf_en.decode('utf-8') if isinstance(utf_en, bytes) else utf_en
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
     wb = openpyxl.Workbook()
207
     wb = openpyxl.Workbook()
335
     wb.save(excel_path)
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
     decoded_utf_en = utf_en.decode('utf-8') if isinstance(utf_en, bytes) else utf_en
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
     wb = openpyxl.Workbook()
345
     wb = openpyxl.Workbook()
473
     wb.save(excel_path)
473
     wb.save(excel_path)
474
 
474
 
475
 # 主函数 写入excel文件
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
     try:
484
     try:
485
-        openpyxl_write(export_folder, dbpath, excelname)
485
+        openpyxl_write(export_folder, dbpath, excelname,file_name)
486
         QMessageBox.information(ui, '成功', f'成果文件已成功导出到 {export_folder}')
486
         QMessageBox.information(ui, '成功', f'成果文件已成功导出到 {export_folder}')
487
     except Exception as e:
487
     except Exception as e:
488
         QMessageBox.critical(ui, '错误', f'导出过程中发生错误: {str(e)}')
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
     try:
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
         QMessageBox.information(ui, '成功', f'初始文件已成功导出到 {export_folder}')
501
         QMessageBox.information(ui, '成功', f'初始文件已成功导出到 {export_folder}')
502
     except PermissionError as e:
502
     except PermissionError as e:
503
         if e.errno == 13:
503
         if e.errno == 13:
507
     except Exception as e:
507
     except Exception as e:
508
         QMessageBox.critical(ui, '错误', f'导出过程中发生错误: {str(e)}')
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
     try:
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
         QMessageBox.information(ui, '成功', f'示例文件已成功导出到 {export_folder}')
520
         QMessageBox.information(ui, '成功', f'示例文件已成功导出到 {export_folder}')
521
     except PermissionError as e:
521
     except PermissionError as e:
522
         if e.errno == 13:
522
         if e.errno == 13:

+ 121
- 18
Front/main.py View File

39
 # main.py
39
 # main.py
40
 from Front.back.Program_Run.utils import resource_path  # 从 utils.py 导入 resource_path
40
 from Front.back.Program_Run.utils import resource_path  # 从 utils.py 导入 resource_path
41
 import gc
41
 import gc
42
+from pathlib import Path
42
 
43
 
43
 # IMPORT / GUI AND MODULES AND WIDGETS
44
 # IMPORT / GUI AND MODULES AND WIDGETS
44
 # ///////////////////////////////////////////////////////////////
45
 # ///////////////////////////////////////////////////////////////
371
             QMessageBox.critical(self, '错误', f'删除数据时出错: {str(e)}')
372
             QMessageBox.critical(self, '错误', f'删除数据时出错: {str(e)}')
372
 
373
 
373
     def export_item(self):
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
         selected_items = widgets.allTreeWidget.selectedItems()
389
         selected_items = widgets.allTreeWidget.selectedItems()
376
         if not selected_items:
390
         if not selected_items:
399
 
413
 
400
         # 根据父节点名称确定导出操作
414
         # 根据父节点名称确定导出操作
401
         if parent_name == '水准测段高差稳定计算':
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
         elif parent_name == '控制网复测平面基准计算':
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
         elif parent_name == '平面控制网稳定性计算':
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
         else:
424
         else:
411
             QMessageBox.warning(self, '警告', '未知的父节点')
425
             QMessageBox.warning(self, '警告', '未知的父节点')
412
             return
426
             return
639
             QMessageBox.critical(self, '错误', f'删除数据时出错: {str(e)}')
653
             QMessageBox.critical(self, '错误', f'删除数据时出错: {str(e)}')
640
 
654
 
641
     def export_item(self):
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
         selected_items = widgets.qureyTreeWidget.selectedItems()
671
         selected_items = widgets.qureyTreeWidget.selectedItems()
644
         if not selected_items:
672
         if not selected_items:
667
 
695
 
668
         # 根据父节点名称确定导出操作
696
         # 根据父节点名称确定导出操作
669
         if parent_name == '水准测段高差稳定计算':
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
         elif parent_name == '控制网复测平面基准计算':
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
         elif parent_name == '平面控制网稳定性计算':
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
         else:
706
         else:
679
             QMessageBox.warning(self, '警告', '未知的父节点')
707
             QMessageBox.warning(self, '警告', '未知的父节点')
680
             return
708
             return
968
 
996
 
969
     # 定义导出数据库的槽函数
997
     # 定义导出数据库的槽函数
970
     def on_export_2_clicked(self):
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
         else:
1021
         else:
974
-            QMessageBox.warning(self, '警告', '请先选择项目并上传文件')
1022
+            QMessageBox.warning(self, "取消", "用户取消了保存操作")
1023
+
975
 
1024
 
976
     # RESIZE EVENTS
1025
     # RESIZE EVENTS
977
     # ///////////////////////////////////////////////////////////////
1026
     # ///////////////////////////////////////////////////////////////
1358
         db_path = resource_path(os.path.join('SQL', 'DataBase.db'))
1407
         db_path = resource_path(os.path.join('SQL', 'DataBase.db'))
1359
         file_name = "平面控制网稳定性计算示例表.xlsx"
1408
         file_name = "平面控制网稳定性计算示例表.xlsx"
1360
         excelname_utf8 = file_name.encode('utf-8')
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
     def on_download_2_clicked(self):
1430
     def on_download_2_clicked(self):
1364
         # 获取应用的安装目录
1431
         # 获取应用的安装目录
1367
         db_path = resource_path(os.path.join('SQL', 'DataBase.db'))
1434
         db_path = resource_path(os.path.join('SQL', 'DataBase.db'))
1368
         file_name = "控制网复测平面基准计算示例表.xlsx"
1435
         file_name = "控制网复测平面基准计算示例表.xlsx"
1369
         excelname_utf8 = file_name.encode('utf-8')
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
     def on_download_3_clicked(self):
1457
     def on_download_3_clicked(self):
1373
         # 获取应用的安装目录
1458
         # 获取应用的安装目录
1376
         db_path = resource_path(os.path.join('SQL', 'DataBase.db'))
1461
         db_path = resource_path(os.path.join('SQL', 'DataBase.db'))
1377
         file_name = "水准测段高差稳定计算示例文件.xlsx"
1462
         file_name = "水准测段高差稳定计算示例文件.xlsx"
1378
         utf_en = file_name.encode('utf-8')
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
         # 调用main_function_example函数
1482
         # 调用main_function_example函数
1380
-        Back.GC.GCExport.main_function_example(self, utf_en, db_path)
1483
+
1381
 
1484
 
1382
 
1485
 
1383
 def main():
1486
 def main():

+ 4
- 4
Front/modules/ui_functions.py View File

353
             WDshow.main_function(self.ui, db_path, utf_en)
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
         current_text = self.ui.comboBox_2.currentText()
357
         current_text = self.ui.comboBox_2.currentText()
358
         # # 获取当前脚本所在的目录
358
         # # 获取当前脚本所在的目录
359
         # current_dir = os.getcwd()
359
         # current_dir = os.getcwd()
367
         excelname = os.path.basename(file_path)  # 文件名
367
         excelname = os.path.basename(file_path)  # 文件名
368
         utf_en = excelname.encode('utf-8')  # 转换文件名为utf-8编码形式
368
         utf_en = excelname.encode('utf-8')  # 转换文件名为utf-8编码形式
369
         if current_text == "水准测段高差稳定计算":
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
         elif current_text == "控制网复测平面基准计算":
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
         elif current_text == "平面控制网稳定性计算":
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
         else:
375
         else:
376
             QMessageBox.warning(self, '警告', '请选择有效的计算类型')
376
             QMessageBox.warning(self, '警告', '请选择有效的计算类型')
377
 
377
 

Loading…
Cancel
Save