Я использую PHPexcel_1.8 для создания Microsoft Excel 97-2003 Worksheet (.xls)
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
$objWriter->save($myFile);
Если я открою файл и нажму СУУ+s (без каких-либо изменений), размер падает почти до 50%.
Просто …. PHPExcel не тратит драгоценные накладные ресурсы PHP на скорость и использование памяти для оптимизации хранения файловых данных; тогда как MS Excel уменьшит требования к размеру файлов за счет оптимизации хранилища. Создание собственного файла формата Excel в PHP идет медленно и требует много памяти
Как пример этого, все строковые данные хранятся в общей таблице строк. Когда две или более ячейки содержат одинаковое строковое значение, MS Excel будет указывать им обеим на одну и ту же запись в таблице общих строк, так что строковые данные сохраняются только один раз. PHPExcel не выполняет эту проверку, чтобы увидеть, находится ли строковое значение в таблице общих строк, но просто создает новую запись, поэтому строка сохраняется дважды. Это сокращает время, затрачиваемое на сохранение данных, за счет устранения накладных расходов, связанных с проверкой строки, уже находящейся в таблице, но за счет дублирования и, следовательно, размера файла.
Ключевой вопрос «что важнее? Чтобы иметь возможность читать / редактировать / записывать нативные файлы Excel в PHP? Чтобы PHPExcel работал как можно быстрее и с меньшим объемом памяти?»
Или иметь наименьший возможный размер файла на диске? «
Других решений пока нет …