# How can I use the following classes into controller?

**URL:** <https://discourse.cakephp.org/t/how-can-i-use-the-following-classes-into-controller/6317>\
**Category:** Need Help\
**Created:** [June 28, 2019, 12:16pm UTC](https://discourse.cakephp.org/t/how-can-i-use-the-following-classes-into-controller/6317 "2019-06-28T12:16:52Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![spadeX](https://avatars.discourse-cdn.com/v4/letter/s/919ad9/32.png) [@spadeX](https://discourse.cakephp.org/u/spadeX)\
**Post date:** [June 28, 2019, 12:16pm UTC](https://discourse.cakephp.org/t/how-can-i-use-the-following-classes-into-controller/6317/1 "2019-06-28T12:16:52Z")

</div>

How can I use the following classes into controller ?  
Their is no composer to use that classes

[https://github.com/nuovo/spreadsheet-reader](https://github.com/nuovo/spreadsheet-reader)

I use the Use

```
use vendor\phpreader\excel_reader2;
use vendor\phpreader\SpreadsheetReader;

```

But get an error class not found  
I included those file into same folder structure.

---

<div class="post-metadata">

**Author:** ![raul338](https://yyz1.discourse-cdn.com/flex029/user_avatar/discourse.cakephp.org/raul338/32/69_2.png) [@raul338](https://discourse.cakephp.org/u/raul338)\
**Post date:** [June 28, 2019, 11:39pm UTC](https://discourse.cakephp.org/t/how-can-i-use-the-following-classes-into-controller/6317/2 "2019-06-28T23:39:34Z")

</div>

Better use [PhpSpreadsheed](https://github.com/PHPOffice/PhpSpreadsheet), it has better support

---

<div class="post-metadata">

**Author:** ![spadeX](https://avatars.discourse-cdn.com/v4/letter/s/919ad9/32.png) [@spadeX](https://discourse.cakephp.org/u/spadeX)\
**Post date:** [June 29, 2019, 5:28am UTC](https://discourse.cakephp.org/t/how-can-i-use-the-following-classes-into-controller/6317/3 "2019-06-29T05:28:30Z")

</div>

Already used [PhpSpreadsheed](https://github.com/PHPOffice/PhpSpreadsheet), but can’t save that array into database. Here is code

```
$contractor = $this->Contractors->newEntity(); 
$contractor = $this->Contractors->patchEntity($contractor,$namedDataArray);
```

---

<div class="post-metadata">

**Author:** ![raul338](https://yyz1.discourse-cdn.com/flex029/user_avatar/discourse.cakephp.org/raul338/32/69_2.png) [@raul338](https://discourse.cakephp.org/u/raul338)\
**Post date:** [June 29, 2019, 3:43pm UTC](https://discourse.cakephp.org/t/how-can-i-use-the-following-classes-into-controller/6317/4 "2019-06-29T15:43:30Z")

</div>

what is $namedDataArray???

I have something like this

```php
$columns = [
    'name' => 1,
    'title' => 2,
    'slug' => 3,
];
foreach ($columns as $colName => $colPos) {
    $article[$colName] = $worksheet
        ->getCellByColumnAndRow($colPos + 1, $i)
        ->getCalculatedValue();
}
$this->Articles->save($article);

```

---

<div class="post-metadata">

**Author:** ![spadeX](https://avatars.discourse-cdn.com/v4/letter/s/919ad9/32.png) [@spadeX](https://discourse.cakephp.org/u/spadeX)\
**Post date:** [July 2, 2019, 9:30am UTC](https://discourse.cakephp.org/t/how-can-i-use-the-following-classes-into-controller/6317/5 "2019-07-02T09:30:27Z")

</div>

The array is showing as  
Array  
(  
[1] =\> Array  
(  
[user\_name] =\> [xyz@gmail.com](mailto:xyz@gmail.com)  
[password] =\> 1234  
[company\_name] =\> dell  
[company\_tin] =\> stack3  
[addressline\_1] =\> View street  
[addressline\_2] =\> mountain rd  
[city] =\> PN  
[state\_id] =\> PN  
[country\_id] =\> 3  
[State\_id] =\> 5  
[zip] =\> 78445  
[pri\_contact\_fn] =\> Vinay  
[pri\_contact\_ln] =\> Patil  
[pri\_contact\_title] =\> President  
[pri\_contact\_pn] =\> 25655644  
[is\_safety\_sensitive] =\> 1  
)  
)

///// This is my code ///  
public function readexcel()  
{  
$contractor = $this-\>Contractors-\>newEntity();

```
   $reader = \PhpOffice\PhpSpreadsheet\IOFactory::createReader('Xlsx');
   $reader->setReadDataOnly(TRUE);
   $spreadsheet = $reader->load(EXPORT_IMG.'demoCont.xlsx');
   $worksheet = $spreadsheet->getActiveSheet();
    
    $header=true;
    if ($header) {
       $highestRow = $worksheet->getHighestRow();
       $highestColumn = $worksheet->getHighestColumn();

        $headingsArray = $worksheet->rangeToArray('A1:' . $highestColumn . '1', null, true, true, true);
        $headingsArray = $headingsArray[1];
        $r = -1;
       
        for ($row = 2; $row <= $highestRow; ++$row) {
            $dataRow = $worksheet->rangeToArray('A' . $row . ':' . $highestColumn . $row, null, true, true, true);
            if ((isset($dataRow[$row]['A'])) && ($dataRow[$row]['A'] > '')) {
                ++$r;
                foreach ($headingsArray as $columnKey => $columnHeading) {
                    $namedDataArray[$r][$columnHeading] = $dataRow[$row][$columnKey];
                    

                    

                  // pr($contractor);
                   
                }
            }
        }
        } else {
            //excel sheet with no header
            $namedDataArray = $worksheet->toArray(null, true, true, true);
        }
        $contractor = $this->Contractors->patchEntity($contractor, $this->request->getData($namedDataArray));
```
