jarir-ahmed/data-converter

6-way converter: CSV ↔ XLSX ↔ JSON ↔ MySQL. Import/export data between any format, generate SQL INSERTs, or connect directly via PDO.

Maintainers

Package info

github.com/jarir2020/6-way-data-converter

pkg:composer/jarir-ahmed/data-converter

Transparency log

Statistics

Installs: 1

Dependents: 0

Suggesters: 0

Stars: 0

Open Issues: 0

v1.0.1 2026-07-11 02:42 UTC

This package is auto-updated.

Last update: 2026-07-11 02:47:31 UTC


README

6-way converter — CSV ↔ XLSX ↔ JSON ↔ MySQL. Import/export data between any format, generate SQL INSERT statements, or connect directly via PDO.

composer require jarir-ahmed/data-converter

Matrix

From \ To CSV XLSX JSON MySQL
CSV
XLSX
JSON
MySQL

Quick Start

Import: any file → SQL / direct DB insert

use JarirAhmed\DataConverter\ImportManager;

$import = new ImportManager();

$sql = $import->csvToSql('users.csv', 'users');    // CSV → SQL
$sql = $import->xlsxToSql('orders.xlsx', 'orders'); // XLSX → SQL
$sql = $import->jsonToSql('data.json', 'products'); // JSON → SQL

// Auto-detect by extension
$sql = $import->fileToSql('data.csv',  'my_table');
$sql = $import->fileToSql('data.xlsx', 'my_table');
$sql = $import->fileToSql('data.json', 'my_table');

// Direct DB insert via PDO
$pdo = new PDO('mysql:host=127.0.0.1;dbname=test-excel;charset=utf8mb4',
    'root', 'your_secure_password');
$import->csvToSql('data.csv', 'users', ['pdo' => $pdo]);

Export: SQL / array → any format

use JarirAhmed\DataConverter\ExportManager;

$pdo    = new PDO('mysql:host=127.0.0.1;dbname=test-excel', 'root', 'your_secure_password');
$export = new ExportManager();

$export->sqlToCsv('SELECT * FROM users', $pdo, 'users.csv');
$export->sqlToXlsx('SELECT * FROM orders', $pdo, 'orders.xlsx');
$export->sqlToJson('SELECT * FROM products', $pdo, 'products.json');

// Or from arrays:
$export->dataToCsv([...], 'out.csv');
$export->dataToXlsx([...], 'out.xlsx');
$export->dataToJson([...], 'out.json');

Convert: format ↔ format (no database)

use JarirAhmed\DataConverter\Converter;

$conv = new Converter();

$conv->csvToXlsx('data.csv', 'data.xlsx');
$conv->xlsxToCsv('data.xlsx', 'data.csv');
$conv->csvToJson('data.csv', 'data.json');
$conv->jsonToCsv('data.json', 'data.csv');
$conv->xlsxToJson('report.xlsx', 'report.json');
$conv->jsonToXlsx('data.json', 'data.xlsx');

JSON Formats

Import supports two formats:

Array of objects (default):

[{"name": "Alice", "age": 30}, {"name": "Bob", "age": 25}]

Structured {columns, rows}:

{"columns": ["name", "age"], "rows": [["Alice", 30], ["Bob", 25]]}

Export supports both — pass 'structured' => true for the structured format.

Options

ImportManager

Option Type Default Description
pdo PDO|null null PDO for direct DB insert
skipExecute bool false Return SQL even with PDO
batchSize int 50 Rows per INSERT block
hasHeader bool true First row is column names
columns string[] [] Force column names
delimiter string , CSV delimiter
enclosure string " CSV enclosure
ignore bool false Use INSERT IGNORE
emptyAsNull bool true Empty cells → NULL
preview int 0 Only process N rows
onDuplicateKey string null ON DUPLICATE KEY UPDATE
sheetName string first Sheet name (xlsxToSql)
formatDates bool true Excel serial → YYYY-MM-DD
rootPath string null JSON nested path like data.items

ExportManager

Option Type Default Description
delimiter string , CSV delimiter
enclosure string " CSV enclosure
includeHeaders bool true Include CSV header row
utf8Bom bool false UTF-8 BOM for Excel
sheetName string Data XLSX sheet name
styled bool true Blue header styling
pretty bool true Pretty-print JSON
structured bool false {columns, rows} format

Local Testing

composer install
composer test

Test database (manual verification):

Host Database User Password Port
localhost test-excel root your_secure_password 3306
CREATE DATABASE IF NOT EXISTS `test-excel` CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

License

MIT

6-way-data-converter