alexain/simple-spreadsheet-reader
Pros:
League\Csv, PhpOffice\PhpSpreadsheet), simplifying future format support (e.g., ODS).Cons:
League\Csv or PhpSpreadsheet for read operations without rewriting core logic.SimpleSpreadsheetReader as a Laravel service via AppServiceProvider or bind() in config/app.php.config() helper to override defaults (e.g., csv.delimiter).openspout/openspout (for XLSX) is Laravel-compatible but may require version pinning.phpoffice/phpspreadsheet (dev dependency) could conflict if already used; exclude from composer.json.PhpSpreadsheet as a backup for critical paths.sheet_index, delimiter) be exposed in Laravel (e.g., via config files or runtime overrides)?League\Csv dynamically)?Illuminate\Filesystem, Illuminate\Validation)?League\Csv, PhpSpreadsheet for read-only operations.Storage facade (local/S3 files) and Queue jobs for async processing.Validator for row-level checks (e.g., required|email).SimpleSpreadsheetReader.// app/Providers/AppServiceProvider.php
public function register(): void
{
$this->app->bind('spreadsheet.reader', function ($app) {
return new \Alexain\SimpleSpreadsheetReaderBundle\Service\SimpleSpreadsheetReader(
$app['config']['simple_spreadsheet_reader']
);
});
}
config/simple_spreadsheet_reader.php) to override defaults:
return [
'csv' => [
'delimiter' => ',',
'encoding' => 'auto',
],
'xlsx' => [
'sheet_index' => 0,
],
'header' => [
'normalize' => true,
],
];
openspout/openspout (v4+); test with complex files (e.g., merged cells, formulas).symfony/http-kernel: Not strictly needed; can be excluded if using Laravel’s DI.symfony/config: Required for config handling; may need a lightweight wrapper.Validator for row-level checks.openspout/openspout or phpoffice/phpspreadsheet updates may break compatibility.composer.json.openspout chunk size for optimal I/O.DB::insert or Eloquent insert for batch inserts.| Failure Scenario | Impact | Mitigation |
|---|---|---|
| Malformed CSV/XLSX | Data corruption or parsing errors | Validate files pre-processing; fallback to PhpSpreadsheet. |
| Out of Memory (OOM) | Job crashes | Use smaller chunks; monitor memory usage. |
| Unsupported File Format | Silent failure or errors | Add format detection; log unsupported types. |
| Dependency Version Conflict | Integration breaks | Pin versions; use composer why-not. |
| Upstream Package Abandoned | No security updates | Fork the repo; migrate to alternative. |
How can I help you explore Laravel packages today?