題 如何讓Excel將逗號解釋為CSV文件中的默認分隔符?


我有很多.csv文件。其中一些是逗號分隔的,一些是製表符分隔的(也許它們應該被稱為.tsv ...)

csv 安裝Excel時,擴展程序與Excel關聯。但是,如果我使用excel打開其中一個文件,則所有內容都會轉儲到同一列中,並且逗號不會被解釋為分隔符。

我可以代替文件 - >導入...,選擇文件,並選擇解釋內容的精確方式(分隔符,數據類型等)但大多數時候我只是想  在文件中通過清晰的表格視圖。我不想用Excel處理它。

有沒有辦法讓Excel自動解釋分隔符,並在打開後立即將CSV文件顯示為正確的表格?我需要這個,所以我可以使用Excel作為這些文件的快速查看器。

我懷疑必須有辦法,否則Excel不會將自己與CSV文件關聯。


78
2018-06-11 11:04


起源


我真的明白所選擇的響應確實回答了你的問題,但第二個應該突出顯示,因為它提供了一個全局解決方案,通過電子郵件,網絡等工作共享。 - Rafareino


答案:


打開CSV文件時,Excel將使用名為的系統區域設置 List separator 確定要使用的默認分隔符。

Microsoft Excel將打開.csv文件,但取決於系統   區域設置,它可能期望分號代替分隔符   逗號,因為在某些語言中逗號用作小數   分隔器。 (從 維基百科


視窗,你可以改變 List separator 設置在 Regional and Language Options 如上所述 辦公室支持網站 :

更改CSV文本文件中的分隔符

  1. 單擊Windows“開始”菜單。
  2. 單擊控制面板。
  3. 打開“區域和語言選項”對話框。
  4. 單擊“區域選項”選項卡。
  5. 單擊自定義/其他設置(Win10)。
  6. 在“列表分隔符”框中鍵入新分隔符。
  7. 單擊確定兩次。

注意:這僅在Decimal符號未被指定為逗號時才有效(與上面的Wikipedia引用一致)。如果是,Excel會  使用逗號作為列表分隔符,即使已選中。對於許多非美國地區,逗號是默認的十進制符號。

Mac OS X.,這個設置好像是從中推斷出來的 小數分隔符 設置(在 語言和地區 窗格 系統偏好, 去 高級)。如果 小數分隔符 是一個點然後默認的CSV分隔符將是一個逗號,但如果是 小數分隔符 是一個逗號,然後默認的CSV分隔符將是一個分號。

正如您在評論中所說,Mac用戶可以快速查看這些CSV文件。這是插件 快速瀏覽 叫 快速查找,CSV 處理分隔符檢測。


73
2018-06-11 11:07



謝謝,這是有道理的。我想那時它默認不會將製表符解釋為分隔符(這也有意義,因為CSV代表逗號分隔值,但人們在實踐中使用CSV中的製表符,我需要處理它)。 - Szabolcs
@Szabolcs Excel在打開CSV文件時不會嘗試檢測分隔符(使用 文件 - >打開 或者 探險者),它只會使用系統設置。但是,它會設法在使用時自動檢測分隔符(製表符,逗號,分號或空格) 進口 特徵。 - zakinster
您的答案在OS X上也是有效的:它仍然是導致“麻煩”的小數點/逗號(正如您在答案中提到的那樣)。 - Szabolcs
後來編輯:道歉!這個工作!顯然,需要重新啟動程序和/或再次註銷/ -in以應用更改。我不確切知道什麼時候,但在我改變後不久,這突然起作用了。 - mmo
在Mac OS X上,進行更改後不要忘記退出Excel。如果您只關閉所有打開的工作表,Excel將保持打開狀單擊Excel>退出Excel或只需按Command + Q,您就完成了。 - Paulo Pedroso


如果您不想修改文件的格式,並且僅針對Excel,則可以使用以下Excel技巧來幫助您。

使用文本在文件頂部添加一個新行 "sep=," (包括引號)以便Excel以“,”作為列表分隔符打開文件。

這是一個非常簡單的技巧,可以避免更改Windows區域設置並獲得一致的結果。但它是Excel特定的。


76
2017-12-10 14:38



確保 - 只使用它來查看文件,而不是修改它,否則您可能會遇到以下問題之一: theonemanitdepartment.wordpress.com/2014/12/15/... - Wouter
如果您需要將此文件重新分發給其他人,則更好,因此無論他們的配置是什麼,您都要確保excel能夠理解該文件。我總是使用csv來使用任何版本控制系統來共享和協作這些文件,但是一直在用逗號和分號進行鬥爭,並且總是讓所有人都知道改變他們的配置,不再需要。非常感謝! - Rafareino
在什麼之上? - NateS


你不需要周圍的報價 sep=,  - 只要它是文件的第一行它將起作用,至少使用Excel 2016。

我發現如果文件是製表符分隔的, sep=\t 工作正常,有和沒有報價。


9
2018-06-02 12:27





如果區域設置中的分隔符不是逗號而是分號(荷蘭分隔符),請將CSV文件重命名為TXT文件。右鍵單擊TXT文件,選擇“打開方式”,然後選擇“Excel”。在Excel中,選擇第一列,選擇功能區中的數據並將文本分隔為列。

要么

安裝LibreOffice並使用LibreOffice Calc打開CSV文件。


1
2018-06-25 14:46





接受的答案是正確的,但我是一個視覺人。以下是在Windows 10中如何執行此操作的屏幕截圖格式的每一步。

enter image description here enter image description here enter image description here enter image description here enter image description here enter image description here


1
2017-07-21 11:55



很有用!只記得(正如上面提到的那樣) List separator 如果使用相同的符號,將被忽略 Decimal symbol。你經常會發現 , 作為十進制符號,因此請務必將其更改為其他內容(例如 .)設置時 List separator 至 ,。 - Dirk


請務必在記事本等簡單編輯器中檢查CSV文件,以確認其格式正確。

在我解決了一個愚蠢的錯誤之後我添加了這個答案,其中我用VB創建的CSV文件沒有在Excel中使用單獨的列打開。我發現我寫的行的方式用引號包裹每一行。 Excel隱藏了引號並在A列中顯示了整行,使其看起來好像忽略了我的逗號分隔符。


0
2018-06-12 17:22





最好的方法是將其保存在帶有csv擴展名的文本文件中

Sub ExportToCSV()
    Dim i, j As Integer
    Dim Name  As String

    Dim pathfile As String


    Dim fs As Object
        Dim stream As Object

        Set fs = CreateObject("Scripting.FileSystemObject")
    On Error GoTo fileexists

    i = 15
    Name = Format(Now(), "ddmmyyHHmmss")
    pathfile = "D:\1\" & Name & ".csv"

    Set stream = fs.CreateTextFile(pathfile, False, True)

fileexists:

    If Err.Number = 58 Then
        MsgBox "File already Exists"
        'Your code here
        Return
    End If
    On Error GoTo 0

    j = 1
    Do Until IsEmpty(ThisWorkbook.ActiveSheet.Cells(i, 1).Value)

        stream.WriteLine (ThisWorkbook.Worksheets(1).Cells(i, 1).Value & ";" & Replace(ThisWorkbook.Worksheets(1).Cells(i, 6).Value, ".", ","))

        j = j + 1
        i = i + 1
    Loop

stream.Close

End Sub

0
2017-07-31 06:30





對於荷蘭語,我有一個問題,即Windows 7上的Excel 2008不符合RFC4180:

“包含換行符(CRLF),雙引號和逗號的字段應括在雙引號中。”

逗號分隔文件正確地包含用雙引號括起來的逗號(荷蘭小數分隔符)的字段。在荷蘭語語言環境中,小數點分隔符是 , 和列表分隔符是 ; 所以Excel無法讀取文件 , 用於兩者(甚至在明確地將列表分隔符更改為之後) , 在控制面板中)。

輸入看起來像:

"06-07-2017 17:03:18","********",0:01:04,Uitgaand,"0,1879","0,2273","0,0395",21

解決方案由@ user280725提供:

使用記事本作為第一行插入:

sep=,

(這意味著用戶@zakinster在他的解決方案中的註釋不再需要申請。)


有趣的是:如果csv文件仍然加載,如果你現在在控制面板中將語言環境設置為美國英語並保存文件,它將被轉換為美國英語格式(逗號作為列表分隔符,點作為小數分隔符)。


0
2018-01-22 13:50