PHPackages                             jarir-ahmed/excel-sql-converter - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Database &amp; ORM](/categories/database)
4. /
5. jarir-ahmed/excel-sql-converter

ActiveLibrary[Database &amp; ORM](/categories/database)

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.

v1.0.0(1mo ago)01MITPHPPHP &gt;=7.4

Since Jul 9Pushed 1mo agoCompare

[ Source](https://github.com/jarir2020/jarir-ahmed-csv-xlsx-sql)[ Packagist](https://packagist.org/packages/jarir-ahmed/excel-sql-converter)[ RSS](/packages/jarir-ahmed-excel-sql-converter/feed)WikiDiscussions main Synced 1w ago

READMEChangelogDependencies (2)Versions (2)Used By (0)

excel-sql-converter
===================

[](#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.

```
composer require jarir-ahmed/excel-sql-converter

```

---

Quick Start
-----------

[](#quick-start)

### Import: CSV/XLSX → SQL

[](#import-csvxlsx--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

[](#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

[](#export-sql--csvxlsx)

```
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-raw-array--csvxlsx)

```
$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
---------------------

[](#importmanager-options)

OptionTypeDefaultDescription`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 sheetWorksheet name (xlsxToSql only)`formatDates``bool``true`Convert Excel date serials to YYYY-MM-DD (xlsxToSql only)ExportManager Options
---------------------

[](#exportmanager-options)

### CSV options (`sqlToCsv` / `dataToCsv`)

[](#csv-options-sqltocsv--datatocsv)

OptionTypeDefaultDescription`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`)

[](#xlsx-options-sqltoxlsx--datatoxlsx)

OptionTypeDefaultDescription`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
-------------

[](#local-testing)

```
# Install dependencies
composer install

# Run tests
composer test
```

Test database (for manual verification):

HostDatabaseUserPasswordPort`localhost``test-excel``root``your_secure_password``3306````
CREATE DATABASE IF NOT EXISTS `test-excel` CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
```

---

License
-------

[](#license)

MIT

jarir-ahmed-csv-xlsx-sql
========================

[](#jarir-ahmed-csv-xlsx-sql)

###  Health Score

34

—

LowBetter than 74% of packages

Maintenance90

Actively maintained with recent releases

Popularity1

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity33

Early-stage or recently created project

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Unknown

Total

1

Last Release

47d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/20700f34ff813055154e843bbdbe04d33320c1e6a81bbb3301cad67cb8350fd3?d=identicon)[jarircse16](/maintainers/jarircse16)

---

Top Contributors

[![jarir2020](https://avatars.githubusercontent.com/u/175597633?v=4)](https://github.com/jarir2020 "jarir2020 (1 commits)")

---

Tags

exportmysqlsqlexcelxlsxcsvconverterimport

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/jarir-ahmed-excel-sql-converter/health.svg)

```
[![Health](https://phpackages.com/badges/jarir-ahmed-excel-sql-converter/health.svg)](https://phpackages.com/packages/jarir-ahmed-excel-sql-converter)
```

###  Alternatives

[maatwebsite/excel

Supercharged Excel exports and imports in Laravel

12.7k162.0M971](/packages/maatwebsite-excel)[ddeboer/data-import

Import data from, and export data to, a range of file formats and media

5584.4M9](/packages/ddeboer-data-import)[portphp/portphp

Data import/export workflow

2833.1M33](/packages/portphp-portphp)[rah/danpu

Zero-dependency MySQL dump library for easily exporting and importing databases

62416.0k12](/packages/rah-danpu)[yajra/laravel-datatables-export

Laravel DataTables Queued Export Plugin.

362.3M4](/packages/yajra-laravel-datatables-export)[jgrygierek/batch-entity-import-bundle

Importing entities with preview and edit features for Symfony.

121.1M1](/packages/jgrygierek-batch-entity-import-bundle)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
