создание Excel с греческими символами - PullRequest
1 голос
/ 26 октября 2011

Я использовал следующие заголовки для создания файлов xls, содержащих греческие символы на лету.

первая попытка :

header("Content-Type: application/$file_type;charset=utf-8");
header("Content-Disposition: attachment; filename=$file_name.$file_ending");
header("Pragma: no-cache");
header("Expires: 0");

вторая попытка :

header("Content-Type: application/$file_type;charset=windows-1253");
header("Content-Disposition: attachment; filename=$file_name.$file_ending");
header("Pragma: no-cache");
header("Expires: 0");

созданный файл, хотя он содержит правильные греческие символы (при просмотре в текстовом редакторе), когда я открываю его в MS-Excel, греческие символы отображаются в виде символов.

Я также попробовал библиотеку, которая создает xls (открытый двоичный формат xls) с тем же результатом. В этой библиотеке есть опции для установки кодовой страницы и кодировки, но все равно ничего.

есть идеи?

спасибо.

Ответы [ 2 ]

1 голос
/ 14 января 2012

Если вы используете библиотеку, она должна иметь функцию для установки кодировки в UTF-8. Например, с помощью PEAR Spreadsheet_Excel_Writer (http://pear.php.net/package/Spreadsheet_Excel_Writer/redirected), вы бы сделали:

<?php
    $workSheet = & $workBook -> addWorksheet('Students');
    $workSheet -> setInputEncoding('utf-8');
?>

Конечно, вы также должны убедиться, что ваши данные на самом деле являются utf-8, а не ISO-8859-7 или windows-1253, например. Имейте в виду, что это не поддерживает изменение названия книги (то есть использование «Μαθητές» вместо «Студенты»)

0 голосов
/ 26 октября 2011

Я не очень уверен насчет файлов XLS, но если вы предпочитаете использовать файлы CSV для чтения в Excel, используйте кодировку UTF-16 (с спецификацией) и вкладки в качестве разделителей

header('Content-Description: File Transfer');
header('Content-Type: text/csv');
header('Content-Disposition: attachment; filename=export.csv');
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');

echo chr(255) . chr(254); // Add UTF-16 little-endian BOM

echo mb_convert_encoding("α\tβ\tγ"), 'UTF-16LE', 'UTF-8'); // from UTF-8 to UTF-16
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...