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.49.tar.gz (38.9 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.49-py3-none-any.whl (46.3 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: q2report-0.1.49.tar.gz
  • Upload date:
  • Size: 38.9 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.49.tar.gz
Algorithm Hash digest
SHA256 82c2d0f261d2f91efbadeeb8e9083adfc1b48762bdfe0a3615266b2330d2f5ef
MD5 e13d56cf6a24d1599e9c1f31989e9f9e
BLAKE2b-256 bc83961ba4bd0b36968fef6f5a578e268e44a157c7f76a8d02bcb72a377f968a

See more details on using hashes here.

File details

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

File metadata

  • Download URL: q2report-0.1.49-py3-none-any.whl
  • Upload date:
  • Size: 46.3 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.49-py3-none-any.whl
Algorithm Hash digest
SHA256 000101af2097a54c0d71ca7667326c237a1d6305cb296df0596bb289da307043
MD5 9324eb87102e3a308613522a05da2cdf
BLAKE2b-256 91328c27ca530578940e0212d87bb8878b9503028b21013fdae89f4e53d2c576

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