flask 对excel上传下载操作和文件处理

本文介绍如何使用Python的Flask框架实现文件的上传和下载,详细讲解了前端HTML表单设置、后端文件处理流程,包括文件名修改、类型判断及路径管理,并演示了利用xlrd和xlwt库读写Excel文件的具体方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

文件的下载

from flask import send_from_directory


 
  1. @excel_bp.route('/get_attachment/<path:filename>')

  2. def get_attachment(filename):

  3. return send_from_directory(app.config['UPLOAD_FOLDER'],filename,as_attachment=True)

 

文件的上传

(1)html中

<input class="form-control" type="文件名" name="file" value="请上传excel文件">

(2)后端获取,保存


 
  1. file = request.files.get('文件名') # 获取文件

  2.  
  3. filename = file.filename # 获取文件名

  4.  
  5. file.save(os.path.join(FILE_DIR,filename)) # 保存文件

(3)当然 要对文件名,文件类型进行判断;存储路径也要进行判断

可以使用werkzeug中的 secure_filename

判断文件类型


 
  1. ALLOWED_EXTENSIONS = ['xls', 'xlsx']

  2.  
  3. def allowe_file(filename):

  4. '''

  5. 限制上传的文件格式

  6. :param filename:

  7. :return:

  8. '''

  9. return '.' in filename and filename.rsplit('.',1)[1] in ALLOWED_EXTENSIONS

修改文件名


 
  1. import os

  2. import datetime,uuid

  3.  
  4. def change_filename(filename):

  5. '''

  6. 修改文件名称

  7. :param filename:

  8. :return:

  9. '''

  10. fileinfo = os.path.splitext(filename)

  11. filename = datetime.datetime.now().strftime("%Y%m%d%H%M%S")+str(uuid.uuid4().hex)+fileinfo[-1]

  12. return filename

判断储存路径


 
  1. if not os.path.exists(FILE_DIR):

  2. os.makedirs(FILE_DIR)

 

python的excel操作

 

通过xlrd读文件

安装:pip install xlrd

通过 xlrd 打开excel,组装数据


 
  1. import xlrd

  2.  
  3. def get_data(filename,method='r'):

  4. '''

  5. 改变数据结构 -- 方便前端显示

  6. :param filename: 文件名

  7. :param method: 按照 列或者 行 返回数据

  8. '''

  9. data = xlrd.open_workbook(filename)

  10. table= data.sheets()[0]

  11. nrows = table.nrows # 行数

  12. ncols = table.ncols # 列数

  13. if method == 'r':

  14. row_list = [ table.row_values(i) for i in range(0,nrows)] # 所有行的数据

  15. return row_list

  16. elif method == 'c':

  17. col_list = [ table.col_values(i) for i in range(0,ncols)] # 所有列的数据

  18. return col_list

前端显示


 
  1. < thead >

  2. < tr >

  3.              {% for title in datalist[0] %}

  4.                 < th >{ title }< / th >

  5.              { % endfor % }

  6.          < /tr >

  7. < / thead >

  8. < tbody >

  9.          { % for row in datalist[1:] % }

  10.              < tr >

  11. { % for item in row % }

  12. <td>{ { item } }</td>

  13. { % endfor % }

  14. < /tr >

  15.         { % enfor % }

  16.      < / tbody >

  17. < / table >

通过xlwt写文件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值