
Ich arbeite an einer Flask-Webanwendung, in der ich eine Tabelle mit NLP-Analyseergebnissen anzeigen und dem Benutzer ermöglichen möchte, die Inhalte der Tabelle zu bearbeiten.
Nachdem der Benutzer die Tabelle bearbeitet hat, möchte ich die Änderungen im Backend speichern und bei Bedarf als Excel-Datei herunterladen.
Bisher habe ich eine Tabelle mit den NLP-Ergebnissen angezeigt, aber ich habe Schwierigkeiten, sie editierbar zu machen und die Änderungen im Backend zu speichern. Hier ist der relevante Code, den ich bisher habe:
Code: Alles auswählen
@views.route('/nlp-analysis', methods=['POST'])
@login_required
def nlp_analysis():
if request.method == 'POST':
# Verarbeiten der JSON-Anfrage
data = request.get_json()
#'file_path' aus der Session 'home()' Funktion holen
file_path = session.get('file_path')
print(f"Dateipfad: {file_path}")
file_extension = os.path.splitext(file_path)[-1].lower()
print(f"Dateierweiterung: {file_extension}")
# NLP-Analyse
search_column = 'Test'
analysis_results = analyze_esg(file_path, search_column)
df_nlp = pd.DataFrame(analysis_results)
session['nlp_output'] = df_nlp.to_json(orient='records')
return jsonify({"nlp_output": analysis_results})
@views.route('/nlp-analysis-output', methods=['GET','POST'])
@login_required
def show_nlp_output():
nlp_output = None
nlp_output_json = None
nlp_output_json = session.get('nlp_output')
user = current_user
df_nlp = pd.read_json(nlp_output_json, orient='records')
html_table_nlp = df_nlp.to_html(index=False,classes="table table-striped table-hover")
return render_template('nlp_analysis_output.html', nlp_output=html_table_nlp, user=user)
#DOWNLOAD NLP Ausgabe als Excel File
@views.route('/download-nlp-output-excel', methods=['GET'])
@login_required
def download_nlp_output_excel():
nlp_output = session.get('nlp_output')
# Daten in eine Excel-Datei konvertieren
output = io.BytesIO()
workbook = xlsxwriter.Workbook(output, {'in_memory': True})
worksheet = workbook.add_worksheet()
# Spaltenüberschriften hinzufügen
worksheet.write(0, 0, 'Keyword')
worksheet.write(0, 1, 'Category')
worksheet.write(0, 2, 'Count')
# Daten in die Excel-Datei schreiben
for index, row in enumerate(nlp_output, start=1):
keyword, category, count = row
worksheet.write(index, 0, keyword)
worksheet.write(index, 1, category)
worksheet.write(index, 2, count)
workbook.close()
# Excel-Datei als Antwort senden
output.seek(0)
response = make_response(output.read())
response.headers['Content-Disposition'] = 'attachment; filename=nlp_output.xlsx'
response.headers['Content-Type'] = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
return response
Code: Alles auswählen
{% extends "base.html" %}
{% block title %}NLP Ergebnis{% endblock %}
{% block content %}
<h1 align="center">NLP Analyseergebnisse</h1>
<pre>{{ nlp_output | safe}}</pre>
{% if nlp_output is defined and nlp_output is not none %}
{% if nlp_output.__class__.__name__ == 'DataFrame' %}
<p>Die Variable nlp_output ist ein DataFrame-Objekt</p>
{% else %}
<p>Die Variable nlp_output hat den Typ {{ nlp_output.__class__.__name__ }}</p>
{% endif %}
{% else %}
<p>Die Variable nlp_output ist nicht definiert oder ist None</p>
{% endif %}
<style>
.back-button {
position: absolute;
top: 80px;
left: 10px;
}
</style>
<a href="/download-nlp-output-excel" class="btn btn-primary">Excel download</a>
<button class="back-button" onclick="location.href='/'">Zurück</button>
{% endblock %}
Könnte mir da jemand einen Ansatz geben oder eventuell weiterhelfen, ich blick da echt nicht mehr durch. Aktuell wird mir auf dem Dashboard "nlp_output" als Tabelle gezeigt.
Wenn möglich, würde ich auch gerne wissen, wie ich die geänderten Daten in eine Excel-Datei konvertieren und dem Benutzer zum Download anbieten kann.
Vielen Dank im Voraus!!!