/**
  * @param null|int $index
  * @param null|mixed $value
  * @param null|array $properties
  *
  * @throws \PHPExcel_Exception
  */
 public function start($index = null, $value = null, array $properties = null)
 {
     if ($this->sheetWrapper->getObject() === null) {
         throw new \LogicException();
     }
     if ($index !== null && !is_int($index)) {
         throw new \InvalidArgumentException();
     }
     if ($index === null) {
         $this->sheetWrapper->increaseColumn();
     } else {
         $this->sheetWrapper->setColumn($index);
     }
     $this->object = $this->sheetWrapper->getObject()->getCellByColumnAndRow($this->sheetWrapper->getColumn(), $this->sheetWrapper->getRow());
     if ($value !== null) {
         $this->object->setValue($value);
     }
     if ($properties !== null) {
         $this->setProperties($properties, $this->mappings);
     }
     $this->attributes['value'] = $value;
     $this->attributes['properties'] = $properties ?: [];
 }
 public function end()
 {
     $this->sheetWrapper->setColumn(null);
 }