PHP Classes

How Can PHP Import and Export Excel, OpenOffice and CSV Files Using the Package Data Processor: Import and export data from XLSX, ODS or CSV files

Recommend this page to a friend!
  Info   Documentation   View files Files   Install with Composer Install with Composer   Download Download   Reputation   Support forum   Blog    
Last Updated Ratings Unique User Downloads Download Rankings
2025-08-10 (Less than 1 hour ago) RSS 2.0 feedNot yet rated by the usersTotal: Not yet counted Not yet ranked
Version License PHP version Categories
data-processor 1.0MIT/X Consortium ...7Databases, Files and Folders, Language, P...
Description 

Author

This package can import and export data from XLSX, ODS or CSV files.

It provides a data import class that can perform several operations to import data from given files and export data to other files.

The package also provides a file manager class that can load and save files in different formats that store information separated by rows.

The data import and export class uses the file manager class to process the data one row at a time.

Currently, the file manager class supports several formats using other packages like:

- Microsoft Excel .xlsx spreadsheet files

- OpenOffice ODF spreadsheet files

- CSV files

Picture of Wesley Silva
Name: Wesley Silva <contact>
Classes: 3 packages by
Country: Brazil Brazil
Age: ???
All time rank: 4491365 in Brazil Brazil
Week rank: 195 Up14 in Brazil Brazil Up
Innovation award
Innovation award
Nominee: 1x

Instructions

Documentation

? Laravel Data Processor

Latest Version on Packagist GitHub Tests Action Status GitHub Code Style Action Status Total Downloads

A high-performance Laravel package for importing and exporting large datasets with cloud storage support, automatic chunking, queue processing, and memory-efficient generators.

Built on top of OpenSpout for maximum performance and minimal memory usage.

? Features

  • ? High Performance: Process millions of rows with minimal memory usage
  • ?? Cloud Storage: Native support for AWS S3, Google Cloud Storage, Azure, and more
  • ? Auto Chunking: Automatically splits large files into smaller chunks
  • ? Queue Support: Background processing with Laravel Queues
  • ? Memory Efficient: Uses PHP generators to handle large datasets
  • ? Multiple Formats: Excel (XLSX), CSV, ODS support
  • ? Data Validation: Built-in validation with Laravel's validator
  • ? Laravel Integration: Seamless integration with Laravel ecosystem
  • ? Well Tested: Comprehensive test suite with performance benchmarks

? Requirements

-- OpenSpout 4.0+

? Docker

Use Docker para rodar a suíte de testes em um ambiente PHP 8.3 isolado:

# Build da imagem
docker build -t data-processor-tests .

# Run os testes (usa o código já copiado na imagem, sem volume mount)
docker run --rm data-processor-tests

? Installation

You can install the package via composer:


Publish the config file:

? Quick Start

Import Data

Create an import class:

<?php

namespace App\Imports;

use Wesleydeveloper\DataProcessor\Contracts\Importable;
use Wesleydeveloper\DataProcessor\Contracts\ShouldQueue;
use Wesleydeveloper\DataProcessor\Contracts\WithChunking;
use Illuminate\Support\Facades\DB;

class UsersImport implements Importable, ShouldQueue, WithChunking
{
    public function rules(): array
    {
        return [
            'name' => 'required|string|max:255',
            'email' => 'required|email|unique:users,email',
            'phone' => 'nullable|string'
        ];
    }

    public function map(array $row): array
    {
        return [
            'name' => $row[0],
            'email' => $row[1],
            'phone' => $row[2] ?? null,
            'created_at' => now(),
            'updated_at' => now()
        ];
    }

    public function process(array $data): void
    {
        DB::table('users')->insert($data);
    }

    public function chunkSize(): int
    {
        return 1000;
    }

    // Queue configuration
    public function onQueue(): ?string
    {
        return 'imports';
    }

    public function timeout(): int
    {
        return 300;
    }

    public function memory(): int
    {
        return 512;
    }

    // Chunking configuration
    public function maxFileSize(): int
    {
        return 50 1024 1024; // 50MB
    }

    public function chunkRows(): int
    {
        return 10000;
    }
}

Process the import:

use Wesleydeveloper\DataProcessor\Facades\DataProcessor;
use App\Imports\UsersImport;

DataProcessor::import(new UsersImport(), 'users-import.xlsx');

Export Data

Create an export class:

<?php

namespace App\Exports;

use Wesleydeveloper\DataProcessor\Contracts\Exportable;
use App\Models\User;
use Generator;

class UsersExport implements Exportable
{
    public function query(): Generator
    {
        User::chunk(1000, function ($users) {
            foreach ($users as $user) {
                yield $user;
            }
        });
    }

    public function headings(): array
    {
        return ['ID', 'Name', 'Email', 'Created At'];
    }

    public function map($user): array
    {
        return [
            $user->id,
            $user->name,
            $user->email,
            $user->created_at->format('Y-m-d H:i:s')
        ];
    }

    public function chunkSize(): int
    {
        return 1000;
    }
}

Process the export:

use Wesleydeveloper\DataProcessor\Facades\DataProcessor;
use App\Exports\UsersExport;

DataProcessor::export(new UsersExport(), 'users-export.xlsx');

  Files folder image Files (29)  
File Role Description
Files folder imagebin (1 file)
Files folder imageconfig (1 file)
Files folder imagesrc (4 files, 4 directories)
Files folder imagetests (1 file, 3 directories)
Accessible without login Plain text file composer.json Data Auxiliary data
Accessible without login Plain text file Dockerfile Data Auxiliary data
Accessible without login Plain text file LICENSE Lic. License text
Accessible without login Plain text file phpunit.xml Data Auxiliary data
Accessible without login Plain text file README.md Doc. Read me file

  Files folder image Files (29)  /  bin  
File Role Description
  Accessible without login Plain text file test-dataprocessor Data Auxiliary data

  Files folder image Files (29)  /  config  
File Role Description
  Accessible without login Plain text file data-processor.php Conf. Configuration script

  Files folder image Files (29)  /  src  
File Role Description
Files folder imageContracts (6 files)
Files folder imageExceptions (1 file)
Files folder imageFacades (1 file)
Files folder imageJobs (1 file)
  Plain text file ChunkProcessor.php Class Class source
  Plain text file DataProcessor.php Class Class source
  Plain text file DataProcessorServiceProvider.php Class Class source
  Plain text file FileManager.php Class Class source

  Files folder image Files (29)  /  src  /  Contracts  
File Role Description
  Plain text file Exportable.php Class Class source
  Plain text file Importable.php Class Class source
  Plain text file ShouldQueue.php Class Class source
  Plain text file WithChunking.php Class Class source
  Plain text file WithErrorHandling.php Class Class source
  Plain text file WithProgress.php Class Class source

  Files folder image Files (29)  /  src  /  Exceptions  
File Role Description
  Plain text file ProcessingException.php Class Class source

  Files folder image Files (29)  /  src  /  Facades  
File Role Description
  Plain text file DataProcessor.php Class Class source

  Files folder image Files (29)  /  src  /  Jobs  
File Role Description
  Plain text file ProcessImportChunk.php Class Class source

  Files folder image Files (29)  /  tests  
File Role Description
Files folder imageFeature (2 files)
Files folder imageMocks (2 files)
Files folder imageUnit (3 files, 1 directory)
  Plain text file TestCase.php Class Class source

  Files folder image Files (29)  /  tests  /  Feature  
File Role Description
  Plain text file BenchmarkTest.php Class Class source
  Plain text file PerformanceTest.php Class Class source

  Files folder image Files (29)  /  tests  /  Mocks  
File Role Description
  Plain text file TestExport.php Class Class source
  Plain text file TestImport.php Class Class source

  Files folder image Files (29)  /  tests  /  Unit  
File Role Description
Files folder imageJobs (1 file)
  Plain text file ChunkProcessorTest.php Class Class source
  Plain text file DataProcessorTest.php Class Class source
  Plain text file FileManagerTest.php Class Class source

  Files folder image Files (29)  /  tests  /  Unit  /  Jobs  
File Role Description
  Plain text file ProcessImportChunkTest.php Class Class source

The PHP Classes site has supported package installation using the Composer tool since 2013, as you may verify by reading this instructions page.
Install with Composer Install with Composer
 Version Control Unique User Downloads  
 100%
Total:0
This week:0