@Atroshchenko-Dima
Python, postgres

Как реализовать скачивание таблицы в формате xlsx передавая массив данных на сервер?

На данный момент при нажатии на кнопку скачать, скачивается 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"))
  • Вопрос задан
  • 69 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы