(continued from previous pagehandle file upload filename request files['excel'filename extension filename split(")[- obtain the file extension and content pass tuple instead of file name content request files['excel'read(if sys version_info[ in order to support python have to decode bytes to str content content decode('utf- 'sheet pe get_sheet(file_type=extensionfile_content=contentthen use it as usual sheet name_columns_by_row( respond with json return jsonify({"result"sheet dict}return render_template('upload html' request files['excel'in line holds the file object line finds out the file extension line obtains sheet instance line uses the first row as data header line sends the json representation of the excel file back to client browser write to memory and respond to download data ] @app route('/download'def download()sheet pe sheet(dataoutput make_response(sheet csvoutput headers["content-disposition""attachmentfilename=export csvoutput headers["content-type""text/csvreturn output make_response is flask utility to make memory content as http response noteyou can find the corresponding source code at examples/memoryfile pyexcel data renderers there exist few data renderers for pyexcel data this will walk you through them view pyexcel data in ndjson and other formats with pyexcel-textyou can get pyexcel data in newline delimited jsonnormal json and other formats view the pyexcel data in browser you can use pyexcel-handsontable to render your data support the project