Skip to main content

No project description provided

Project description

The light Python report builder.

Converts data into formatted text (PDF, XLSX, DOCX, HTML):

data = {'data_source1':[{'col1': 'value row1', ....}, ...],
        'data_source2':[{'col_1': 'valie_row1', ....}, ...],
        }

Available formatting (styling options):

"style": {
        "font-family": "Arial",
        "font-size": "10pt",
        "font-weight": "normal",  # bold
        "text-decoration": "",  # underline
        "font-style": "",  # italic
        "color": "black",  # font color
        "background": "white",  # background color
        "border-color": "black",  # border color
        "border-width": "1 1 1 1",
        "padding": "0.05cm 0.05cm 0.05cm 0.05cm",
        "text-align": "left",
        "vertical-align": "top",
  }

Concept

The report definition consists of sections (Report, Pages, Columns, Rows, Cells).
Each section inherits style from previous and may override some styling options.
*see examples in folder test_data*

Report:      # top-level report object containing the base style
    Pages:   # page size, margins, and page-level styles
        Columns:    # column widths: fixed, %, or auto-width; supports styles
            Rows:   # row heights: auto, fixed, minimum, or maximum; supports styles
                    # rows may be data-bound and can include subsections:
                    # header, footer, group-header, group-footer
                Cells:  # contain plain text and data placeholders — {col1} (f-strings style)
                        # support aggregate functions — {sum:col1}
                        # support basic HTML formatting: <b> <i> <u> <br>
            Rows:
                Cells:  # cells can be merged (span)
            ...
        Columns:
            ...
    Pages:
        ...
    ...```

---

## Main API (`Q2Report`)

### Initialization

```python
from q2report.q2report import Q2Report

report = Q2Report(style={...})

Adding Pages and Columns

report.add_page(page_width=21, page_height=29.7, page_margin_left=2, page_margin_right=1)
report.add_columns(page_index=0, widths=[5, 5, 5], style={...})

Adding Rows and Cells

rows = report.add_rows(page_index=0, columns_index=0, heights=[1, 1, 1], style={...})
rows.set_cell(0, 0, "{col1}", style={"font-weight": "bold"})
rows.set_cell(1, 0, "{sum:col2}", format="F2")

Or directly via report:

report.set_cell(0, 1, "Some value", page_index=0, columns_index=0, rows_index=0)

Data Binding

  • Use {column_name} in cell data to bind to data source columns.
  • Use {sum:column_name} for aggregation in table footers or group footers.

Grouping and Aggregation

rows.add_table_group(
    groupby="col1",
    header=Q2Report_rows(...),
    footer=Q2Report_rows(...)
)

Rendering

report.run(output_file="output.pdf", data=data)
  • Supported output types: "html", "pdf", "xlsx", "docx"

Features

  • Flexible styling: Inherit and override styles at any level.
  • Data-driven: Bind data sources to tables, rows, and cells.
  • Aggregates: Built-in support for {sum:col} and similar formulas.
  • Grouping: Group rows by one or more columns, with group headers/footers.
  • Images: Embed images using {q2image(path)} or cell format "I".
  • Multi-format output: Export to HTML, PDF, XLSX, DOCX.
  • Custom formulas: Use Python expressions in {...}.

Example

from q2report.q2report import Q2Report

report = Q2Report()
report.add_page()
report.add_columns(widths=[5, 5, 5])
rows = report.add_rows(heights=[1, 1, 1])
rows.set_cell(0, 0, "Header 1", style={"font-weight": "bold"})
rows.set_cell(0, 1, "Header 2", style={"font-weight": "bold"})
rows.set_cell(1, 0, "{col1}")
rows.set_cell(1, 1, "{col2:F2}")
report.run(output_file="report.pdf", data={"data_source": [{"col1": "A", "col2": 123456}]})

Advanced

  • Custom styles: Use Q2Report.make_style(...) to generate style dicts.
  • Direct JSON: You can load report definitions from JSON files or strings.
  • Accessing data: Use report.d.<dataset> for advanced row access in formulas.

See Also

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

q2report-0.1.61.tar.gz (41.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

q2report-0.1.61-py3-none-any.whl (48.8 kB view details)

Uploaded Python 3

File details

Details for the file q2report-0.1.61.tar.gz.

File metadata

  • Download URL: q2report-0.1.61.tar.gz
  • Upload date:
  • Size: 41.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.5.0 CPython/3.11.7 Windows/10

File hashes

Hashes for q2report-0.1.61.tar.gz
Algorithm Hash digest
SHA256 dd4ee73982dea81476fcef3bc7b935e5b7debf53e14434736f273df68fbc4cca
MD5 c2ce9f2bd20331e16aa4e1abf97eb167
BLAKE2b-256 588a614e2e8a5b019aa2992be865cefc80e56793dd06b00a45557d7183fa344a

See more details on using hashes here.

File details

Details for the file q2report-0.1.61-py3-none-any.whl.

File metadata

  • Download URL: q2report-0.1.61-py3-none-any.whl
  • Upload date:
  • Size: 48.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.5.0 CPython/3.11.7 Windows/10

File hashes

Hashes for q2report-0.1.61-py3-none-any.whl
Algorithm Hash digest
SHA256 57ad979a7268e5a32f71f968a13911af651d3d73ccf92177dc5e4ab5eb8b197f
MD5 d2d0c55c9df879b6315799ea4e3b0bcb
BLAKE2b-256 9a93d90571d195451ae047879c99bdc718f7dda2ace3d7e88b2c9ee385bf02f2

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page