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