import openpyxl
import time
def import_user(*_arg, **_kwarg):
try:
CONTENTS = request.files.get('content')
# 打開excel文件,獲取工作簿對象
#這裏我先把文件上傳,然後再獲取到url路徑
if CONTENTS:
folder_url = 'excel'
result = upload_files_by_folder_name(CONTENTS, folder_url)
if 'error' in result[0]:
print(result[0]['error'])
else:
url = result[0]['dirname'] + '/' + result[0]['filename']
else:
return 0
wb = openpyxl.load_workbook(url)
# 從表單中獲取單元格的內容
sheet = wb['數據錄入'] # 當前表單
error_elder = []
rows = int(sheet.max_row) + 1 #加1是因爲循環是因爲取不到rows,是小於,不包含rows
#從第二行開始遍歷,第一行是標題
for i in range(2, rows):
name = sheet.cell(i, 1).value #姓名
age = sheet.cell(i, 2).value # 年齡
if name == '' or name== None:
continue
#此處開始就是插入數據庫的操作
#我這裏忽略了
return '1'
except Exception as exc:
ex_str = traceback.format_exc()
logger.error('error', exc_info=True)
resp = make_response(render_template('error.html', errormsg=exc, hot_line=hot_line,copy_right=copy_right))
return resp
def upload_files_by_folder_name(file_obj, folder_url):
"""
圖片上傳(不支持多圖)
:param file_obj:
:param folder_url:
:return:
"""
error = False
result = []
if file_obj and upload_allowed_file(file_obj.filename):
fname, fext = os.path.splitext(file_obj.filename)
rnd_name = '%s%s' % (gen_rnd_filename(), fext)
filepath = os.path.join(sqb.static_folder, 'upload/%s' % folder_url, rnd_name)
# 檢查路徑是否存在,不存在則創建
dirname = os.path.dirname(filepath)
if not os.path.exists(dirname):
try:
os.makedirs(dirname)
except:
error = 'ERROR_CREATE_DIR'
elif not os.access(dirname, os.W_OK):
error = 'ERROR_DIR_NOT_WRITEABLE'
if error:
result.append({'error': error})
else:
file_obj.save(filepath)
url = 'http://' + get_env('domain_name') + '/static/upload/%s/%s' % (folder_url, rnd_name)
result.append({"filename": rnd_name, "url": url,"dirname":dirname})
return result