MNB PHPExcelDeveloper Guide
Application workflows

Email and Scheduled Spreadsheet Jobs

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

Updated

LevelAdvancedReading time14 minPackagemnb/mnb-phpexcel
emailGeneratedExcel()scheduler()pdoScheduler()runScheduler()

What you will learn

  • Attach a generated workbook to a MIME email.
  • Configure SMTP, SMTPS, or STARTTLS transport.
  • Persist and execute recurring import/export schedules.

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.