12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- import xlrd,xlwt
- import datetime
- import uuid
- import os
- from django.conf import settings
- def process_cell(table,i,j):
- _temp=table.cell(i,j)
- if _temp.ctype==1:
- return _temp.value
- if _temp.ctype==2:
- return str(int(_temp.value))
- #raise "Error xls!"
- def randompass():
- return uuid.uuid4().get_bytes().encode("base64")[:10]
- def GeneratePasswdToXls(FILE):
- BASE_DIR = os.path.dirname(os.path.dirname(__file__))
- wrxlsname = 'pwdout-%s.xls' % str(uuid.uuid4())
- wrxlspath = os.path.join(settings.MEDIA_ROOT,'xls',wrxlsname )
- xlsname = os.path.join(BASE_DIR, 'uploads', '%s.xls' % str(uuid.uuid4()))
- destination = open(xlsname,'wb')
- for chunk in FILE.chunks():
- destination.write(chunk)
- destination.close()
- data = xlrd.open_workbook(xlsname)
- table = data.sheet_by_index(0)
- head = table.row_values(0)
- assert len(head)==6
- assert head[0].strip()==u'\u5b66\u53f7'
- assert head[1].strip()==u'\u59d3\u540d'
- assert head[2].strip()==u'\u6027\u522b'
- assert head[3].strip()==u'\u5bc6\u7801'
- assert head[4].strip()==u'\u5206\u7ec4\u53f7'
- assert head[5].strip()==u'\u751f\u65e5'
- rwb = xlwt.Workbook(encoding='utf-8')
- rsh = rwb.add_sheet('Sheet1')
- rsh.write(0,0,u'\u5b66\u53f7')
- rsh.write(0,1,u'\u59d3\u540d')
- rsh.write(0,2,u'\u6027\u522b')
- rsh.write(0,3,u'\u5bc6\u7801')
- rsh.write(0,4,u'\u5206\u7ec4\u53f7')
- rsh.write(0,5,u'\u751f\u65e5')
- for i in range(table.nrows-1):
- col = table.row_values(i+1)
- sid=str(int(col[0]))
- name=process_cell(table,i+1,1)
- sex=col[2]
- password=randompass()
- cid=str(int(col[4]))
- if table.cell(i+1,5).ctype==3:
- birthday = datetime.date(*xlrd.xldate_as_tuple(table.cell(i+1,5).value,data.datemode)[:3])
- else:
- try:
- birthday = datetime.datetime.strptime(process_cell(table,i+1,5), "%Y-%m-%d").date()
- except:
- try:
- birthday = datetime.datetime.strptime(process_cell(table,i+1,5), "%Y%m%d").date()
- except:
- pass
-
- rsh.write(i+1,0,sid)
- rsh.write(i+1,0,name)
- rsh.write(i+1,0,sex)
- rsh.write(i+1,0,password)
- rsh.write(i+1,0,cid)
- rsh.write(i+1,0,birthday)
- rwb.save(wrxlspath)
- return wrxlsname
-
|