Export Button geht jetzt

Dieser Commit ist enthalten in:
2025-06-22 18:30:11 +02:00
Ursprung 74391e6634
Commit b9b943ec15
11 geänderte Dateien mit 514 neuen und 167 gelöschten Zeilen

Datei anzeigen

@@ -1,9 +1,10 @@
import pandas as pd
from io import BytesIO
from io import BytesIO, StringIO
from datetime import datetime
from zoneinfo import ZoneInfo
from openpyxl.utils import get_column_letter
from flask import send_file
import csv
def create_excel_export(data, columns, filename_prefix="export"):
@@ -35,6 +36,34 @@ def create_excel_export(data, columns, filename_prefix="export"):
)
def create_csv_export(data, columns, filename_prefix="export"):
"""Create a CSV file from data"""
# Create CSV in memory
output = StringIO()
writer = csv.writer(output)
# Write header
writer.writerow(columns)
# Write data
writer.writerows(data)
# Convert to bytes
output.seek(0)
output_bytes = BytesIO(output.getvalue().encode('utf-8-sig')) # UTF-8 with BOM for Excel compatibility
# Generate filename with timestamp
timestamp = datetime.now(ZoneInfo("Europe/Berlin")).strftime('%Y%m%d_%H%M%S')
filename = f"{filename_prefix}_{timestamp}.csv"
return send_file(
output_bytes,
mimetype='text/csv',
as_attachment=True,
download_name=filename
)
def format_datetime_for_export(dt):
"""Format datetime for export"""
if dt:
@@ -43,6 +72,9 @@ def format_datetime_for_export(dt):
dt = datetime.fromisoformat(dt)
except:
return dt
# Remove timezone info for Excel compatibility
if hasattr(dt, 'replace') and dt.tzinfo is not None:
dt = dt.replace(tzinfo=None)
return dt.strftime('%Y-%m-%d %H:%M:%S')
return ''