Export Button geht jetzt
Dieser Commit ist enthalten in:
@@ -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 ''
|
||||
|
||||
|
||||
In neuem Issue referenzieren
Einen Benutzer sperren