-
Notifications
You must be signed in to change notification settings - Fork 6
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Marcel Hauri
committed
Nov 7, 2016
0 parents
commit babd09e
Showing
8 changed files
with
251 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,88 @@ | ||
<?php | ||
|
||
namespace Staempfli\Spreadsheet\Model; | ||
|
||
use Akeneo\Component\SpreadsheetParser\SpreadsheetParser; | ||
|
||
/** | ||
* Class Reader | ||
* @package Staempfli\Spreadsheet\Model\Spreadsheet | ||
*/ | ||
class Parser | ||
{ | ||
/** | ||
* @var array | ||
*/ | ||
protected $data = []; | ||
/** | ||
* @var $spreadsheet \Akeneo\Component\SpreadsheetParser\Xlsx\Spreadsheet | \Akeneo\Component\SpreadsheetParser\Csv\Spreadsheet | ||
*/ | ||
protected $spreadsheet; | ||
/** | ||
* @var | ||
*/ | ||
protected $worksheet; | ||
/** | ||
* @var SpreadsheetParser | ||
*/ | ||
protected $spreadsheetParser; | ||
|
||
/** | ||
* Reader constructor. | ||
* @param SpreadsheetParser $spreadsheetParser | ||
*/ | ||
public function __construct( | ||
SpreadsheetParser $spreadsheetParser | ||
) { | ||
$this->spreadsheetParser = $spreadsheetParser; | ||
} | ||
|
||
/** | ||
* @param $file | ||
* @param int $worksheetIndex | ||
* @return array | ||
*/ | ||
public function readFile($file, $worksheetIndex = 0) | ||
{ | ||
$this->spreadsheet = $this->spreadsheetParser->open($file); | ||
return $this->getWorksheetData($worksheetIndex); | ||
} | ||
|
||
/** | ||
* @return \Akeneo\Component\SpreadsheetParser\Csv\Spreadsheet|\Akeneo\Component\SpreadsheetParser\Xlsx\Spreadsheet | ||
*/ | ||
public function getSpreadsheet() | ||
{ | ||
return $this->spreadsheet; | ||
} | ||
|
||
/** | ||
* @return array|bool|\string[] | ||
*/ | ||
public function getWorksheets() | ||
{ | ||
if ($this->spreadsheet) { | ||
return $this->spreadsheet->getWorksheets(); | ||
} | ||
return false; | ||
} | ||
|
||
/** | ||
* @param int $worksheetIndex | ||
* @return array | ||
*/ | ||
public function getWorksheetData($worksheetIndex = 0) | ||
{ | ||
if (is_string($worksheetIndex)) { | ||
$worksheetIndex = $this->spreadsheet->getWorksheetIndex($worksheetIndex); | ||
} | ||
$this->worksheet = $this->spreadsheet->createRowIterator($worksheetIndex); | ||
|
||
if (!$this->data) { | ||
foreach ($this->worksheet as $index => $rows) { | ||
$this->data[$index] = $rows; | ||
} | ||
} | ||
return $this->data; | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,66 @@ | ||
<?php | ||
|
||
namespace Staempfli\Spreadsheet\Model; | ||
|
||
use Magento\Framework\File\UploaderFactory; | ||
use Magento\Framework\Filesystem; | ||
use Magento\ImportExport\Model\Import; | ||
use Magento\Framework\App\Filesystem\DirectoryList; | ||
|
||
class Uploader | ||
{ | ||
const STORAGE_DIR = 'spreadsheet/'; | ||
/** | ||
* @var string | ||
*/ | ||
protected $file = ''; | ||
/** | ||
* @var Filesystem\Directory\WriteInterface | ||
*/ | ||
protected $uploadDir; | ||
/** | ||
* @var UploaderFactory | ||
*/ | ||
protected $uploaderFactory; | ||
/** | ||
* @var Filesystem | ||
*/ | ||
protected $filesystem; | ||
|
||
/** | ||
* Upload constructor. | ||
* @param UploaderFactory $uploaderFactory | ||
* @param Filesystem $filesystem | ||
*/ | ||
public function __construct( | ||
UploaderFactory $uploaderFactory, | ||
Filesystem $filesystem | ||
) { | ||
$this->uploaderFactory = $uploaderFactory; | ||
$this->filesystem = $filesystem; | ||
$this->uploadDir = $filesystem->getDirectoryWrite(DirectoryList::VAR_DIR); | ||
} | ||
|
||
/** | ||
* @param array $params | ||
* @return string | ||
* @throws \Exception | ||
*/ | ||
public function upload($params = ['fileId' => 'file']) | ||
{ | ||
/** @var $uploader \Magento\Framework\File\Uploader */ | ||
$uploader = $this->uploaderFactory->create($params); | ||
$saveDir = $this->uploadDir->getAbsolutePath(self::STORAGE_DIR); | ||
$result = $uploader->save($saveDir); | ||
$this->file = $result['path'] . $result['file']; | ||
return $this->file; | ||
} | ||
|
||
/** | ||
* @return string | ||
*/ | ||
public function getFile() | ||
{ | ||
return $this->file; | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,47 @@ | ||
Magento 2 Spreadsheet Parser | ||
============= | ||
|
||
Facts | ||
----- | ||
Parse XLSX, XLSM and CSV Files from Excel | ||
|
||
Requirements | ||
------------ | ||
- PHP >= 7.0.* | ||
- Magento >= 2.1.* | ||
|
||
Compatibility | ||
------------- | ||
- Magento >= 2.1 | ||
|
||
Usage | ||
----- | ||
Load Uploader and Parser via DI, so they can be used in your method. | ||
|
||
```php | ||
$file = $this->uploader->upload(['fileId' => \Magento\ImportExport\Model\Import::FIELD_NAME_SOURCE_FILE]); | ||
$data = $this->parser->readFile($file); | ||
foreach ($data as $index => $values) { | ||
var_dump($index, $values); | ||
} | ||
``` | ||
|
||
Support | ||
------- | ||
If you have any issues with this extension, open an issue on [GitHub](https://github.com/staempfli/magento2-module-spreadsheet/issues). | ||
|
||
Contribution | ||
------------ | ||
Any contribution is highly appreciated. The best way to contribute code is to open a [pull request on GitHub](https://help.github.com/articles/using-pull-requests). | ||
|
||
Developer | ||
--------- | ||
Staempfli Webteam and all other [contributors](https://github.com/staempfli/magento2-module-spreadsheet/contributors) | ||
|
||
License | ||
------- | ||
[Open Software License ("OSL") v. 3.0](https://opensource.org/licenses/OSL-3.0) | ||
|
||
Copyright | ||
--------- | ||
(c) 2016, Stämpfli AG |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
<?php | ||
|
||
namespace Staempfli\Spreadsheet\Test\Unit\Model; | ||
|
||
class ParserTest extends \PHPUnit_Framework_TestCase | ||
{ | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
<?php | ||
|
||
namespace Staempfli\Spreadsheet\Test\Unit\Model; | ||
|
||
class UploaderTest extends \PHPUnit_Framework_TestCase | ||
{ | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,27 @@ | ||
{ | ||
"name": "staempfli/magento2-module-spreadsheet", | ||
"description": "Magento 2 Module for parsing xlsx, xlsm and csv files from Excel", | ||
"require": { | ||
"php": "~7.0.0", | ||
"akeneo-labs/spreadsheet-parser": "^1.2" | ||
}, | ||
"type": "magento2-module", | ||
"license": [ | ||
"OSL-3.0", | ||
"AFL-3.0" | ||
], | ||
"authors": [ | ||
{ | ||
"name": "Marcel Hauri", | ||
"email": "marcel.hauri@staempfli.com" | ||
} | ||
], | ||
"autoload": { | ||
"files": [ | ||
"registration.php" | ||
], | ||
"psr-4": { | ||
"Staempfli\\Spreadsheet\\": "" | ||
} | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Module/etc/module.xsd"> | ||
<module name="Staempfli_Spreadsheet" setup_version="1.0.0" /> | ||
</config> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
<?php | ||
\Magento\Framework\Component\ComponentRegistrar::register( | ||
\Magento\Framework\Component\ComponentRegistrar::MODULE, | ||
'Staempfli_Spreadsheet', | ||
__DIR__ | ||
); |