PHPExcel не открывается созданный xls файл

kostikmal

Новичок
Добрый день!
Есть сайт, на сайте есть библиотека PHPExcel 1.7.9, и есть генерация *.xlsx файла, она работает без проблем и файл открывается тоже без проблем.
Есть задача: на этом сайте дополнительно сделать генерацию того-же файла в формате *.xls
Файл генерируется но при открытие ОпенОфис выдает ошибку "Общая ошибка ввода-вывода" (соответственно не открывает), MS Excel тоже не открывает, говорит что-то типа "данные повреждены". Файл не пустой.
генерацию делаю вот так
$objWriter2003 = PHPExcel_IOFactory::createWriter($e, 'Excel5');
$objWriter2003->save($_SERVER["DOCUMENT_ROOT"].'/upload/pricelist_autogenetate/price'.$priceID.'.xls');

Как мне это исправить?
 

WMix

герр M:)ller
Партнер клуба
внутри не пустого файла если почитать никаких ворнунгов или нотисов не видно?
 

WMix

герр M:)ller
Партнер клуба
ну не знаю чем помочь, напиши чтоль простой файл который hello world в экселе пишет и экспортни хоть пообсуждать будет что.
так вроде твои 2 строчки правильные
 

флоппик

promotor fidei
Команда форума
Партнер клуба
Excel5 - это очень-очень древний формат экселя 95/97+. Этот формат не умеет утф, и там нужно явно указывать кодировки, и т.п.
 

scorpion-ds

Новичок
Да нет, PHPExcel сам по себе умный скрипт, ничего дополнительно указывать не надо, все что надо он укажет сам.
 

флоппик

promotor fidei
Команда форума
Партнер клуба
Не укажет. Откуда ему знать, в какой кодировке ты хочешь файл получить? Данные, естественно, тоже самому перекодировать надо перед этим.
 

scorpion-ds

Новичок
PHP:
$objWriter2003->save($_SERVER["DOCUMENT_ROOT"].'/upload/pricelist_autogenetate/price'.$priceID.'.xls');
Файл сохраняется на диск, если в поток вернуть надо, то там стандартные заголовки надо указать + формат файла.
Я сохранял в этом формате, ни каких проблем не было и кодировку не указывал, это давно было, но не думаю, что там поменялось что-то.
 

kostikmal

Новичок
Проблема была в следующем: PHPExcel для работы нужно mbstring.func_overload == 0, а Битриску mbstring.func_overload == 2. Сделали в отдельной папочке mbstring.func_overload =2 и все заработало как надо.
 
Сверху