format.py 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. #coding=utf-8
  2. import datetime
  3. from datetime import timedelta
  4. import traceback
  5. import tablib
  6. from openpyxl.utils.exceptions import InvalidFileException
  7. def strfdate(d):
  8. if d:
  9. return d.strftime('%Y-%m-%d')
  10. else:
  11. return ''
  12. def strftime(t):
  13. if t:
  14. return t.strftime('%Y-%m-%d %H:%M')
  15. else:
  16. return ''
  17. def strfsecond(second):
  18. sec = timedelta(seconds=second)
  19. d = datetime.datetime(1,1,1) + sec
  20. if d.hour > 0:
  21. if d.minute > 0:
  22. if d.second > 0:
  23. retval = "%d小时%d分钟%d秒" % (d.hour, d.minute, d.second)
  24. else:
  25. retval = "%d小时%d分钟" % (d.hour, d.minute)
  26. else:
  27. if d.second > 0:
  28. retval = "%d小时%d秒" % (d.hour, d.second)
  29. else:
  30. retval = "%d小时" % (d.hour)
  31. else:
  32. if d.minute > 0:
  33. if d.second > 0:
  34. retval = "%d分钟%d秒" % (d.minute, d.second)
  35. else:
  36. retval = "%d分钟" % (d.minute)
  37. else:
  38. retval = "%d秒" % (d.second)
  39. return retval
  40. def clean_datetime_range(data, fieldname):
  41. if data is not None and fieldname in data and data[fieldname] != '':
  42. t = data[fieldname].split(' - ')
  43. data = data.copy()
  44. data[fieldname+'_after'] = t[0]
  45. data[fieldname+'_before'] = t[1] + ' 23:59:59'
  46. data.pop(fieldname)
  47. return data
  48. class ExcelImporter():
  49. @staticmethod
  50. def validity(file):
  51. status = {
  52. 'success': True,
  53. 'errors': '',
  54. 'data': []
  55. }
  56. if file == None:
  57. status['success'] = False
  58. status['errors'] = u"请上传数据文件"
  59. else:
  60. try:
  61. data = tablib.import_set(file, format='xlsx').dict
  62. if len(data) == 0:
  63. status['success'] = False
  64. status['errors'] = u"上传的文件内没有发现数据"
  65. else:
  66. status['data'] = data
  67. except InvalidFileException:
  68. status['success'] = False
  69. status['errors'] = u"请上传<strong>xlsx</strong>格式的数据文件,老版本的xls格式不被支持!"
  70. except Exception as e:
  71. traceback.print_exc()
  72. status['success'] = False
  73. status['errors'] = u"导入失败"
  74. return status