Генерирую и выгружаю .xls файл через старый класс Spreadsheet_Excel_Writer() следующим образом:
$xls = new Spreadsheet_Excel_Writer();
$xls->setVersion(8);
$sheet = $xls->addWorksheet(iconv('UTF-8', 'Windows-1251','list'));
$sheet->setInputEncoding('CP1251');
$sheet->write( 0, 0, iconv( 'UTF-8', 'Windows-1251', 'Тест' ) );
$sheet->write( 1, 0, iconv( 'UTF-8', 'Windows-1251', 'Тест2' ) );
$sheet->write( 2, 0, iconv( 'UTF-8', 'Windows-1251', 'test' ) );
$xls->send( 'test.xls' );
$xls->close();
Excel 2007 на Windows 7 отказывается открывать данный файл ("файл имеет неверный формат" или что-то такое), однако LibreOffice в Ubuntu открывает и отображает файл отлично, с нужной кодировкой даже. Пытался всячески менять кодировки, версии и прочее - не помогло.
В чем может быть проблема?
Ответ
На самом деле, может быть проблема в типе данных, которые Вы пытаетесь сохранить.
Попробуйте использовать библиотеку PHP XLSX Writer. В установке простая и в пользовании тоже.
Вот небольшой пример того, как записать данные:
$data = array(
array('year','month','amount'),
array('2003','1','220'),
array('2003','2','153.5'),
);
$writer = new XLSXWriter();
$writer->writeSheet($data);
$writer->writeToFile('output.xlsx');
Комментариев нет:
Отправить комментарий