2025-06-22 13:25:54 +03:00

65 lines
1.7 KiB
Python

from django.http import HttpResponse
import pandas as pd
from io import BytesIO, StringIO
def export_to_excel(self, data, filename):
"""
Export data to Excel format.
Args:
data: Data to export
filename: Base filename without extension
Returns:
HttpResponse: Response with Excel file
"""
# Convert data to DataFrame
df = pd.DataFrame(data)
# Create Excel file in memory
excel_file = BytesIO()
with pd.ExcelWriter(excel_file, engine="xlsxwriter") as writer:
df.to_excel(writer, sheet_name="Model Analysis", index=False)
# Auto-adjust columns width
worksheet = writer.sheets["Model Analysis"]
for i, col in enumerate(df.columns):
max_width = max(df[col].astype(str).map(len).max(), len(col)) + 2
worksheet.set_column(i, i, max_width)
# Set up response
excel_file.seek(0)
response = HttpResponse(
excel_file.read(),
content_type="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
)
response["Content-Disposition"] = f'attachment; filename="{filename}.xlsx"'
return response
def export_to_csv(self, data, filename):
"""
Export data to CSV format.
Args:
data: Data to export
filename: Base filename without extension
Returns:
HttpResponse: Response with CSV file
"""
# Convert data to DataFrame
df = pd.DataFrame(data)
# Create CSV file in memory
csv_file = StringIO()
df.to_csv(csv_file, index=False)
# Set up response
response = HttpResponse(csv_file.getvalue(), content_type="text/csv")
response["Content-Disposition"] = f'attachment; filename="{filename}.csv"'
return response