2011-10-26 118 views
1

爲了創建包含希臘字符的xls文件,我使用了下列標題。用希臘字符創建excel

第一次嘗試

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"); 

創建的文件althought它包含正確的希臘字母(用文本編輯器查看)當我打開它在ms-excel希臘字符顯示爲sympol。

我也嘗試過一個庫,它創建xls(打開xls二進制格式),結果相同。這個庫有選項來設置代碼頁和字符集,但什麼都沒有。

什麼想法?

謝謝。

回答

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。 請注意,這不支持工作簿名稱更改(即使用'Μαθητές'而不是'學生')

+0

感謝@periklis,我已經使用了不同的庫並開始工作。我總是使用utf-8 – reven

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