用希腊字符创建excel

时间:2011-10-26 12:34:20

标签: php html excel character-encoding

我使用了以下标题来创建包含希腊字符的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上打开它时希腊字符显示为sympols。

我还尝试过一个创建xls(打开xls二进制格式)的库,结果相同。该库具有设置代码页和字符集的选项,但仍然没有。

任何想法?

感谢。

2 个答案:

答案 0 :(得分:1)

如果您正在使用库,那么它应该具有将编码设置为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。 请注意,这不支持更改工作簿名称(即使用'Μαθητές'而不是'学生')

答案 1 :(得分:0)

我对XLS文件不太确定,但如果您更喜欢使用Excel可读的CSV文件,请使用UTF-16编码(带BOM)和制表符作为分隔符

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