Làm cách nào để Excel giải thích dấu phẩy dưới dạng dấu phân cách mặc định trong tệp CSV?


95

Tôi có một số tập tin .csv. Một số trong số chúng được phân cách bằng dấu phẩy, một số được phân định bằng tab (có thể chúng được gọi là .tsv ...)

Các csvtiện ích được gắn liền với Excel khi Excel đã được cài đặt. Tuy nhiên, nếu tôi mở một trong những tệp này bằng excel, mọi thứ sẽ được đổ vào cùng một cột và dấu phẩy không được hiểu là dấu phân cách.

Tôi có thể thay vì Tệp -> Nhập ..., chọn tệp và chọn cách chính xác để diễn giải nội dung (dấu phân cách, loại dữ liệu, v.v.) Nhưng hầu hết thời gian tôi chỉ muốn xem tệp rõ ràng xem bảng. Tôi không muốn xử lý nó với Excel.

Có cách nào để Excel tự động giải thích dấu phân cách và hiển thị tệp CSV dưới dạng bảng thích hợp ngay khi mở không? Tôi cần điều này để tôi có thể sử dụng Excel làm trình xem nhanh cho các tệp như vậy.

Tôi nghi ngờ phải có một cách, nếu không Excel sẽ không liên kết với các tệp CSV.


Tôi thực sự hiểu rằng câu trả lời được chọn sẽ trả lời câu hỏi của bạn, nhưng câu trả lời thứ hai nên được làm nổi bật vì nó cung cấp một giải pháp toàn cầu, hoạt động chia sẻ acros qua email, mạng, v.v.
Rafareino

Câu trả lời:


81

Trong khi mở tệp CSV, Excel sẽ sử dụng cài đặt khu vực hệ thống được gọi List separatorđể xác định dấu phân cách mặc định sẽ sử dụng.

Microsoft Excel sẽ mở các tệp .csv, nhưng tùy thuộc vào cài đặt khu vực của hệ thống, nó có thể mong đợi một dấu chấm phẩy như một dấu tách thay vì dấu phẩy, vì trong một số ngôn ngữ, dấu phẩy được sử dụng làm dấu tách thập phân. (từ Wikipedia )


Trên Windows , bạn có thể thay đổi List separatorcài đặt theo Regional and Language Optionsnhư được chỉ định trên trang web hỗ trợ Office :

Thay đổi dấu phân cách trong tệp văn bản CSV

  1. Nhấp vào menu Bắt đầu của Windows.
  2. Nhấp vào Bảng điều khiển.
  3. Mở hộp thoại Tùy chọn ngôn ngữ và khu vực.
  4. Nhấp vào tab Tùy chọn khu vực.
  5. Nhấp vào Tùy chỉnh / Cài đặt bổ sung (Win10).
  6. Nhập một dấu phân cách mới trong hộp Danh sách phân tách.
  7. Nhấn OK hai lần.

Lưu ý : điều này chỉ hoạt động nếu biểu tượng Thập phân không được chỉ định là dấu phẩy (phù hợp với trích dẫn Wikipedia ở trên). Nếu đúng như vậy, Excel sẽ không sử dụng dấu phẩy làm dấu tách Danh sách, ngay cả khi được chọn. Đối với nhiều khu vực ngoài Hoa Kỳ, dấu phẩy là ký hiệu Thập phân mặc định.

Trên Mac OS X , cài đặt này dường như được suy ra từ cài đặt dấu tách thập phân (trong ngăn Ngôn ngữ & Vùng của Tùy chọn hệ thống , đi đến Nâng cao ). Nếu Dấu tách thập phân là một điểm thì dấu tách CSV mặc định sẽ là dấu phẩy, nhưng nếu Dấu tách thập phân là dấu phẩy, thì dấu tách CSV mặc định sẽ là dấu chấm phẩy.

Như bạn đã nói trong phần bình luận, có một cách khác để người dùng Mac xem nhanh các tệp CSV đó. Đó là plugin cho Quick Look được gọi là quicklook-csv xử lý phát hiện dấu tách.


Cảm ơn, điều này có ý nghĩa. Tôi đoán sau đó nó sẽ không hiểu các tab là dấu phân cách theo mặc định (điều này cũng có nghĩa là CSV là viết tắt của Giá trị phân tách bằng dấu phẩy, nhưng mọi người thường sử dụng các tab trong CSV trong thực tế và tôi cần phải xử lý vấn đề đó).
Szabolcs

@Szabolcs Excel sẽ không cố gắng phát hiện dấu phân cách trong khi mở tệp CSV (sử dụng tệp-> mở hoặc trình thám hiểm ), nó sẽ chỉ sử dụng cài đặt hệ thống. Tuy nhiên, nó sẽ quản lý để tự động phát hiện dấu phân cách (tab, dấu phẩy, dấu chấm phẩy hoặc dấu cách) trong khi sử dụng tính năng nhập .
zakinster

1
Câu trả lời của bạn cũng hợp lệ trên OS X: đó vẫn là dấu thập phân / dấu phẩy gây ra "sự cố" (như bạn đã đề cập trong câu trả lời).
Szabolcs

1
Chỉnh sửa sau: xin lỗi! điều này làm việc! Rõ ràng người ta cần khởi động lại chương trình và / hoặc đăng xuất / -in một lần nữa để áp dụng thay đổi. Tôi không biết chính xác khi nào, nhưng một lát sau khi thay đổi của tôi đột nhiên hoạt động.
mmo

1
Trên Mac OS X, đừng quên QUIT Excel sau khi thực hiện các thay đổi. Excel vẫn mở nếu bạn chỉ đóng tất cả các trang đang mở. Nhấp vào Excel> Thoát Excel hoặc chỉ cần nhấn Command + Q và bạn đã hoàn tất.
Paulo Pedroso

94

Nếu bạn không muốn sửa đổi định dạng của tệp và CHỈ nhắm mục tiêu Excel, bạn có thể sử dụng thủ thuật Excel sau để giúp bạn.

Thêm một dòng mới ở đầu tệp với văn bản "sep=,"(bao gồm cả dấu ngoặc kép) để Excel mở tệp bằng "," làm dấu phân cách danh sách.

Đây là một mẹo rất dễ dàng để tránh thay đổi cài đặt khu vực Windows của bạn và có được kết quả nhất quán. Nhưng nó là Excel cụ thể.


1
Hãy chắc chắn - chỉ sử dụng cái này để xem tệp, và không sửa đổi nó, nếu không bạn có thể gặp phải một trong những vấn đề sau: theonemanitdepidor.wordpress.com/2014/12/15/15
Wouter

Thậm chí tốt hơn nếu bạn cần phân phối lại tệp này cho người khác, vì vậy bạn đảm bảo excel sẽ có thể hiểu tệp, bất kể cấu hình của chúng là gì. Tôi luôn sử dụng csv để có thể sử dụng bất kỳ hệ thống kiểm soát phiên bản nào để chia sẻ và tạo ra các tệp này, nhưng đã phải vật lộn với dấu phẩy và dấu chấm phẩy và luôn luôn thay đổi mọi người để thay đổi cấu hình của họ. Cảm ơn rất nhiều!
Rafareino

1
Một mình trên đỉnh của cái gì?
NateS

11

Bạn không cần các trích dẫn xung quanh sep=,- miễn là dòng đầu tiên của tệp sẽ hoạt động, ít nhất là với Excel 2016.

Tôi phát hiện ra rằng nếu tệp được phân định bằng tab, sep=\thoạt động tốt, có và không có dấu ngoặc kép.


4

Câu trả lời được chấp nhận là đúng nhưng tôi là một người trực quan. Dưới đây là từng bước trong định dạng ảnh chụp màn hình về cách thực hiện việc này trong windows 10.

nhập mô tả hình ảnh ở đây nhập mô tả hình ảnh ở đây nhập mô tả hình ảnh ở đây nhập mô tả hình ảnh ở đây nhập mô tả hình ảnh ở đây nhập mô tả hình ảnh ở đây


2
Rất hữu ích! Chỉ cần nhớ (như đã đề cập ở đâu đó ở trên) List separatorsẽ bị bỏ qua nếu sử dụng cùng một biểu tượng Decimal symbol. Bạn thường sẽ tìm thấy ,dưới dạng ký hiệu thập phân, vì vậy hãy đảm bảo thay đổi nó thành một biểu tượng khác (ví dụ .) khi cài đặt List separatorthành ,.
Dirk

1

Khi dấu phân cách trong cài đặt khu vực không phải là dấu phẩy mà là dấu chấm phẩy (dấu phân cách tiếng Hà Lan), đổi tên tệp CSV thành tệp TXT. Nhấp chuột phải vào tệp TXT và chọn "Mở bằng" và chọn "Excel". Trong Excel chọn cột đầu tiên, chọn dữ liệu trong ruy-băng và tách văn bản thành các cột.

HOẶC LÀ

Cài đặt LibreScript và mở tệp CSV bằng LibreOffice Calc.


1

Tôi đã có một .csvtệp với dấu phân cách ;và cài đặt vùng được đặt thành Dấu tách danh sách ;. Tuy nhiên, Excel vẫn không phân tích các cột.

nhập mô tả hình ảnh ở đây

Nó hóa ra là một vấn đề mã hóa. Các tệp được xuất từ ​​máy chủ SQL Management Studio 2005 và được mã hóa UCS-2 LE BOM. Sử dụng Notepad ++ Tôi chuyển mã hóa sang UTF-8và mọi thứ bắt đầu hoạt động.


0

Hãy chắc chắn kiểm tra tệp CSV trong một trình chỉnh sửa đơn giản như Notepad để xác minh rằng nó được định dạng đúng.

Tôi đã thêm câu trả lời này sau khi tôi giải quyết một lỗi ngu ngốc trong đó các tệp CSV tôi đã tạo bằng VB không được mở bằng các cột riêng biệt trong Excel. Tôi phát hiện ra rằng cách tôi đã viết các dòng được bọc mỗi dòng bằng dấu ngoặc kép. Excel ẩn dấu ngoặc kép và hiển thị toàn bộ dòng trong cột A, làm cho nó xuất hiện như thể nó bỏ qua dấu tách dấu phẩy của tôi.


0

cách tốt nhất sẽ là lưu nó trong một tệp văn bản có phần mở rộng 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

Đối với người Hà Lan, tôi gặp vấn đề là Excel 2008 trên Windows 7 không tuân thủ RFC4180:

"Các trường có chứa ngắt dòng (CRLF), dấu ngoặc kép và dấu phẩy nên được đặt trong dấu ngoặc kép."

Một tệp được phân tách bằng dấu phẩy chính xác có các trường có dấu phẩy (dấu phân cách thập phân Hà Lan) được đặt trong dấu ngoặc kép. Ở miền địa phương Hà Lan, dấu tách thập phân là ,và dấu tách danh sách ;để Excel không thể đọc tệp ,được sử dụng cho cả hai (ngay cả sau khi thay đổi rõ ràng dấu tách danh sách thành ,trong Bảng điều khiển).

Đầu vào trông như sau:

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

Giải pháp được đưa ra bởi @ user280725:

Sử dụng Notepad để chèn dưới dạng dòng đầu tiên:

sep=,

(Điều này có nghĩa là Lưu ý của người dùng @zakinster trong giải pháp của anh ta không còn cần phải áp dụng.)


Thú vị: với tệp csv vẫn được tải, nếu bây giờ bạn đặt ngôn ngữ thành US English trong Bảng điều khiển và lưu tệp, nó sẽ được chuyển đổi sang định dạng tiếng Anh Mỹ (dấu phẩy là dấu tách danh sách và dấu chấm là dấu tách thập phân).

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.