2012-02-16 26 views
1

那麼excel 2003可以打開csv文件,如果分隔符是選項卡,它可以自動將數據轉換成正確的列。CSV傳輸excel編碼錯誤

那麼問題是與不是ascii的字符。 libreoffice打開選擇字符集的對話框,但excel 2003不會,並將字符導入錯誤的字符集。

<?php 
$filename ="excelreport.xls"; 

$contents1 = "Name \t Location (where from) \t Age \t \n"; 
$contents = "testdata1 \t testdata2 \t testdata3 \t \n"; 
$problematicData = array('ä', 'ö', 'õ', 'ü'); 

header('Content-type: application/ms-excel'); 
header('Content-Disposition: attachment; filename='.$filename); 

echo $contents1; 
echo $contents; 
echo implode(" \t ", $problematicData); 

// EDIT 可能是我找到了解決加入此標頭( '內容類型:應用/ MS-Excel的;字符集= UTF-8;編碼= UTF-8');但我還沒有用excel 2003測試過。

回答

0

試過用逗號代替? PHP有一個fputcsv函數,可以很容易地處理

+0

舊的Excel 2003自動使用\ t解析列,但似乎仍然存在編碼問題,因爲它不知道要使用哪種編碼。 OO提供CSV導入對話框,您可以在其中指定編碼爲UTF-8,但MS Excel 2003沒有此項。如果有人可以嘗試如何使用MS產品的新版本? – 2012-04-15 07:51:30

+0

@jurka - 好吧,另一種選擇是嘗試創建一個XLS或XSLX。有一些工具:http://stackoverflow.com/a/3931142/5958包括我寫的一個。但我真的不確定任何一種解決方案都可以在Excel 2003及以後的版本中無任何對話,也可以正常運行。 – Eli 2012-04-26 13:04:50