1
Prepare the data
Any Arrow-capable frame works. This uses Polars.
2
Write the title block
header_content puts text above the data, and data_start_row moves the table down to make room.3
Compose the call
This script is verified: it runs against jetxl 0.3.1 and produces a workbook that opens cleanly, with the title in A1, the column header on row 5 and the first data row on row 6.
Why the row numbers line up
The indexing rules differ by feature, which is the easiest thing to get wrong here.
The conditional format and chart ranges use
df.height rather than literals for the same reason. In Pandas, use len(df).
Turning gridlines off does more for the look of a report than any other single setting. Combined with a native table, the result reads as designed rather than exported.