jarir-ahmed/excel-sql-converter

Bidirectional converter between CSV/XLSX and SQL. Import spreadsheets into SQL INSERT statements or directly into MySQL, and export SQL query results to CSV/XLSX files.

Maintainers

Package info

github.com/jarir2020/jarir-ahmed-csv-xlsx-sql

pkg:composer/jarir-ahmed/excel-sql-converter

Transparency log

Statistics

Installs: 1

Dependents: 0

Suggesters: 0

Stars: 0

Open Issues: 0

v1.0.0 2026-07-09 21:32 UTC

This package is auto-updated.

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


README

Bidirectional converter between CSV/XLSX and SQL — import spreadsheets into SQL INSERT statements (or directly into MySQL), and export SQL query results to CSV/XLSX files.

composer require jarir-ahmed/excel-sql-converter

Quick Start

Import: CSV/XLSX → SQL

use JarirAhmed\ExcelSqlConverter\ImportManager;

$import = new ImportManager();

// Generate SQL INSERT statements
$sql = $import->csvToSql('customers.csv', 'customers');
echo $sql;

// With XLSX
$sql = $import->xlsxToSql('orders.xlsx', 'orders');
echo $sql;

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

Import: Direct DB insert via PDO

$pdo = new PDO('mysql:host=127.0.0.1;port=3306;dbname=test-excel;charset=utf8mb4',
    'root', 'your_secure_password');

$import = new ImportManager();

// When PDO is passed, rows are inserted directly (returns '')
$import->csvToSql('data.csv', 'users', ['pdo' => $pdo]);

// To get the SQL *and* execute, use skipExecute:
$sql = $import->csvToSql('data.csv', 'users', [
    'pdo' => $pdo,
    'skipExecute' => true,
]);
// Now $sql has the statements, and you can review/execute manually

Export: SQL → CSV/XLSX

use JarirAhmed\ExcelSqlConverter\ExportManager;

$pdo = new PDO('mysql:host=127.0.0.1;port=3306;dbname=test-excel;charset=utf8mb4',
    'root', 'your_secure_password');

$export = new ExportManager();

// SQL query → CSV
$export->sqlToCsv('SELECT * FROM users', $pdo, 'users_export.csv');

// SQL query → styled XLSX
$export->sqlToXlsx('SELECT * FROM orders', $pdo, 'orders_export.xlsx');

Export: Raw array → CSV/XLSX

$export = new ExportManager();

$data = [
    ['id' => 1, 'name' => 'Alice', 'email' => 'alice@example.com'],
    ['id' => 2, 'name' => 'Bob',   'email' => 'bob@example.com'],
];

$export->dataToCsv($data, 'export.csv');
$export->dataToXlsx($data, 'export.xlsx');

ImportManager Options

Option Type Default Description
pdo PDO|null null PDO connection for direct DB insert
skipExecute bool false Return SQL string even when PDO is set
batchSize int 50 Rows per INSERT block
hasHeader bool true First row is column names
columns string[] [] Force custom column names (ignores header)
delimiter string , CSV delimiter (csvToSql only)
enclosure string " CSV enclosure (csvToSql only)
ignore bool false Use INSERT IGNORE instead of INSERT
emptyAsNull bool true Empty cells become NULL instead of ''
preview int 0 Only process first N rows (0 = all)
onDuplicateKey string null SQL fragment for ON DUPLICATE KEY UPDATE
sheetName string first sheet Worksheet name (xlsxToSql only)
formatDates bool true Convert Excel date serials to YYYY-MM-DD (xlsxToSql only)

ExportManager Options

CSV options (sqlToCsv / dataToCsv)

Option Type Default Description
delimiter string , CSV column delimiter
enclosure string " CSV enclosure character
includeHeaders bool true Write column headers as first row
utf8Bom bool false Prepend UTF-8 BOM (Excel-friendly)
headers string[] [] Custom headers (dataToCsv only)

XLSX options (sqlToXlsx / dataToXlsx)

Option Type Default Description
sheetName string Data Worksheet tab name (max 31 chars)
creator string ExcelSqlConverter Document author
styled bool true Apply blue header row styling
headers string[] [] Custom headers (dataToXlsx only)

Local Testing

# Install dependencies
composer install

# Run tests
composer test

Test database (for 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

jarir-ahmed-csv-xlsx-sql