openpyxl从获取从前端上传的excel表后,生成新的excel表供前端下载
时间: 2024-02-02 20:04:25 浏览: 22
要从前端上传的Excel表中读取数据,然后生成新的Excel表供前端下载,可以使用以下代码:
```python
import io
from flask import Flask, request, send_file
from openpyxl import Workbook, load_workbook
app = Flask(__name__)
@app.route('/upload', methods=['POST'])
def upload_excel():
# 获取上传的Excel文件
file = request.files['file']
# 读取Excel文件中的数据
wb = load_workbook(file)
ws = wb.active
data = []
for row in ws.iter_rows(values_only=True):
data.append(row)
# 创建新的Excel文件
new_wb = Workbook()
new_ws = new_wb.active
# 向新的Excel文件中写入数据
for row in data:
new_ws.append(row)
# 将新的Excel文件保存到内存中
file_stream = io.BytesIO()
new_wb.save(file_stream)
file_stream.seek(0)
# 将新的Excel文件返回给前端进行下载
return send_file(
file_stream,
as_attachment=True,
attachment_filename='new.xlsx',
mimetype='application/vnd.ms-excel'
)
if __name__ == '__main__':
app.run()
```
这段代码使用 Flask 框架创建了一个 `/upload` 路由,当用户上传 Excel 文件时,会读取 Excel 文件中的数据,并创建一个新的 Excel 文件,将读取的数据写入到新文件中。然后,使用 Flask 的 `send_file` 函数将新的 Excel 文件发送给前端进行下载。