from flask import send_from_directory
html
@excel_bp.route('/get_attachment/<path:filename>') def get_attachment(filename): return send_from_directory(app.config['UPLOAD_FOLDER'],filename,as_attachment=True)
(1)html中前端
<input class="form-control" type="文件名" name="file" value="請上傳excel文件">
(2)後端獲取,保存python
file = request.files.get('文件名') # 獲取文件 filename = file.filename # 獲取文件名 file.save(os.path.join(FILE_DIR,filename)) # 保存文件
(3)固然 要對文件名,文件類型進行判斷;存儲路徑也要進行判斷flask
可使用werkzeug中的 secure_filename
後端
判斷文件類型數據結構
ALLOWED_EXTENSIONS = ['xls', 'xlsx'] def allowe_file(filename): ''' 限制上傳的文件格式 :param filename: :return: ''' return '.' in filename and filename.rsplit('.',1)[1] in ALLOWED_EXTENSIONS
修改文件名app
import os import datetime,uuid def change_filename(filename): ''' 修改文件名稱 :param filename: :return: ''' fileinfo = os.path.splitext(filename) filename = datetime.datetime.now().strftime("%Y%m%d%H%M%S")+str(uuid.uuid4().hex)+fileinfo[-1] return filename
判斷儲存路徑ui
if not os.path.exists(FILE_DIR): os.makedirs(FILE_DIR)
安裝:pip install xlrd
excel
經過 xlrd 打開excel,組裝數據code
import xlrd def get_data(filename,method='r'): ''' 改變數據結構 -- 方便前端顯示 :param filename: 文件名 :param method: 按照 列或者 行 返回數據 ''' data = xlrd.open_workbook(filename) table= data.sheets()[0] nrows = table.nrows # 行數 ncols = table.ncols # 列數 if method == 'r': row_list = [ table.row_values(i) for i in range(0,nrows)] # 全部行的數據 return row_list elif method == 'c': col_list = [ table.col_values(i) for i in range(0,ncols)] # 全部列的數據 return col_list
前端顯示
< thead > < tr > {% for title in datalist[0] %} < th >{ title }< / th > { % endfor % } < /tr > < / thead > < tbody > { % for row in datalist[1:] % } < tr > { % for item in row % } <td>{ { item } }</td> { % endfor % } < /tr > { % enfor % } < / tbody > < / table >