data-import icon indicating copy to clipboard operation
data-import copied to clipboard

ExcelWriter unwanted Worksheet (feature request)

Open stevegroom opened this issue 9 years ago • 1 comments

When using the excelWriter class and naming the worksheet:

$writer = new ExcelWriter($file,'Named Sheet');

The resulting Excel file includes an empty worksheet called 'worksheet' to the left of 'Named Sheet'.

In my file explorer, the preview is showing the empty 'worksheet'

Can you expose a method to remove it ? In the phpoffice/phpexcel the function is described:

$sheetIndex = $objPHPExcel->getIndex(
    $objPHPExcel->getSheetByName('Worksheet 1')
);
$objPHPExcel->removeSheetByIndex($sheetIndex);

stevegroom avatar Sep 21 '15 07:09 stevegroom

The additional worksheet is created automatically in the construct of the PHPExcel class. The issue can be solved editing the function 'prepare' in the ExcelWriter class.

public function prepare()
    {
        $reader = PHPExcel_IOFactory::createReader($this->type);
        if ($reader->canRead($this->filename)) {
            $this->excel = $reader->load($this->filename);
        } else {
            $this->excel = new PHPExcel();
            /********* Fix start *********/
            if(null !== $this->sheet && !$this->excel->sheetNameExists($this->sheet))
            {
                $this->excel->removeSheetByIndex(0);
            }
            /********* Fix end *********/
        }

        if (null !== $this->sheet) {
            if (!$this->excel->sheetNameExists($this->sheet)) {
                $this->excel->createSheet()->setTitle($this->sheet);
            }
            $this->excel->setActiveSheetIndexByName($this->sheet);
        }

        return $this;
    }

A pull request has been opened: https://github.com/ddeboer/data-import/pull/273

fbdnl avatar Oct 14 '15 17:10 fbdnl