Skip to content
MNB PHPExcelDeveloper Guide
AI

Application workflows

Email and Scheduled Spreadsheet Jobs

Deliver generated workbooks through SMTP and run recurring imports or exports through persistent schedules.

Level
Advanced
Reading time
14 min
Package
mnb/mnb-phpexcel
Updated
emailGeneratedExcel()scheduler()pdoScheduler()runScheduler()

Email a generated workbook#

PHP
MnbExcel::emailGeneratedExcel(
    MnbExcel::report($rows)->withHeader()->autoWidth(),
    'manager@example.com',
    'Daily sales report',
    'The generated report is attached.',
    [
        'filename' => 'daily-sales.xlsx',
        'smtp' => [
            'host' => getenv('SMTP_HOST'),
            'port' => 587,
            'encryption' => 'starttls',
            'username' => getenv('SMTP_USERNAME'),
            'password' => getenv('SMTP_PASSWORD'),
        ],
    ]
);

Create a file-backed schedule#

PHP
$scheduler = MnbExcel::scheduler(
    __DIR__ . '/storage/schedule.json'
);

$scheduler->scheduleExport(
    'daily-sales',
    '0 6 * * *',
    $rows,
    __DIR__ . '/storage/exports/daily-sales.xlsx'
);

Use PDO schedule storage for shared workers#

scheduler-worker.php
$scheduler = MnbExcel::pdoScheduler($pdo, 'mnb_excel_schedule');

MnbExcel::runScheduler($scheduler, [
    'sleep_seconds' => 30,
    'lock_name' => 'spreadsheet-scheduler',
    'stop_on_signal' => true,
]);

Run the process under a supervisor#

The library contains scheduling logic and a long-running runner. Use cron, systemd, Supervisor, Docker, or your hosting process manager to keep the runner alive and restart it after failure or deployment.