I have a problem with PHPExcel: in order to use a large template XLSX file with PHPExcel, I tried to use setLoadSheetsOnly, but the XLSX output file contained only the sheets declared in setLoadSheetsOnly, all the others were missing.
I'll try to explain better. I have a template XLSX file with, say, 5 worksheets: "alpha","beta", "gamma", "delta", "epsilon". If I load the entire file the script will go out of memory so, since I only need to write on "beta" and "epsilon" sheets, I used setLoadSheetsOnly:
$inputFileName = '/srv/www/htdocs/exceltest/templates/template5.xlsx';
$worksheets=array('beta','epsilon');
$objReader->setLoadSheetsOnly($worksheets);
$objPHPExcel = $objReader->load($inputFileName);
// the above code is only explicative
...
The result (the file created by the script) is an excel file containing only "beta" and "epsilon" worksheets, with all the others apparently lost. That's not what I wanted, of course.
Am I missing something, is there a workaround of some kind or I am using the wrong method?
Thank you very much.
The whole point of setLoadSheetsOnly()
is to load only the specified worksheets, and not to load any other worksheets. That's exactly what it does: there is no "workround", because it's doing exactly what it's supposed to do.
If you're trying to reduce memory usage, then look to the cell caching methods described in the documentation, and find which of those works best for your situation, depending on the version of PHP you're using, the modules you have available, the memory you have available, and the memory required for your template.