จะให้ Excel ตีความคอมมาเป็นตัวคั่นเริ่มต้นในไฟล์ CSV ได้อย่างไร


95

ฉันมีไฟล์. csv จำนวนหนึ่ง บางตัวคั่นด้วยเครื่องหมายจุลภาคบางตัวคั่นด้วยแท็บ (อาจเรียกได้ว่าเป็น. tsv ... )

csvขยายได้รับการเชื่อมโยงกับ Excel เมื่อมีการติดตั้ง Excel อย่างไรก็ตามถ้าฉันเปิดหนึ่งในไฟล์เหล่านี้ด้วย excel ทุกอย่างจะถูกเทลงในคอลัมน์เดียวกันและเครื่องหมายจุลภาคไม่ถูกตีความว่าเป็นตัวคั่น

ฉันสามารถแทนไฟล์ -> นำเข้า ... เลือกไฟล์และเลือกวิธีที่แม่นยำในการตีความเนื้อหา (ตัวคั่นประเภทข้อมูล ฯลฯ ) แต่ส่วนใหญ่แล้วฉันต้องการดูไฟล์ผ่านทางที่ชัดเจน มุมมองตาราง ฉันไม่ต้องการประมวลผลด้วย Excel

มีวิธีให้ Excel แปลตัวคั่นอัตโนมัติและแสดงไฟล์ CSV เป็นตารางที่เหมาะสมทันทีที่เปิดหรือไม่ ฉันต้องการสิ่งนี้เพื่อให้ฉันสามารถใช้ Excel เป็นตัวแสดงด่วนสำหรับไฟล์ดังกล่าว

ฉันสงสัยว่าต้องมีวิธีหนึ่งมิฉะนั้น Excel จะไม่เชื่อมโยงตัวเองกับไฟล์ CSV


ฉันเข้าใจดีว่าคำตอบที่เลือกตอบคำถามของคุณ แต่ควรเน้นข้อที่สองเนื่องจากเป็นโซลูชันระดับโลกที่ใช้งานร่วมกันผ่านอีเมลเครือข่ายและอื่น ๆ
Rafareino

คำตอบ:


81

ขณะเปิดไฟล์ CSV Excel จะใช้การตั้งค่าภูมิภาคของระบบที่เรียกว่าList separatorกำหนดตัวคั่นเริ่มต้นที่จะใช้

Microsoft Excel จะเปิดไฟล์. csv แต่ขึ้นอยู่กับการตั้งค่าภูมิภาคของระบบอาจคาดว่าเครื่องหมายอัฒภาคเป็นตัวคั่นแทนเครื่องหมายจุลภาคเนื่องจากในบางภาษาจะใช้เครื่องหมายจุลภาคเป็นตัวคั่นทศนิยม (จากWikipedia )


บนWindowsคุณสามารถเปลี่ยนการList separatorตั้งค่าRegional and Language Optionsตามที่ระบุในเว็บไซต์สนับสนุน Office :

เปลี่ยนตัวคั่นในไฟล์ข้อความ CSV

  1. คลิกเมนู Windows Start
  2. คลิกแผงควบคุม
  3. เปิดกล่องโต้ตอบตัวเลือกภูมิภาคและภาษา
  4. คลิกที่แท็บตัวเลือกภูมิภาค
  5. คลิกกำหนดเอง / การตั้งค่าเพิ่มเติม (Win10)
  6. พิมพ์ตัวคั่นใหม่ในกล่องตัวคั่นรายการ
  7. คลิกตกลงสองครั้ง

หมายเหตุ : ใช้งานได้เฉพาะหากสัญลักษณ์ทศนิยมไม่ได้ถูกกำหนดเป็นเครื่องหมายจุลภาค (สอดคล้องกับการอ้างอิง Wikipedia ด้านบน) ถ้าเป็นเช่นนั้น Excel จะไม่ใช้เครื่องหมายจุลภาคเป็นตัวคั่นรายการแม้ว่าจะเลือกไว้ก็ตาม สำหรับภูมิภาคที่ไม่ได้อยู่ในสหรัฐอเมริกาเครื่องหมายจุลภาคเป็นสัญลักษณ์ทศนิยมเริ่มต้น

ในMac OS Xดูเหมือนว่าการตั้งค่านี้จะถูกอนุมานจากการตั้งค่าตัวแยกทศนิยม (ในบานหน้าต่างภาษาและภูมิภาคของการตั้งค่าระบบไปที่ขั้นสูง ) หากตัวแยกทศนิยมเป็นจุดตัวคั่น CSV เริ่มต้นจะเป็นเครื่องหมายจุลภาค แต่ถ้าตัวคั่นทศนิยมเป็นเครื่องหมายจุลภาคดังนั้นตัวแยก CSV เริ่มต้นจะเป็นเครื่องหมายอัฒภาค

ดังที่คุณพูดไว้ในความคิดเห็นมีทางเลือกสำหรับผู้ใช้ Mac ในการดูไฟล์ CSV เหล่านั้นอย่างรวดเร็ว มันเป็นปลั๊กอินสำหรับQuick Look ที่เรียกว่าquicklook-csvที่จัดการการตรวจจับตัวคั่น


ขอบคุณมันสมเหตุสมผลแล้ว ฉันเดาว่ามันจะไม่ตีความแท็บเป็นตัวคั่นตามค่าเริ่มต้น (ซึ่งก็สมเหตุสมผลแล้วที่ CSV ย่อมาจาก Comma Separated Values ​​แต่ผู้คนใช้แท็บใน CSV ในทางปฏิบัติและฉันต้องจัดการกับสิ่งนั้น)
Szabolcs

@Szabolcs Excel จะไม่พยายามตรวจหาตัวคั่นในขณะที่เปิดไฟล์ CSV (โดยใช้ไฟล์ -> เปิดหรือสำรวจ ) มันจะใช้การตั้งค่าระบบ อย่างไรก็ตามมันจะจัดการเพื่อตรวจหาตัวคั่นโดยอัตโนมัติ (แท็บ, จุลภาค, อัฒภาคหรือช่องว่าง) ในขณะที่ใช้คุณลักษณะการนำเข้า
zakinster

1
คำตอบของคุณนั้นใช้ได้กับ OS X ด้วย: มันยังคงเป็นจุดทศนิยม / เครื่องหมายจุลภาคที่ทำให้เกิด "ปัญหา" (ดังที่คุณพูดถึงในคำตอบ)
Szabolcs

1
แก้ไขในภายหลัง: ขอโทษ! มันใช้งานได้! เห็นได้ชัดว่าจำเป็นต้องรีสตาร์ทโปรแกรมและ / หรือออกจากระบบ / -in อีกครั้งเพื่อใช้การเปลี่ยนแปลง ฉันไม่รู้ว่าเมื่อไหร่ แต่หลังจากนั้นไม่นานฉันก็ทำงานได้
mmo

1
สำหรับ Mac OS X อย่าลืม QUIT Excel หลังจากทำการเปลี่ยนแปลง Excel ยังคงเปิดอยู่หากคุณปิดแผ่นงานที่เปิดอยู่ทั้งหมดเท่านั้น คลิก Excel> ออกจาก Excel หรือกดปุ่ม Command + Q และเสร็จสิ้น
เปาโลเปโดรโซ

94

หากคุณไม่ต้องการแก้ไขรูปแบบของไฟล์และกำหนดเป้าหมายไปที่ Excel เท่านั้นคุณสามารถใช้เคล็ดลับ Excel ต่อไปนี้เพื่อช่วยคุณได้

เพิ่มบรรทัดใหม่ที่ด้านบนของไฟล์พร้อมข้อความ"sep=,"(รวมถึงคำพูด) เพื่อให้ Excel เปิดไฟล์ที่มี "," เป็นตัวคั่นรายการ

เป็นกลอุบายที่ง่ายมากในการหลีกเลี่ยงการเปลี่ยนการตั้งค่าภูมิภาคของ Windows และรับผลลัพธ์ที่สอดคล้องกัน แต่มันก็เป็น Excel ที่เฉพาะเจาะจง


1
ตรวจสอบให้แน่ใจว่า - เฉพาะ - ใช้สิ่งนี้เพื่อ - ดูที่ไฟล์และไม่แก้ไขไฟล์มิฉะนั้นคุณอาจพบปัญหาข้อใดข้อหนึ่งต่อไปนี้: theonemanitdepartment.wordpress.com/2014/12/15/ …
Wouter

ดียิ่งขึ้นถ้าคุณต้องการแจกจ่ายไฟล์นี้ให้ผู้อื่นดังนั้นคุณต้องแน่ใจว่า excel จะสามารถเข้าใจไฟล์ได้ไม่ว่าจะมีการกำหนดค่าใด ฉันมักจะใช้ csv เพื่อให้สามารถใช้ระบบควบคุมเวอร์ชันใด ๆ เพื่อแชร์และทำงานร่วมกันกับไฟล์เหล่านี้ได้ แต่ต้องต่อสู้กับเครื่องหมายจุลภาคและเครื่องหมายอัฒภาค ขอบคุณมาก!
Rafareino

1
อยู่คนเดียวเหนือสิ่งใด
NateS

11

คุณไม่จำเป็นต้องใส่เครื่องหมายคำพูดรอบ ๆsep=,- ตราบใดที่มันเป็นบรรทัดแรกของไฟล์ที่จะใช้งานได้อย่างน้อยก็ใน Excel 2016

ฉันค้นพบว่าหากไฟล์ถูกคั่นด้วยแท็บsep=\tทำงานได้ดีทั้งที่มีและไม่มีเครื่องหมายคำพูด


4

คำตอบที่ยอมรับนั้นถูกต้อง แต่ฉันเป็นคนที่มองเห็นได้ นี่คือทุกขั้นตอนในรูปแบบสกรีนช็อตของวิธีการทำเช่นนี้ใน windows 10

ป้อนคำอธิบายรูปภาพที่นี่ ป้อนคำอธิบายรูปภาพที่นี่ ป้อนคำอธิบายรูปภาพที่นี่ ป้อนคำอธิบายรูปภาพที่นี่ ป้อนคำอธิบายรูปภาพที่นี่ ป้อนคำอธิบายรูปภาพที่นี่


2
มีประโยชน์มาก! เพียงจำไว้ (ตามที่กล่าวมาแล้วข้างต้นที่ไหนสักแห่ง) ที่จะได้รับการละเว้นถ้าสัญลักษณ์เดียวกันที่ใช้สำหรับList separator Decimal symbolคุณมักจะพบ,เป็นสัญลักษณ์ทศนิยมเพื่อให้แน่ใจว่าจะเปลี่ยนเป็นอย่างอื่น (เช่น.) เมื่อตั้งค่าไปList separator ,
เดิร์ค

1

เมื่อตัวคั่นในการตั้งค่าภูมิภาคไม่ใช่เครื่องหมายจุลภาค แต่เป็นเครื่องหมายอัฒภาค (ตัวคั่นดัตช์) ให้เปลี่ยนชื่อไฟล์ CSV เป็นไฟล์ TXT คลิกขวาที่ไฟล์ TXT และเลือก "Open with" และเลือก "Excel" ใน Excel เลือกคอลัมน์แรกเลือกข้อมูลใน ribbon และแยกข้อความเป็นคอลัมน์

หรือ

ติดตั้ง LibreOffice และเปิดไฟล์ CSV ด้วย LibreOffice Calc


1

ผมมี.csvไฟล์ที่มีตัวคั่นภูมิภาคและการตั้งค่าการตั้งค่าไปยังรายการคั่น; ;อย่างไรก็ตาม Excel ยังไม่ได้แยกคอลัมน์

ป้อนคำอธิบายรูปภาพที่นี่

มันกลายเป็นปัญหาการเข้ารหัส ไฟล์ที่ถูกส่งออกมาจากสตูดิโอการจัดการเซิร์ฟเวอร์ SQL 2005 UCS-2 LE BOMและกลายเป็นเข้ารหัสใน ใช้ Notepad ++ ฉันเปลี่ยนการเข้ารหัสเป็นUTF-8ทุกอย่างเริ่มทำงาน


0

ตรวจสอบให้แน่ใจว่าได้ตรวจสอบไฟล์ CSV ในโปรแกรมแก้ไขอย่างง่ายเช่น Notepad เพื่อตรวจสอบว่ามีการฟอร์แมตอย่างถูกต้องหรือไม่

ฉันเพิ่มคำตอบนี้หลังจากที่ฉันแก้ไขข้อผิดพลาดโง่ที่ไฟล์ CSV ที่ฉันสร้างขึ้นด้วย VB ไม่ได้ถูกเปิดด้วยคอลัมน์แยกใน Excel ฉันค้นพบว่าวิธีที่ฉันเขียนบรรทัดที่ห่อแต่ละบรรทัดด้วยเครื่องหมายคำพูด Excel ซ่อนเครื่องหมายคำพูดและแสดงทั้งบรรทัดในคอลัมน์ A ทำให้มันดูราวกับว่ามันไม่สนใจตัวคั่นด้วยเครื่องหมายจุลภาคของฉัน


0

วิธีที่ดีที่สุดคือการบันทึกไว้ในไฟล์ข้อความที่มีนามสกุล 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

สำหรับชาวดัตช์ฉันมีปัญหาที่ Excel 2008 บน Windows 7 ไม่ได้เป็นไปตาม RFC4180:

"ฟิลด์ที่มีตัวแบ่งบรรทัด (CRLF), เครื่องหมายคำพูดคู่และเครื่องหมายจุลภาคควรอยู่ในเครื่องหมายคำพูดคู่"

ไฟล์ที่คั่นด้วยเครื่องหมายจุลภาคอย่างถูกต้องมีฟิลด์ที่มีเครื่องหมายจุลภาค (ตัวคั่นทศนิยมดัตช์) อยู่ในเครื่องหมายคำพูดคู่ ในโลแคลภาษาดัตช์ตัวแยกเลขทศนิยมคือ,และตัวคั่นรายการเป็น;ดังนั้น Excel จึงไม่สามารถอ่านไฟล์ที่,ใช้สำหรับทั้งคู่ได้ (แม้หลังจากเปลี่ยนตัวคั่นรายการอย่างชัดเจนเป็น,ใน 'แผงควบคุม')

อินพุตดูเหมือนว่า:

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

โซลูชันได้รับโดย @ user280725:

ใช้ Notepad เพื่อแทรกเป็นบรรทัดแรก:

sep=,

(ซึ่งหมายถึง Note of user @zakinster ในโซลูชันของเขาไม่จำเป็นต้องใช้อีกต่อไป)


สิ่งที่น่าสนใจ: เมื่อไฟล์ csv ยังโหลดอยู่หากคุณตั้งค่าสถานที่เป็นภาษาอังกฤษแบบสหรัฐอเมริกาในแผงควบคุมและบันทึกไฟล์ไฟล์นั้นจะถูกแปลงเป็นรูปแบบภาษาอังกฤษแบบสหรัฐอเมริกา (จุลภาคเป็นตัวคั่นรายการและจุดเป็นตัวคั่นทศนิยม)

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.