For web developer¶
The following libraries are written to facilitate the daily import and export of excel data.
framework | plugin/middleware/extension |
---|---|
Flask | Flask-Excel |
Django | django-excel |
Pyramid | pyramid-excel |
And you may make your own by using pyexcel-webio
Read any supported excel and respond its content in json¶
You can find a real world example in examples/memoryfile/ directory: pyexcel_server.py. Here is the example snippet
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | def upload():
if request.method == 'POST' and 'excel' in request.files:
# handle file upload
filename = request.files['excel'].filename
extension = filename.split(".")[-1]
# Obtain the file extension and content
# pass a tuple instead of a file name
content = request.files['excel'].read()
if sys.version_info[0] > 2:
# in order to support python 3
# have to decode bytes to str
content = content.decode('utf-8')
sheet = pe.get_sheet(file_type=extension, file_content=content)
# then use it as usual
sheet.name_columns_by_row(0)
# respond with a json
return jsonify({"result": sheet.dict})
return render_template('upload.html')
|
request.files[‘excel’] in line 4 holds the file object. line 5 finds out the file extension. line 13 obtains a sheet instance. line 15 uses the first row as data header. line 17 sends the json representation of the excel file back to client browser.
Write to memory and respond to download¶
1 2 3 4 5 6 7 8 9 10 11 12 | data = [
[...],
...
]
@app.route('/download')
def download():
sheet = pe.Sheet(data)
output = make_response(sheet.csv)
output.headers["Content-Disposition"] = "attachment; filename=export.csv"
output.headers["Content-type"] = "text/csv"
return output
|
make_response is a Flask utility to make a memory content as http response.
Note
You can find the corresponding source code at examples/memoryfile