|
@@ -0,0 +1,57 @@
|
|
|
+import xlrd
|
|
|
+import datetime
|
|
|
+import uuid
|
|
|
+import os
|
|
|
+
|
|
|
+
|
|
|
+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 processxls(FILE):
|
|
|
+ BASE_DIR = os.path.dirname(os.path.dirname(__file__))
|
|
|
+ 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'
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ rets=[]
|
|
|
+ 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=process_cell(table,i+1,3)
|
|
|
+ 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
|
|
|
+ #raise "Error xls!"
|
|
|
+ rets.append((sid,name,sex,password,cid,birthday))
|
|
|
+ return rets
|
|
|
+
|