На данный момент при нажатии на кнопку скачать, скачивается excel файл без данных, только с заголовками таблицы.
На сайте реализован select multiple, сам множественный выбор работает, пользователь ставит галочки и выгрузка из базы данных совершается корректно.
Раньше был обычный список, без мультивыбора, скачивание работало корректно, так что думаю проблема в выделенных жирным фрагментах или в самой ссылке. Подскажите, пожалуйста, что нужно исправить.
ссылка
<a href = "{{url_for('download', year = request.form.getlist('year'), station=request.form.getlist('station'), indicators=request.form.getlist('indicators'))}}">Скачать</a>
app.py
@app.route("/download", methods=["GET","POST"])
def download():
if request.method == "GET":
# Получаем начальную и конечную даты из скрытых полей на поле
<b> year = request.form.getlist("year")
year = [int(i) for i in request.form.getlist("year") if i.isdigit()]
station = request.form.getlist("station")
station = [str(i) for i in request.form.getlist("station")]
indicators = request.form.getlist("indicators")
indicators = [str(i) for i in request.form.getlist("indicators")]</b>
# Запрос к БД с использованием параметров дат
cur = conn.cursor()
cur.execute("SELECT * FROM fact_indicators WHERE fact_year = ANY(%s) AND fact_indicators = ANY(%s) AND fact_station_name = ANY(%s);",(year, indicators, station))
rows = cur.fetchall()
cur.close
filename = "fact_T2.xlsx"
filepath = os.path.join(os.path.dirname(__file__), filename)
# создаем новую книгу excel
workbook = openpyxl.Workbook()
# Получаем активный лист
worksheet = workbook.active
# Заполняем таблицу данными из запроса к базе данных
worksheet.append(["Год", "Станция","Показатели", "Е/И", "Январь", "Февраль", "Март", "1 кв", "Апрель", "Май", "Июнь", "2 кв", "Июль", "Август","Сентябрь", "3 кв", "Октябрь", "Ноябрь","Декабрь","4 кв","Год"])
for row in rows:
worksheet.append(list(row))
# Сохраняем результат в файл
workbook.save(filepath)
# Возвращаем файл на скачивание
return send_from_directory(os.path.dirname(__file__), path=filename, as_attachment=True)
else:
return redirect(url_for("index"))