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

ExcelWriter taking SplFileObject as argument and deleting it - unlink issue

Open tmilos opened this issue 9 years ago • 3 comments

ExcelWriter takes \SplFileObject as argument in constructor, but use it only to take filename. By default it uses Excel2007 type, which if file exists, unlinks it before reopening it, which results in error since SplFileObject created the file and opened handle on it.

Suggested solution, change ExcelWriter::__constructor to take argument string filename, rathen then\SplFileObject $file``

$filename = sprintf('%s/%s.xls', sys_get_temp_dir(), sha1(strtotime('now')));
$file = new \SplFileObject($name, 'w');
$result = $workflow
    ->addWriter(new ExcelWriter($fileObject, null, 'Excel2007'))
    ->process();

Warning: unlink(C:\Temp/7344836b29cf1d3e8f20a2b4e8aa889ebef69766.xls): Permission denied
in vendor/phpoffice/phpexcel/Classes/PHPExcel/Writer/Excel2007.php at line 229
lib version
ddeboer/data-import 0.18.0
phpoffice/phpexcel 1.8.1
php 5.5.19 win32

tmilos avatar Sep 23 '15 12:09 tmilos

Feel free to open a PR!

Baachi avatar Sep 23 '15 20:09 Baachi

The following works for me:

   $writer
            ->prepare()
            ->writeItem(array('first', 'last'));

        unset($file);

        $writer->finish();

PH-Lars avatar Oct 12 '15 09:10 PH-Lars

How does you resolve that problem of export file in excel: Warning : unlink(D:\test\data.xlsx): Permission denied in in vendor\phpoffice\phpexcel\Classes\PHPExcel\Writer\Excel2007.php at line 236 .

`$workflow = new Workflow($reader);

        $file = new \SplFileObject('D:\test\data.xlsx', 'w');
        $writer = new ExcelWriter($file);

      $workflow->addWriter($writer);
        $workflow->process();`

Marou023 avatar Jun 08 '16 11:06 Marou023