get_dic.py 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. #import msoffcrypto
  2. from .flightDB import flightDB
  3. from pypinyin import pinyin, Style
  4. #import io
  5. import openpyxl
  6. from unitls.LogerinTxt import app_logger
  7. import datetime
  8. def get_full_pinyin1(word, style=Style.NORMAL, separator=''):
  9. pinyin_list = pinyin(word, style=style)
  10. #使用列表推导式获取每个汉字的第一个拼音(不带声调),并使用 separator 连接
  11. full_pinyin = separator.join([''.join(syllable[0]) for syllable in pinyin_list])
  12. return full_pinyin
  13. def get_full_pinyin2(word, style=Style.NORMAL, separator=''):
  14. return ''.join([word[0][0] for word in pinyin(word, style=Style.NORMAL)])
  15. def get_dic(database:flightDB, fileName):
  16. try:
  17. fdb = database
  18. try:
  19. ''''
  20. decrypted_workbook = io.BytesIO()
  21. with open(fileName, 'rb') as file:
  22. office_file = msoffcrypto.OfficeFile(file)
  23. office_file.load_key(password='Scal_0177')
  24. office_file.decrypt(decrypted_workbook)
  25. workbook = openpyxl.load_workbook(filename=decrypted_workbook,data_only=True)
  26. '''
  27. workbook = openpyxl.load_workbook(filename=fileName) #非加密文档
  28. mysheet = workbook["主表"]
  29. myrows = list(mysheet.values)[1:]
  30. mytitle = list(mysheet.values)[0]
  31. for myrow in myrows:
  32. mydics0 = {}
  33. mydics1 = {}
  34. for i in range(0, (len(mytitle))):
  35. a = get_full_pinyin1(str(myrow[0])) + ":" + get_full_pinyin2(str(myrow[0]))
  36. mydics0[mytitle[i]] = "%s"%myrow[i]
  37. mydics0[mytitle[11]] = "%s" % a
  38. if i != 3 and i != 11:
  39. mydics1[mytitle[i]] = "'%s'" % myrow[i]
  40. elif i == 11:
  41. mydics1[mytitle[11]] = "'%s'" % a
  42. #a= fdb.getSingledata("工号",'workerinfo')
  43. if str(mydics0["工号"]) in str(fdb.getSingledata("工号",'workerinfo')):
  44. fdb.lazyUpdateItem('workerinfo',mydics1,"工号='%s'"%mydics0["工号"])
  45. else:
  46. fdb.lazyInsertData('workerinfo',mydics0)
  47. #print(1)
  48. fdb.FunctionCommit()
  49. return 1
  50. except Exception as e:
  51. print(datetime.datetime.now(),'[数据库操作]数据库获取错误!!检查通讯录文件!人员显示功能失效!!')
  52. app_logger.log_error(e)
  53. # 需要QT输出警告弹框信息
  54. fdb.FunctionCommit()
  55. return 0
  56. except Exception as e:
  57. app_logger.log_error(e)