{"id":15308240,"url":"https://github.com/yidas/phpspreadsheet-helper","last_synced_at":"2025-05-16T11:04:47.570Z","repository":{"id":47681680,"uuid":"122324443","full_name":"yidas/phpspreadsheet-helper","owner":"yidas","description":"PHP Excel Helper - Write and read Spreadsheet with easy way based on PhpSpreadsheet","archived":false,"fork":false,"pushed_at":"2025-04-11T10:05:48.000Z","size":86,"stargazers_count":382,"open_issues_count":1,"forks_count":34,"subscribers_count":7,"default_branch":"master","last_synced_at":"2025-05-13T23:15:44.059Z","etag":null,"topics":["multiple-sheets","php","phpexcel","phpspreadsheet","spreadsheet"],"latest_commit_sha":null,"homepage":"https://yidas.github.io/phpspreadsheet-helper/","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/yidas.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-02-21T10:53:33.000Z","updated_at":"2025-04-11T10:05:46.000Z","dependencies_parsed_at":"2024-06-18T15:24:55.540Z","dependency_job_id":"fbc7efb1-ddbf-4e7b-99f1-3be29438e2bb","html_url":"https://github.com/yidas/phpspreadsheet-helper","commit_stats":{"total_commits":59,"total_committers":2,"mean_commits":29.5,"dds":0.03389830508474578,"last_synced_commit":"c1d42a466627131a553a122c0ee23097f14788a1"},"previous_names":[],"tags_count":22,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yidas%2Fphpspreadsheet-helper","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yidas%2Fphpspreadsheet-helper/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yidas%2Fphpspreadsheet-helper/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yidas%2Fphpspreadsheet-helper/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/yidas","download_url":"https://codeload.github.com/yidas/phpspreadsheet-helper/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254518384,"owners_count":22084374,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["multiple-sheets","php","phpexcel","phpspreadsheet","spreadsheet"],"created_at":"2024-10-01T08:14:56.721Z","updated_at":"2025-05-16T11:04:42.559Z","avatar_url":"https://github.com/yidas.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"PHPSpreadsheet Helper\n======================\n\nPHP Excel Helper - Write and read Spreadsheet with easy way based on PhpSpreadsheet\n\n[![Latest Stable Version](https://poser.pugx.org/yidas/phpspreadsheet-helper/v/stable?format=flat-square)](https://packagist.org/packages/yidas/phpspreadsheet-helper)\n[![License](https://poser.pugx.org/yidas/phpspreadsheet-helper/license?format=flat-square)](https://packagist.org/packages/yidas/phpspreadsheet-helper)\n[![Total Downloads](https://poser.pugx.org/yidas/phpspreadsheet-helper/downloads?format=flat-square)](https://packagist.org/packages/yidas/phpspreadsheet-helper)\n[![Monthly Downloads](https://poser.pugx.org/yidas/phpspreadsheet-helper/d/monthly?format=flat-square)](https://packagist.org/packages/yidas/phpspreadsheet-helper)\n\n\nThis library is a helper that encapsulate [PhpSpreadsheet](https://github.com/PHPOffice/PhpSpreadsheet) ([Documentation](https://phpspreadsheet.readthedocs.io/en/develop/)) for simple usage.\n\n---\n\nOUTLINE\n-------\n\n* [Demonstration](#demonstration)\n* [Installation](#installation)\n* [Requirements](#requirements)\n* [Usage](#usage)\n  - [Import \u0026 Export](#import--export)\n    - [newSpreadsheet()](#newspreadsheet)\n    - [output()](#output)\n    - [save()](#save)\n  - [Get Rows](#get-rows)\n    - [getRow()](#getrow)\n    - [getRows()](#getrows)\n  - [Add Rows](#add-rows)\n    - [addRow()](#addrow)\n    - [addRows()](#addrows)\n    - [Attributes](#attributes)\n  - [PhpSpreadsheet Original Usage Integration](#phpspreadsheet-original-usage-integration)\n    - [Inject PhpSpreadsheet](#inject-phpspreadsheet)\n    - [Extract PhpSpreadsheet](#extract-phpspreadsheet)\n  - [Merge Cells](#merge-cells)\n  - [Multiple Sheets](#multiple-sheets)\n    - [setSheet()](#setsheet)\n    - [getSheet()](#getsheet)\n  - [Map of Coordinates \u0026 Ranges](#multiple-sheets)\n  - [Style Attributes](#style-attributes)\n  - [Columns Format](#columns-format)\n  - [All Cells Format](#all-cells-format)\n    - [setStyle()](#setstyle)\n    - [setWrapText()](#setwraptext)\n    - [setAutoSize()](#setautosize)\n- [Limitations](#limitations)\n  - [Performance Issue](#performance-issue)\n\n---\n\nDEMONSTRATION\n-------------\n\n### Write to Excel\n\nOutput an Excel file to browser for download:\n\n```php\n\\yidas\\phpSpreadsheet\\Helper::newSpreadsheet()\n    -\u003eaddRow(['ID', 'Name', 'Email'])\n    -\u003eaddRows([\n        ['1', 'Nick','myintaer@gmail.com'],\n        ['2', 'Eric','eric@.....'],\n    ])\n    -\u003eoutput('My Excel');\n```\n\n\u003cimg src=\"https://raw.githubusercontent.com/yidas/phpspreadsheet-helper/master/img/demonstration.png\" /\u003e \n\n### Read from Excel\n\nImport above excel file and return two-dimensional array data contained rows \u003e columns spread sheet:\n\n```php\n$data = \\yidas\\phpSpreadsheet\\Helper::newSpreadsheet('/tmp/My Excel.xlsx')\n    -\u003egetRows();\n    \nprint_r($data);\n```\n\nOutput result:\n\n```\nArray\n(\n    [0] =\u003e Array\n        (\n            [0] =\u003e ID\n            [1] =\u003e Name\n            [2] =\u003e Email\n        )\n\n    [1] =\u003e Array\n        (\n            [0] =\u003e 1\n            [1] =\u003e Nick\n            [2] =\u003e myintaer@gmail.com\n        )\n\n    [2] =\u003e Array\n        (\n            [0] =\u003e 2\n            [1] =\u003e Eric\n            [2] =\u003e eric@.....\n        )\n\n)\n```\n\n---\n\nREQUIREMENTS\n------------\n\nThis library requires the following:\n\n- Dependent on [PhpSpreadsheet](https://phpspreadsheet.readthedocs.io/en/develop/#software-requirements)\n  - PHP 5.6.0+\n  - PHP extension php-zip enabled\n  - PHP extension php-xml enabled\n  - PHP extension php-gd2 enabled (if not compiled in)\n\n---\n\nINSTALLATION\n------------\n\nRun Composer in your project:\n\n    composer require yidas/phpspreadsheet-helper\n    \nThen you could call it after Composer is loaded depended on your PHP framework:\n\n```php\nrequire __DIR__ . '/vendor/autoload.php';\n\n\\yidas\\phpSpreadsheet\\Helper::newSpreadsheet();\n```\n    \n---\n\nUSAGE\n-----\n\n### Import \u0026 Export\n\nSimpliy read an Excel file then output to browser:\n\n```php\n\\yidas\\phpSpreadsheet\\Helper::newSpreadsheet('/tmp/excel.xlsx')\n    -\u003eaddRow(['Modified A1'])\n    -\u003eoutput();\n```\n\n#### newSpreadsheet()\n\nNew or load an PhpSpreadsheet object\n\n```php\npublic static array newSpreadsheet(object|string $spreadSheet=null)\n```\n\n#### output()\n\nOutput file to browser\n\n```php\npublic static void output(string $filename='excel', string $format='Xlsx')\n```\n\n*`$format` list: `Xlsx`, `Xls`, `Html`, `Csv`, `Ods`*\n\n#### save()\n\nSave as file\n\n```php\npublic static string save(string $filename='excel', string $format='Xlsx')\n```\n\n*Example:*\n\n```php\n\\yidas\\phpSpreadsheet\\Helper::newSpreadsheet()\n    -\u003eaddRow(['Add A1'])\n    -\u003esave(\"/tmp/save\");\n// /tmp/save.xlsx\n```\n\n### Get Rows\n\n#### getRow()\n\nGet data of a row from the actived sheet of PhpSpreadsheet\n\n```php\npublic static array getRow(boolean $toString=true, array $options=[], callable $callback=null)\n```\n\n*Example:*\n\n```php\nuse \\yidas\\phpSpreadsheet\\Helper;\n\n$row1 = Helper::newSpreadsheet($filepath)\n    -\u003egetRow();\n\n$row2 = Helper::getRow();\n\nprint_r($row1);\nprint_r($row2);\n```\n\n*Example of fetching content per each row ([Example Code](https://github.com/yidas/phpspreadsheet-helper/blob/master/demo/get-row-loop.php)):*\n\n```php\n$helper = \\yidas\\phpSpreadsheet\\Helper::newSpreadsheet($filepath);\n\nwhile ($row = $helper-\u003egetRow()) {\n    // Each row data process\n}\n```\n\n#### getRows()\n\nGet rows from the actived sheet of PhpSpreadsheet\n\n```php\npublic static array getRows(boolean $toString=true, array $options=[], callable $callback=null)\n```\n\n*[Example of getRows()](#read-from-excel)*\n\n\n### Add Rows\n\n#### addRow()\n\nAdd a row to the actived sheet of PhpSpreadsheet\n\n```php\npublic static self addRow(array $rowData, array $rowAttributes=null)\n```\n\n*`$rowData` value: An array contains string or [array of attributes](#attributes) for each cell*  \n*`$rowAttributes` value: string or [array of attributes](#attributes) for each cell of a row*\n\n*[Example of addRow()](#write-to-excel)*\n\n*Example of setting attributes for each cell:*\n\n```php\n\\yidas\\phpSpreadsheet\\Helper::newSpreadsheet()\n    -\u003eaddRow([['value'=\u003e'ID'], ['value'=\u003e'Name'], ['value'=\u003e'Email']])\n    -\u003eaddRow(['ID', 'Name', 'Email']);\n```\n\n*Example of setting attributes for each row:*\n\n```php\n\\yidas\\phpSpreadsheet\\Helper::newSpreadsheet()\n    // Set width as 25 to all cells of this row\n    -\u003eaddRow([['value'=\u003e'ID'], ['value'=\u003e'Name'], ['value'=\u003e'Email']], ['width'=\u003e25]);\n```\n\n#### addRows()\n\nAdd rows to the actived sheet of PhpSpreadsheet\n\n```php\npublic static self addRows(array $data, array $rowAttributes=null)\n```\n\n*`$data` value: array of each $rowData from `addRow()`*  \n*`$rowAttributes` value: string or [array of attributes](#attributes) for each row*\n\n*[Example of addRows()](#write-to-excel)*\n\n#### Attributes\n\nAttributes is a standard array for defining a cell or even a row, the keys are as follows:\n\n`key`, `value`, [`col`](#merge-cells), [`row`](#merge-cells), [`skip`](#merge-cells),  [`width`](#columns-format), [`style`](#style-attribute)\n\n### PhpSpreadsheet Original Usage Integration\n\nThis helper is flexible that you could inject or extract original PhpSpreadsheet with it, when you need to manipulate some Phpspreadsheet methods integrated with Helper.\n\n#### Inject PhpSpreadsheet\n\n```php\n// Get a new PhpSpreadsheet object\n$objSpreadsheet = new \\PhpOffice\\PhpSpreadsheet\\Spreadsheet;\n$objSpreadsheet-\u003egetProperties()\n    -\u003esetCreator(\"Nick Tsai\")\n    -\u003esetTitle(\"Office 2007 XLSX Document\");\n    \n// Get the actived sheet object from PhpSpreadsheet\n$objSheet = $objSpreadsheet-\u003esetActiveSheetIndex(0);\n$objSheet-\u003esetTitle('Sheet');\n$objSheet-\u003esetCellValue('A1', 'SN');\n\n// Inject PhpSpreadsheet Object and Sheet Object to Helper\n\\yidas\\phpSpreadsheet\\Helper::newSpreadsheet($objSpreadsheet)\n    -\u003esetSheet($objSheet)\n    -\u003esetRowOffset(1) // Point to 1nd row from 0\n    -\u003eaddRows([\n        ['1'],\n        ['2'],\n    ])\n    -\u003eoutput();\n```\n\n#### Extract PhpSpreadsheet\n\n```php\nuse \\yidas\\phpSpreadsheet\\Helper;\n\nHelper::newSpreadsheet()\n    -\u003esetSheet(0, 'Sheet')\n    -\u003eaddRow(['SN']);\n    \n// Get the PhpSpreadsheet object created by Helper\n$objSpreadsheet = Helper::getSpreadsheet();\n$objSpreadsheet-\u003egetProperties()\n    -\u003esetCreator(\"Nick Tsai\")\n    -\u003esetTitle(\"Office 2007 XLSX Document\");\n    \n// Get the actived sheet object created by Helper\n$objSheet = Helper::getSheet();\n$objSheet-\u003esetCellValue('A2', '1');\n$objSheet-\u003esetCellValue('A3', '2');\n\nHelper::output();\n```\n\n### Merge Cells\n\nIt's easy to merge cells by defining each cell's span attributes:\n\n- `row` : Number of rowspan cells to merge with  \n- `col` : Number of colspan cells to merge with  \n- `skip` : Number of colspan cells to merge with  \n\n```php\n\\yidas\\phpSpreadsheet\\Helper::newSpreadsheet()\n    -\u003eaddRows([\n        [['value'=\u003e'SN', 'row'=\u003e2], ['value'=\u003e'Language', 'col'=\u003e2], ['value'=\u003e'Block', 'row'=\u003e2, 'col'=\u003e2]],\n        ['','English','繁體中文',['skip'=\u003e2]],\n    ])\n    -\u003eaddRows([\n        ['1', 'Computer','電腦','#15'],\n        ['2', 'Phone','手機','#4','#62'],\n    ])\n    -\u003eoutput('Merged Excel');\n```\n\n### Multiple Sheets\n\n#### setSheet()\n\nSet an active PhpSpreadsheet Sheet\n\n```php\npublic static self setSheet($sheet=0, $title=NULL, $normalizeTitle=false)\n```\n\n#### getSheet()\n\nGet PhpSpreadsheet Sheet object from cache\n\n```php\npublic static object getSheet($identity=null, $autoCreate=false)\n```\n\n*Example:*\n\n```php\nuse \\yidas\\phpSpreadsheet\\Helper;\n\nHelper::newSpreadsheet()\n    -\u003esetSheet(0, 'First Sheet')\n    -\u003eaddRow(['Sheet Index', 'Sheet Count'])\n    -\u003eaddRows([\n        [Helper::getActiveSheetIndex(), Helper::getSheetCount()],\n    ]);\n    \n// Set another sheet object without giving index \nHelper::setSheet(null, '2nd Sheet')\n    -\u003eaddRow(['Sheet Index', 'Sheet Count'])\n    -\u003eaddRows([\n        [Helper::getActiveSheetIndex(), Helper::getSheetCount()],\n    ]);\n    \n// Get a sheet which does not exsit with auto creating it  \n$obj = Helper::getSheet('3nd Sheet', true);\n\n// Set a sheet with the title which has been auto-normalized\nHelper::setSheet(null, '*This [sheet] name has been auto-nomalizing', true)\n    -\u003eaddRow(['Sheet Index', 'Sheet Count'])\n    -\u003eaddRows([\n        [Helper::getActiveSheetIndex(), Helper::getSheetCount()],\n    ]);\n\nHelper::output('MultiSheets');\n```\n\n* `getActiveSheetIndex()`: Get active sheet index\n* `getSheetCount()`: Get sheet count\n\n### Map of Coordinates \u0026 Ranges\n\n```php\nuse \\yidas\\phpSpreadsheet\\Helper;\n\nHelper::newSpreadsheet()\n    -\u003eaddRows([\n        [\n            ['value'=\u003e'SN', 'row'=\u003e2, 'key'=\u003e'sn'], \n            ['value'=\u003e'Language', 'col'=\u003e2, 'key'=\u003e'lang'], \n            ['value'=\u003e'Block', 'row'=\u003e2, 'col'=\u003e2, 'key'=\u003e'block'],\n        ],\n        [   \n            '',\n            ['value'=\u003e'English', 'key'=\u003e'lang-en'],\n            ['value'=\u003e'繁體中文', 'key'=\u003e'lang-zh'],\n            ['skip'=\u003e2, 'key'=\u003e'block-skip'],\n        ],\n    ])\n    -\u003eaddRows([\n        ['1', 'Computer','電腦','#15'],\n        ['2', 'Phone','手機','#4','#62'],\n    ]);\n// -\u003eoutput('Merged Excel');  \n\nprint_r(Helper::getCoordinateMap());\nprint_r(Helper::getRangeMap());\n// print_r(Helper::getColumnMap());\n// print_r(Helper::getRowMap());\necho \"sn start cell: \". Helper::getCoordinateMap('sn');\necho \"\\nsn start column: \". Helper::getColumnMap('sn');\necho \"\\nsn start row: \". Helper::getRowMap('sn');\necho \"\\nsn range: \". Helper::getRangeMap('sn');\necho \"\\nAll range: \". Helper::getRangeAll(); \n```\n\nThe result could be:\n\n```\nArray\n(\n    [sn] =\u003e A1\n    [lang] =\u003e B1\n    [block] =\u003e D1\n    [lang-en] =\u003e B2\n    [lang-zh] =\u003e C2\n    [block-skip] =\u003e D2\n)\nArray\n(\n    [sn] =\u003e A1:A2\n    [lang] =\u003e B1:C1\n    [block] =\u003e D1:E2\n    [lang-en] =\u003e B2:B2\n    [lang-zh] =\u003e C2:C2\n    [block-skip] =\u003e D2:E2\n)\nsn start cell: A1\nsn start column: A\nsn start row: 1\nsn range: A1:A2\nAll range: A1:E4\n```\n\n### Style Attributes\n\nThe style attribute could be set on a [single cell](#addrow), a [single row](#addrow) or even a [range of cells](#setstyle).\n\n* `style`: a attribute refers to `applyFromArray()` for styling\n\n```php\n\\yidas\\phpSpreadsheet\\Helper::newSpreadsheet()\n    // Each cell with each style attributes\n    -\u003eaddRow([\n        'Percentage', \n        '10%', \n        ['value'=\u003e'content', 'style'=\u003e [\n            'font' =\u003e [\n                'bold' =\u003e true,\n                'color' =\u003e ['argb' =\u003e 'FFFF0000']\n            ],\n            'alignment' =\u003e ['horizontal' =\u003e 'right'],\n            'borders' =\u003e [\n                'top' =\u003e ['borderStyle' =\u003e 'thin'],\n            ],\n            'fill' =\u003e [\n                'fillType' =\u003e 'linear',\n                'rotation' =\u003e 90,\n                'startColor' =\u003e ['argb' =\u003e 'FFA0A0A0'],\n                'endColor' =\u003e ['argb' =\u003e 'FFFFFFFF'],\n            ],\n        ]],\n        ['value'=\u003e'10000', 'style'=\u003e [\n            'numberFormat' =\u003e [\n                'formatCode' =\u003e '#,##0',\n            ],\n        ]],\n    ])\n    // Row with thousands separator format style\n    -\u003eaddRow(['1000', '2000', '3000', '4000'], ['style' =\u003e [\n        'numberFormat' =\u003e [\n            // const FORMAT_NUMBER_COMMA_SEPARATED1 = '#,##0.00';\n            'formatCode' =\u003e \\PhpOffice\\PhpSpreadsheet\\Style\\NumberFormat::FORMAT_NUMBER_COMMA_SEPARATED1,\n        ],\n    ]]) \n    // Row with percentage format style\n    -\u003eaddRow(['0.1', '0.15', '0.3145', '0.855'], ['style' =\u003e [\n        'numberFormat' =\u003e [\n            // const FORMAT_PERCENTAGE_00 = '0.00%';\n            'formatCode' =\u003e \\PhpOffice\\PhpSpreadsheet\\Style\\NumberFormat::FORMAT_PERCENTAGE_00,\n        ],\n    ]]) \n    -\u003eoutput();\n```\n\n\u003e Style array key/value/constant refers [Valid array keys for style `applyFromArray()`](https://phpspreadsheet.readthedocs.io/en/develop/topics/recipes/#valid-array-keys-for-style-applyfromarray) or [Source Classes](https://github.com/PHPOffice/PhpSpreadsheet/tree/master/src/PhpSpreadsheet/Style)\n\n### Columns Format\n\nThe options for each cell data:\n\n* `width`: setWidth() for the column\n\n```php\n\\yidas\\phpSpreadsheet\\Helper::newSpreadsheet()\n    -\u003eaddRow([['value'=\u003e'ID', 'width'=\u003e10], ['value'=\u003e'Name', 'width'=\u003e25], ['value'=\u003e'Email', 'width'=\u003e50]])\n    -\u003eaddRows([\n        ['1', 'Nick','myintaer@gmail.com'],\n        ['2', 'Eric','eric@.....'],\n    ])\n    -\u003eoutput('My Excel'); \n```\n\n### All Cells Format\n\nThis section focuses on applying all actived cells or ranged cells on the sheet, not just effecting single cell, row or column.\n\n#### setStyle()\n\nSet Style for all actived cells or set by giving range to the actived sheet\n\n```php\npublic static self setStyle(array $styleArray, string $range=NULL)\n```\n\n*Example:*\n\n```php\n\\yidas\\phpSpreadsheet\\Helper::newSpreadsheet()\n    -\u003eaddRow(['Title', 'Content'])\n    -\u003eaddRows([\n        ['Basic Plan', \"*Interface\\n*Search Tool\"],\n        ['Advanced Plan', \"*Interface\\n*Search Tool\\n*Statistics\"],\n    ])\n    -\u003esetWrapText()\n    // -\u003esetWrapText('B2')\n    -\u003esetAutoSize()\n    // -\u003esetAutoSize('B')\n    -\u003esetStyle([\n        'borders' =\u003e [\n            'inside' =\u003e ['borderStyle' =\u003e 'hair'],\n            'outline' =\u003e ['borderStyle' =\u003e 'thin'],\n        ],\n        'fill' =\u003e [\n            'fillType' =\u003e 'solid',\n            'startColor' =\u003e ['argb' =\u003e 'FFCCCCCC'],\n        ],\n    ])\n    -\u003eoutput('Formatted Excel');  \n```\n\n#### setWrapText()\n\nSet WrapText for all actived cells or set by giving range to the actived sheet\n\n```php\npublic static self setWrapText(string $range=NULL, string $value=true)\n```\n\n#### setAutoSize()\n\nSet AutoSize for all actived cells or set by giving column range to the actived sheet\n\n```php\npublic static self setAutoSize(string $colAlphaStart=NULL, string $colAlphaEnd=NULL, boolean $value=true)\n```\n\n---\n\nLIMITATIONS\n-----------\n\n### Performance Issue\n\nIf you're building large cell data with XLSX, you may face performance issue with memory usage and execution time.\n\n[box/spout](https://github.com/box/spout) spreadsheet lirary supports building Excel file with high performance, you could use this library instead if you do not need more style and formatting requirements.\n\n\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyidas%2Fphpspreadsheet-helper","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fyidas%2Fphpspreadsheet-helper","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyidas%2Fphpspreadsheet-helper/lists"}