Top Related Projects
Read and write spreadsheet files (CSV, XLSX and ODS), in a fast and scalable way
A pure PHP library for reading and writing spreadsheet files
Faker is a PHP library that generates fake data for you
Quick Overview
The PHP League's CSV package is a powerful and flexible library for reading, writing, and manipulating CSV files in PHP. It provides a simple and intuitive interface for working with CSV data, while also offering advanced features for handling complex scenarios.
Pros
- Easy to use with a clean and intuitive API
- Supports both reading and writing CSV files
- Handles various CSV formats and encodings
- Offers advanced features like filtering, sorting, and data conversion
Cons
- Limited support for extremely large CSV files (memory constraints)
- Requires PHP 7.4 or higher
- May have a steeper learning curve for advanced features
- Not suitable for real-time processing of streaming CSV data
Code Examples
Reading a CSV file:
use League\Csv\Reader;
$csv = Reader::createFromPath('path/to/your/csv/file.csv', 'r');
$csv->setHeaderOffset(0);
foreach ($csv as $record) {
echo $record['column_name'];
}
Writing to a CSV file:
use League\Csv\Writer;
$writer = Writer::createFromPath('path/to/your/new/file.csv', 'w+');
$writer->insertOne(['column1', 'column2', 'column3']);
$writer->insertAll([
['value1', 'value2', 'value3'],
['value4', 'value5', 'value6'],
]);
Filtering CSV data:
use League\Csv\Statement;
$csv = Reader::createFromPath('path/to/your/csv/file.csv', 'r');
$csv->setHeaderOffset(0);
$stmt = Statement::create()
->offset(10)
->limit(15)
->where(function(array $record) {
return $record['age'] >= 18;
});
$records = $stmt->process($csv);
Getting Started
To start using the League CSV library, first install it via Composer:
composer require league/csv
Then, in your PHP code, you can import and use the library:
use League\Csv\Reader;
use League\Csv\Writer;
// Read a CSV file
$csv = Reader::createFromPath('data.csv', 'r');
$csv->setHeaderOffset(0);
// Write to a CSV file
$writer = Writer::createFromPath('new_data.csv', 'w+');
$writer->insertOne(['Header1', 'Header2', 'Header3']);
This sets up the basic reading and writing capabilities of the library. From here, you can explore more advanced features as needed for your specific use case.
Competitor Comparisons
Read and write spreadsheet files (CSV, XLSX and ODS), in a fast and scalable way
Pros of Spout
- Supports both CSV and XLSX formats, offering more versatility
- Designed for handling large files with low memory usage
- Provides streaming capabilities for reading and writing
Cons of Spout
- Less actively maintained compared to CSV
- Fewer contributors and community support
- More complex API for basic CSV operations
Code Comparison
CSV:
use League\Csv\Reader;
$csv = Reader::createFromPath('file.csv', 'r');
$records = $csv->getRecords();
foreach ($records as $record) {
// Process each record
}
Spout:
use Box\Spout\Reader\Common\Creator\ReaderEntityFactory;
$reader = ReaderEntityFactory::createCSVReader();
$reader->open('file.csv');
foreach ($reader->getSheetIterator() as $sheet) {
foreach ($sheet->getRowIterator() as $row) {
// Process each row
}
}
Both libraries offer efficient ways to read CSV files, but Spout's API is slightly more verbose due to its support for multiple file formats. CSV provides a more straightforward approach for simple CSV operations, while Spout offers additional flexibility for handling various spreadsheet formats and large datasets.
A pure PHP library for reading and writing spreadsheet files
Pros of PhpSpreadsheet
- Supports multiple spreadsheet formats (XLSX, XLS, ODS, CSV)
- Offers advanced spreadsheet features like formulas, charts, and cell styling
- Provides comprehensive documentation and examples
Cons of PhpSpreadsheet
- Larger file size and higher memory usage
- Steeper learning curve due to more complex API
- Slower performance for simple CSV operations
Code Comparison
CSV:
$reader = Reader::createFromPath('file.csv', 'r');
$records = $reader->getRecords();
foreach ($records as $record) {
// Process each row
}
PhpSpreadsheet:
$spreadsheet = IOFactory::load('file.xlsx');
$worksheet = $spreadsheet->getActiveSheet();
foreach ($worksheet->getRowIterator() as $row) {
// Process each row
}
The CSV library offers a simpler API for basic CSV operations, while PhpSpreadsheet provides more extensive functionality for complex spreadsheet tasks. CSV is lightweight and faster for simple CSV processing, whereas PhpSpreadsheet is more suitable for projects requiring advanced spreadsheet features and support for multiple file formats.
Faker is a PHP library that generates fake data for you
Pros of Faker
- Generates a wide variety of fake data types (names, addresses, phone numbers, etc.)
- Supports multiple locales for internationalized fake data
- Extensible with custom providers for specialized data generation
Cons of Faker
- Not specifically designed for CSV manipulation or generation
- May require additional code to format generated data into CSV structure
- Less focused on performance optimization for large datasets
Code Comparison
Faker:
$faker = Faker\Factory::create();
$csvData = [];
for ($i = 0; i < 100; $i++) {
$csvData[] = [$faker->name, $faker->email, $faker->phoneNumber];
}
CSV:
use League\Csv\Writer;
$writer = Writer::createFromPath('file.csv', 'w+');
$writer->insertOne(['name', 'email', 'phone']);
$writer->insertAll($data);
Summary
Faker excels at generating diverse fake data for testing and development purposes, while CSV focuses on efficient CSV file manipulation. Faker offers more flexibility in data types and localization, but CSV provides better performance and specific CSV-related features. Combining both libraries can be beneficial for generating and writing large CSV datasets with fake data.
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual CopilotREADME
CSV
Csv is a library to ease parsing, writing and filtering CSV in PHP. The library goal is to be powerful while remaining lightweight, by utilizing PHP native classes whenever possible.
Highlights
- Easy to use API
- Read and Write to CSV documents in a memory efficient and scalable way
- Support PHP stream filtering capabilities
- Transform CSV documents into popular format (JSON, XML or HTML)
- Fully documented
- Fully unit tested
- Framework-agnostic
Documentation
Full documentation can be found at csv.thephpleague.com.
System Requirements
You need the ext-filter
extension to use Csv
and the latest stable version of PHP is recommended.
Please find below the PHP support for Csv
version 9.
Min. Library Version | Min. PHP Version | Max. Supported PHP Version |
---|---|---|
9.0.0 | PHP 7.0.10 | PHP 7.1.x |
9.1.2 | PHP 7.0.10 | PHP 7.2.x |
9.2.0 | PHP 7.0.10 | PHP 7.4.x |
9.6.0 | PHP 7.2.5 | PHP 7.4.x |
9.6.2 | PHP 7.2.5 | PHP 8.0.x |
9.7.0 | PHP 7.3.0 | PHP 8.0.x |
9.7.3 | PHP 7.3.0 | PHP 8.1.x |
9.8.0 | PHP 7.4.0 | PHP 8.1.x |
9.9.0 | PHP 8.1.2 | PHP 8.x |
Install
Install Csv
using Composer.
composer require league/csv:^9.0
Configuration
[!WARNING] Starting with PHP8.4 Deprecation notices will be trigger if you do not explicitly use the empty string as the escape parameter. see Deprecation for PHP8.4 and CSV and PHP8.4
[!TIP] If your CSV document was created or is read on a Legacy Macintosh computer, add the following lines before using the library to help PHP detect line ending.
if (!ini_get('auto_detect_line_endings')) {
ini_set('auto_detect_line_endings', '1');
}
[!WARNING] The ini setting is deprecated since PHP version 8.1 and will be removed in PHP 9.0
Testing
The library has:
- a PHPUnit test suite.
- a coding style compliance test suite using PHP CS Fixer.
- a code analysis compliance test suite using PHPStan.
To run the tests, run the following command from the project folder.
composer test
Contributing
Contributions are welcome and will be fully credited. Please see CONTRIBUTING and CONDUCT for details.
Security
If you discover any security related issues, please email nyamsprod@gmail.com instead of using the issue tracker.
Changelog
Please see CHANGELOG for more information on what has changed recently.
Credits
License
The MIT License (MIT). Please see LICENSE for more information.
Top Related Projects
Read and write spreadsheet files (CSV, XLSX and ODS), in a fast and scalable way
A pure PHP library for reading and writing spreadsheet files
Faker is a PHP library that generates fake data for you
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual Copilot