Hi maintainers,
I have a contribution ready for the Excel export pipeline:
Branch : GitHub - Himanshugijawara/frappe at feat/xlsx-user-configurable-styling · GitHub
What it adds :
User-configurable styling in the Report Export dialog (header, data cells, borders, alternate row colors with optional font color, number formatting with precision + right-align)
Live preview that reflects every choice
37 new unit tests; no existing behaviour changed when user_styles is None
Both xlsxutils.XLSXStyleBuilder and frappe.desk.query_report/frappe.desk.reportview are wired
Issue : When I try to open a PR against version-16 I get:
“An owner of this repository has limited the ability to open a pull request to users that are collaborators on this repository.”
GitHub Support confirmed this is a repository-level setting, not an account flag. Could a maintainer either (a) relax the setting, (b) add me as a contributor temporarily, or (c) pull the branch directly?
Happy to rebase / split commits / change target branch as needed.
Thanks!
Himanshu
Hi there, here’s an outline of the changed PR policy and a few paths forward:
opened 06:17AM - 19 Mar 26 UTC
closed 06:44AM - 19 Mar 26 UTC
meta
We have suspended accepting community PRs temporarily. This decision was taken c… onsidering:
- The volume of PRs received.
- The percentage of PRs that were largely AI generated. They required more work from our side than effort put in by contributors.
- Lack of maintainer/reviewer bandwidth to work on and merge those PRs.
- Perverse incentive in job market and colleges to have "open source contributions" on resume.
We understand the value of community contributors and long-term contributors to the projects. Many such contributors have shaped our projects, but at present it isn't practical to accept PRs from everyone.
Workaround:
We are still accepting small, easy to review/merge fixes. To do this...
1. Open a detailed bug report. Do not generate entire bug reports using LLMs. A good bug report is almost as valuable as a PR that fixes the problem.
2. Ask if maintainers are open to a fix from community.
3. Create a branch on **your fork** and add commits that fix the problem.
4. Share the link to your fix branch, maintainers will create a PR from it and merge it if it's appropriate.
5. Alternatively you can also share `.patch` file for your commit and maintainers can apply it directly.
Those who have enough such fixes are invited to the repository. They can create PRs without any restrictions.
avc
May 12, 2026, 5:47pm
3
Hi @Himanshugijawara
Check this, some of this xls better exporting is actually there …
develop ← Abdeali099:export-report-with-xlsxwriter
opened 09:06PM - 25 Jan 26 UTC
## Summary
Adds Excel (XLSX) export styling support for Script Reports and Qu… ery Reports with a new `get_xlsx_styles` hook.
## What's New
- **Default styling** applied automatically on Excel export:
- Bold header row with proper alignment
- Bold filter labels (when included)
- Bold total row (when applicable)
- Indentation support for tree reports
- Number formatting for Float, Percent, Date, Time, Datetime fields
- Currency formatting with locale-aware symbols and precision
- **New `get_xlsx_styles` hook** for custom report styling:
- Define in your report's Python file
- Access report metadata (columns, rows, filters)
- Apply styles to columns, rows, or specific cells
- Supports all xlsxwriter format properties (bold, colors, borders, alignment, etc.)
- **Performance**: Switched to `xlsxwriter` with `constant_memory=True` for large dataset exports
## Breaking Changes
1. **`build_xlsx_data` signature changed**:
- Now expects `report_name` in `data` parameter
- Returns `(result, column_widths, styles)` where `styles` is `dict | None` (previously returned `header_index`)
2. **Filter data structure changed**:
- `data.filters` → `data.applied_filters` (display filters)
- Raw filters now use `data.filters`
3. **`make_xlsx` now uses `xlsxwriter`**:
- For `.xls` format, use new `make_xls` function (uses openpyxl)
- `make_xlsx` accepts new `styles` parameter for formatting
## Example Output
<img width="1533" height="529" alt="image" src="https://github.com/user-attachments/assets/3d12764b-73dc-4b89-bbd0-02026b17a4b2" />
### Performance
- 1000 Rows * 14 Cols
- Indentation Applied
```bash
%timeit export_query()
```
1. Old implementation with openpyxl
```bash
101 ms ± 1.27 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)
```
2. New implementation with xlsxwriter with formating
```bash
76.5 ms ± 623 μs per loop (mean ± std. dev. of 7 runs, 10 loops each)
```
## Docs
- [See Documentation](https://docs.frappe.io/framework/desk-reports/excel-xlsx-export-styling)
---
### Contributors
- @sagarvora
- @vorasmit
- @ljain112
---
> [!NOTE]
> Backport to V-16
1 Like
Hi @Himanshugijawara
Please create an issue in the Frappe repository and provide a link to your branch. A maintainer may be able to open a PR for you.
Also, create your branch from develop, not version-16.
When creating the issue, please include screenshots or a GIF to make the problem more visible and easier to understand.