2013-01-24 39 views
0

所以我這樣做(我使用Drupal 6):Excel的UTF-8 CSV導出和分離

while(@ob_end_clean()); 
    drupal_set_header("Content-type: text/csv;"); 
    drupal_set_header("Cache-Control: no-store, no-cache"); 
    drupal_set_header("Content-Disposition: attachment; filename=translations.csv"); 
    print chr(255) . chr(254) . mb_convert_encoding($output, 'UTF-16LE', 'UTF-8'); 
    exit; 

要導出UTF-8字符的CSV。當我導入到excel中時,utf-8字符將正確顯示。

問題是,Excel不會解析分隔符,即逗號將全部顯示在一列中,而不是用作文件打開時的分隔符。

有沒有辦法讓它打開,逗號會用作分隔符?

在CSV文件中去線以下:

$output .= '"'.str_replace('"', '""', $id).'","'.str_replace('"', '""', $source).'","'.str_replace('"', '""', $translation) . '"'; 

我嘗試使用標籤\ t,而不是逗號作爲分隔符,但同樣的事情會發生,即。標籤將不能作爲分隔符的文件打開

+0

嘗試再次使用一個標籤,但是寫一行UTF-16LE線,這是默認的分隔符是Excel中使用,除非你明確地使用在Excel中導入功能...爲什麼你不能使用fputcsv()? –

+0

我做了...我用\ t替換了它,但它沒有工作excel會改爲顯示一大堆\ t的 – pillarOfLight

回答

1

要使用逗號作爲默認的CSV分隔符,一個需要改變相應的Windows區域設置選項:

進入控制面板 - >區域和語言選項(或日期, 時間和區域選項 - - >一些 機器上的區域和語言選項) - >單擊自定義按鈕。在該對話框中打開 你會看到和「列表分隔」中,你可以改變 逗號,以不同的字符選項 - >點擊應用,然後確定,然後 再次申請。

請注意以下事項:

  1. 此設置同時用於CSV導入和導出默認。
  2. 您應該使用File > Open而不是Data > Import External Data > Import Data...打開CSV文件,或者只需在資源管理器中雙擊任意CSV文件,它將在Excel中打開並應用默認分隔符。

瞭解更多:

+0

問題說:「問題是,excel不會解析分隔符,即逗號全部顯示在一列中,而不是用作文件打開時的分隔符。是否有辦法讓它打開,逗號將用作分隔符?「顯示「文件>打開」不起作用。這就是爲什麼我建議使用嚮導來測試它並嘗試不同的分隔符,因爲它允許您在那裏更改它。 – Pricey

+0

@Pricey問題是:「有沒有辦法讓它打開,逗號將用作分隔符?」 - 我的回答很適合。我同意你的答案更爲廣泛,但我認爲問題在於「我想打開CSV而不需要其他操作」。更好的答案適合於這樣的問題:「請教如何打開/導入CSV並說明Excel使用哪個字符作爲分隔符」。 –

+0

是的,我同意,如果他們沒有逗號作爲他們的默認區域列表分隔符,那麼該選項可以更改區域列表分隔符,但他們可能不想進行更改,這取決於未知的用例在這一刻。我的評論與你的第二點相關,並且Excel中的導入選項不應該被忽略。 – Pricey

1

如果您使用的是Excel 2007,然後,如果你第一次打開Excel,那麼你可以去Data選項卡,然後選擇From Text

在選擇.csv文件瀏覽器瀏覽器,然後出現文本嚮導。這給了你更多的步驟和選項來控制它正在尋找關於分解列等方面

舊版本的Excel也支持它,但我不能確定它在同一個地方,我認爲它雖然。

嘗試該向導,看看它是如何排序的問題。

0

對於從Excel中的Unicode支持與X分隔值,使用製表符分隔的UTF-16小端(什麼Excel生成當你另存爲...>Unicode文本(* .txt))。

如果你不這樣做,你會遇到像你遇到的問題。

參見:Excel and Unicode