From da40720a0f095e56b5ab3de3996fbae63513a3f3 Mon Sep 17 00:00:00 2001 From: Amirhossein Khalili Date: Tue, 26 May 2026 17:22:34 +0330 Subject: [PATCH] fix(reports): freeze first excel column --- apps/reports/services/exporters.py | 9 ++++++--- apps/reports/tests/test_exporters.py | 2 ++ 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/apps/reports/services/exporters.py b/apps/reports/services/exporters.py index a23050b..91ea77b 100644 --- a/apps/reports/services/exporters.py +++ b/apps/reports/services/exporters.py @@ -72,6 +72,10 @@ def _autosize_columns(worksheet) -> None: worksheet.column_dimensions[get_column_letter(column_index)].width = min(max(width + 4, 12), 30) +def _freeze_first_column(worksheet) -> None: + worksheet.freeze_panes = "B1" + + def _money_label(locale: ExportLocale, income_totals: list[dict]) -> str: return locale.format_money_label(income_totals) @@ -722,6 +726,7 @@ def _render_all_users_overall_excel_sheet( ) -> None: if locale.is_rtl: worksheet.sheet_view.rightToLeft = True + _freeze_first_column(worksheet) scope = report_data["scope"] summary = report_data["summary"] @@ -935,9 +940,7 @@ def _render_excel_sheet( ) -> None: if locale.is_rtl: worksheet.sheet_view.rightToLeft = True - worksheet.freeze_panes = "E4" - else: - worksheet.freeze_panes = "A4" + _freeze_first_column(worksheet) _append_meta_block(worksheet, locale=locale, report_data=report_data) if report_data.get("user_summaries"): worksheet.append([]) diff --git a/apps/reports/tests/test_exporters.py b/apps/reports/tests/test_exporters.py index bbc3bc7..a34b489 100644 --- a/apps/reports/tests/test_exporters.py +++ b/apps/reports/tests/test_exporters.py @@ -196,6 +196,7 @@ class ReportExporterTests(TestCase): summary_sheet = workbook[workbook.sheetnames[0]] summary_values = list(summary_sheet.iter_rows(values_only=True)) + self.assertEqual(summary_sheet.freeze_panes, "B1") self.assertEqual(summary_sheet["A1"].value, "Workspace Report") self.assertEqual(summary_sheet["B1"].value, "Exports") self.assertEqual(summary_sheet["A15"].value, "Users Summary") @@ -242,6 +243,7 @@ class ReportExporterTests(TestCase): user_sheet = workbook[workbook.sheetnames[1]] user_values = list(user_sheet.iter_rows(values_only=True)) + self.assertEqual(user_sheet.freeze_panes, "B1") daily_header = next(row[:6] for row in user_values if row and "Date" in row) self.assertEqual( daily_header,