Skip to content

Effectual Report Generator

Preview Version

This documentation is currently being worked on and may be incomplete or subject to change. If you spot any mistakes or have suggestions, please contact one of the maintainers.

Authors: Ewald Hild and Jan Mellert

Overview

This project is a python-based toolkit for automated generation of PowerPoint reports with optional Think-Cell integration. This toolkit uses Excel files, SharePoint locations and API Endpoints as data sources and predefined PowerPoint templates to automatically create presentations. This Tool has been developed for Perpetual / Effectual

Key Features

  • Automated Report Generation - Generate reports for any specified time period
  • Excel Integration - Use Excel files as data sources with placeholder support
  • Template-Based - Work with existing PowerPoint presentations as templates
  • Flexible Output - Save as .pptx or .ppttc files
  • Modular Architecture - Separate utility modules for Excel, PowerPoint, and Think-Cell operations

Think-Cell Integration

Exporting to .pptx format with Think-Cell objects requires running the toolkit on Windows or MacOS with an active Think-Cell installation and license.

Requirements

  • Python: 3.12 or higher
  • Operating System: Cross-platform (Windows required for Think-Cell .ppttc export)
  • Think-Cell: Active installation and license (for .ppttc export only)

Quick Start

# Clone the repository
git clone https://github.com/Effctl/effctl-report-generator/
cd effctl-report-generator

# Install dependencies
pip install -e .

Basic Usage

from pathlib import Path
from pptx import Presentation
from effctl_lib.excel_utils import format_excel_data
from effctl_lib.pptx_utils import traverse_pptx

# Define paths
excel_path = Path("resources/inputs.xlsx")
template_path = Path("resources/template.pptx")
output_path = Path("output/report.pptx")

# Load and format data
data = format_excel_data(
    excel_path, 
    sheet_name="Example Sheet",
    column_var="Variable", 
    column_data="Data"
)

# Generate presentation
presentation = Presentation(template_path)
traverse_pptx(presentation, data)
presentation.save(output_path)

Documentation Sections

Support

For issues or questions that are not covered in the documentation, please contact the maintainers via E-Mail or Teams:

  • Ewald Hild: 📧 ewald.hild@effctl.com

  • Jan Mellert: 📧 jan.mellert@effctl.com

For bug reports or feature requests, please use the GitHub Issue Tracker