首页 > 解决方案 > 如何在python flask form post api中加载和读取excel文件

问题描述

嗨,我想上传一个前端的 excel 文件表单,在后端我想读取该 Excel 文件的所有内容并将其存储在我的数据库中

@app.route('/getfile', methods=['POST'])
def getfile():
try:
   file = request.files['file']
   foo=file.filename
   dframe = pd.read_excel(foo)
   return dframe


except Exception as ex:
      return ex   

我正在获取文件名,并且从 panda 我想读取该 excel 文件数据,但它显示不存在这样的目录

from flask import Flask, request, jsonify
import flask_excel as excel
app = Flask(__name__)
import json
import xlrd
import os 
import pandas as pd
from collections import OrderedDict
from pathlib import Path
from flask_cors import CORS,cross_origin
from json import loads
import pandas as pd

wsgi_app = app.wsgi_app
excel.init_excel(app)

代码 1

@app.route("/upload", methods=['GET', 'POST'])
def upload_file():
if request.method == 'POST':
    foo = request.get_array(field_name='file')
    # data = json.dumps(foo, )
    # for i in data[1:]:

     return jsonify({"result":foo })

#代码 2

@app.route('/getfile', methods=['POST'])
def getfile():
try:
   file = request.files['file']
   foo=file.filename
   dframe = pd.read_excel(foo)
   return dframe


except Exception as ex:
      return ex   

第一个代码给我 404 异常和第二个代码给我“没有这样的目录退出”任何人都可以帮助我阅读 excel 文件的内容

标签: pythonexcelflaskjinja2

解决方案


from flask import Flask, request, jsonify
from tablib import Dataset


app = Flask(__name__)

@app.route('/upload', methods=['POST'])
def upload_file():
    # I used form data type which means there is a
    # "Content-Type: application/x-www-form-urlencoded"
    # header in my request
    raw_data = request.files['myfile'].read()  # In form data, I used "myfile" as key.
    dataset = Dataset().load(raw_data)
    return jsonify(dataset.export('json'))


if __name__ == '__main__':
    app.run(debug=True)

这个小片段工作得很好。您无需使用庞大的数据分析库将某些内容导入数据库。但是如果你坚持使用 pandas,你的问题需要另一个答案。

在做任何其他事情之前查看文档:

http://flask.pocoo.org/docs/1.0/patterns/fileuploads/

http://docs.python-tablib.org/en/master/tutorial/#importing-data


推荐阅读