GRIG
Новичок
PHPExcel, OpenOffice и кодировка русских букв
Вопрос не совсем по теме форума. Но, может, кто-то уже сталкивался и подскажет?
С помощью скрипта на PHP и пакета PHPExcel версии 1.7.2 пытаюсь создать экселевый файл с таблицей и отправить его пользователю. Среди прочего в таблицу надо внести строки на русском языке. В доке по PHPExcel явно написано, что он ничего про национальные кодировки не знает и знать не хочет, и надо пользоваться кодировкой UTF-8. Так что я явно делаю
Но когда я созданный таким образом файл открываю в OpenOffice - там вместо русских букв всякие кракозябры. Причем при внимательном рассмотрении выясняется, что OpenOffice не понял, что имеет место быть кодировка UTF-8, и воспринял строку как записанную в какой-нибудь национальной 1-байтовой кодировке.
Где чего можно подкрутить?
PS. Самое обидное - что где-то с полгода назад я нечто аналогичное делал, и оно работало. Правда, версия PHPExcel была 1.7.0. И я с тех пор напрочь забыл, какие настройки кому я тогда выставлял.
-~{}~ 19.04.10 18:23:
UPD: "даунгрейд" на PHPExcel версии 1.7.0 оказался частичным решением проблемы. Приведенный выше код отработал так, как я хочу, без каких-либо изменений (в том числе без изменений в настройках софта).
Но все равно остается вопрос: как бороться с проблемой в версии 1.7.2? В ней есть несколько "вкусностей", которые меня интересуют.
Вопрос не совсем по теме форума. Но, может, кто-то уже сталкивался и подскажет?
С помощью скрипта на PHP и пакета PHPExcel версии 1.7.2 пытаюсь создать экселевый файл с таблицей и отправить его пользователю. Среди прочего в таблицу надо внести строки на русском языке. В доке по PHPExcel явно написано, что он ничего про национальные кодировки не знает и знать не хочет, и надо пользоваться кодировкой UTF-8. Так что я явно делаю
PHP:
$xls = new PHPExcel();
$sheet = $xls->getSheet(0);
....
$sheet->getCellByColumnAndRow( $n + 1, 2 )->setValue( iconv( 'KOI8-R', 'UTF-8', 'Количество' ) );
....
$xlsWriter = new PHPExcel_Writer_Excel5($xls);
$fn = tempnam( '', '...' );
if( $fn != false )
$xlsWriter->save( $fn );
else
echo 'tempnam failed';
header( 'Content-type: application/vnd.ms-excel' );
header( 'Content-Disposition: attachment; filename=...' );
readfile( $fn );
Где чего можно подкрутить?
PS. Самое обидное - что где-то с полгода назад я нечто аналогичное делал, и оно работало. Правда, версия PHPExcel была 1.7.0. И я с тех пор напрочь забыл, какие настройки кому я тогда выставлял.
-~{}~ 19.04.10 18:23:
UPD: "даунгрейд" на PHPExcel версии 1.7.0 оказался частичным решением проблемы. Приведенный выше код отработал так, как я хочу, без каких-либо изменений (в том числе без изменений в настройках софта).
Но все равно остается вопрос: как бороться с проблемой в версии 1.7.2? В ней есть несколько "вкусностей", которые меня интересуют.