xlspasswd.py 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. import xlrd,xlwt
  2. import datetime
  3. import uuid
  4. import os
  5. from django.conf import settings
  6. def process_cell(table,i,j):
  7. _temp=table.cell(i,j)
  8. if _temp.ctype==1:
  9. return _temp.value
  10. if _temp.ctype==2:
  11. return str(int(_temp.value))
  12. #raise "Error xls!"
  13. def randompass():
  14. return uuid.uuid4().get_bytes().encode("base64")[:10]
  15. def GeneratePasswdToXls(FILE):
  16. BASE_DIR = os.path.dirname(os.path.dirname(__file__))
  17. wrxlsname = 'pwdout-%s.xls' % str(uuid.uuid4())
  18. wrxlspath = os.path.join(settings.MEDIA_ROOT,'xls',wrxlsname )
  19. xlsname = os.path.join(BASE_DIR, 'uploads', '%s.xls' % str(uuid.uuid4()))
  20. destination = open(xlsname,'wb')
  21. for chunk in FILE.chunks():
  22. destination.write(chunk)
  23. destination.close()
  24. data = xlrd.open_workbook(xlsname)
  25. table = data.sheet_by_index(0)
  26. head = table.row_values(0)
  27. assert len(head)==6
  28. assert head[0].strip()==u'\u5b66\u53f7'
  29. assert head[1].strip()==u'\u59d3\u540d'
  30. assert head[2].strip()==u'\u6027\u522b'
  31. assert head[3].strip()==u'\u5bc6\u7801'
  32. assert head[4].strip()==u'\u5206\u7ec4\u53f7'
  33. assert head[5].strip()==u'\u751f\u65e5'
  34. rwb = xlwt.Workbook(encoding='utf-8')
  35. rsh = rwb.add_sheet('Sheet1')
  36. rsh.write(0,0,u'\u5b66\u53f7')
  37. rsh.write(0,1,u'\u59d3\u540d')
  38. rsh.write(0,2,u'\u6027\u522b')
  39. rsh.write(0,3,u'\u5bc6\u7801')
  40. rsh.write(0,4,u'\u5206\u7ec4\u53f7')
  41. rsh.write(0,5,u'\u751f\u65e5')
  42. for i in range(table.nrows-1):
  43. col = table.row_values(i+1)
  44. sid=str(int(col[0]))
  45. name=process_cell(table,i+1,1)
  46. sex=col[2]
  47. password=randompass()
  48. cid=str(int(col[4]))
  49. if table.cell(i+1,5).ctype==3:
  50. birthday = datetime.date(*xlrd.xldate_as_tuple(table.cell(i+1,5).value,data.datemode)[:3])
  51. else:
  52. try:
  53. birthday = datetime.datetime.strptime(process_cell(table,i+1,5), "%Y-%m-%d").date()
  54. except:
  55. try:
  56. birthday = datetime.datetime.strptime(process_cell(table,i+1,5), "%Y%m%d").date()
  57. except:
  58. pass
  59. rsh.write(i+1,0,sid)
  60. rsh.write(i+1,0,name)
  61. rsh.write(i+1,0,sex)
  62. rsh.write(i+1,0,password)
  63. rsh.write(i+1,0,cid)
  64. rsh.write(i+1,0,birthday)
  65. rwb.save(wrxlspath)
  66. return wrxlsname