日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

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

發(fā)布時(shí)間:2023/12/9 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 flask 对excel上传下载操作和文件处理 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

文件的下載

from flask import?send_from_directory

  • @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="請(qǐng)上傳excel文件">

    (2)后端獲取,保存

  • file = request.files.get('文件名') # 獲取文件

  • ?
  • filename = file.filename # 獲取文件名

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

  • (3)當(dāng)然 要對(duì)文件名,文件類型進(jìn)行判斷;存儲(chǔ)路徑也要進(jìn)行判斷

    可以使用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

  • 修改文件名

  • 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

  • 判斷儲(chǔ)存路徑

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

  • os.makedirs(FILE_DIR)

  • ?

    python的excel操作

    ?

    通過xlrd讀文件

    安裝:pip install xlrd

    通過 xlrd 打開excel,組裝數(shù)據(jù)

  • import xlrd

  • ?
  • def get_data(filename,method='r'):

  • '''

  • 改變數(shù)據(jù)結(jié)構(gòu) -- 方便前端顯示

  • :param filename: 文件名

  • :param method: 按照 列或者 行 返回?cái)?shù)據(jù)

  • '''

  • data = xlrd.open_workbook(filename)

  • table= data.sheets()[0]

  • nrows = table.nrows # 行數(shù)

  • ncols = table.ncols # 列數(shù)

  • if method == 'r':

  • row_list = [ table.row_values(i) for i in range(0,nrows)] # 所有行的數(shù)據(jù)

  • return row_list

  • elif method == 'c':

  • col_list = [ table.col_values(i) for i in range(0,ncols)] # 所有列的數(shù)據(jù)

  • 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 >

  • 通過xlwt寫文件

    總結(jié)

    以上是生活随笔為你收集整理的flask 对excel上传下载操作和文件处理的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。