Excel CSV - รูปแบบเซลล์ตัวเลข


86

ฉันสร้างรายงานเป็นไฟล์ CSV เมื่อฉันพยายามเปิดไฟล์ใน Excel มันทำให้เกิดข้อสันนิษฐานเกี่ยวกับประเภทข้อมูลตามเนื้อหาของเซลล์และจัดรูปแบบใหม่ตามนั้น

ตัวอย่างเช่นหากไฟล์ CSV มี

...,005,...

จากนั้น Excel จะแสดงเป็น 5 มีวิธีลบล้างสิ่งนี้และแสดง 005 หรือไม่?

ฉันต้องการทำอะไรบางอย่างกับไฟล์เองเพื่อให้ผู้ใช้สามารถดับเบิลคลิกที่ไฟล์ CSV เพื่อเปิด

ฉันใช้ Excel 2003


ดูคำถามนี้สำหรับวิธีแก้ปัญหาแบบมาโครสำหรับปัญหานี้
Adam Jensen

ปัจจุบันมีไลบรารีการเขียน Excel อยู่มากมาย ควรจะค่อนข้างง่ายในการสร้างไฟล์. xlsx ในภาษาที่คุณเลือก หากผู้ใช้ของคุณยังคงใช้ Excel 2003 ด้วยเหตุผลบางประการ (โดยทั่วไปเมื่อถามคำถามนี้ในตอนแรก แต่หวังว่าจะไม่มีโอกาสมากนักในวันนี้) นอกจากนี้ยังมีตัวเลือกการผลิต. xls สำหรับคนที่เจอคำถามนี้ในวันนี้มีโอกาสมากที่คุณจะไม่ต้องม้วนเอง
John Y

คำตอบ:


129

ไม่มีวิธีง่ายๆในการควบคุมการจัดรูปแบบ Excel ที่ใช้เมื่อเปิดไฟล์. csv อย่างไรก็ตามรายการด้านล่างนี้เป็นสามวิธีที่อาจช่วยได้

ความชอบของฉันเป็นตัวเลือกแรก

ตัวเลือกที่ 1 - เปลี่ยนข้อมูลในไฟล์

คุณสามารถเปลี่ยนข้อมูลในไฟล์. csv ได้ดังนี้ ... , =” 005” , ... ซึ่งจะแสดงใน Excel เป็น ... , 005 , ...

Excel จะเก็บข้อมูลไว้เป็นสูตร แต่การคัดลอกคอลัมน์และใช้ค่าพิเศษวางจะกำจัดสูตร แต่ยังคงการจัดรูปแบบไว้

ตัวเลือกที่ 2 - จัดรูปแบบข้อมูล

หากเป็นเพียงปัญหาด้านรูปแบบและข้อมูลทั้งหมดของคุณในคอลัมน์นั้นมีความยาวสามหลัก จากนั้นเปิดข้อมูลใน Excel จากนั้นจัดรูปแบบคอลัมน์ที่มีข้อมูลด้วยรูปแบบที่กำหนดเอง000 นี้

ตัวเลือกที่ 3 - เปลี่ยนนามสกุลไฟล์เป็น. dif (รูปแบบการแลกเปลี่ยนข้อมูล)

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

เป็นขั้นเป็นตอน:

  • เปลี่ยนนามสกุลไฟล์จาก.csvเพื่อ.dif
  • ดับเบิลคลิกที่ไฟล์เพื่อเปิดใน Excel
  • 'ตัวช่วยสร้างการนำเข้าไฟล์' จะเปิดขึ้น
  • ตั้งค่า 'File type' เป็น 'Delimited' และคลิกที่ปุ่ม 'Next'
  • ภายใต้ตัวคั่นให้เลือก "จุลภาค" และคลิกที่ปุ่ม "ถัดไป"
  • คลิกที่แต่ละคอลัมน์ของข้อมูลของคุณที่แสดงและเลือก 'รูปแบบข้อมูลคอลัมน์' คอลัมน์ที่มีค่า "005" ควรจัดรูปแบบเป็น "ข้อความ"
  • คลิกที่ปุ่มเสร็จสิ้นไฟล์จะถูกเปิดโดย Excel ด้วยรูปแบบที่คุณระบุ

8
.dif ไม่ทำงานบนเครื่องของฉัน การเปิดด้วย Excel 2007 ด้วยตนเองไม่ได้ผล (เตือนฉันว่าประเภทไฟล์ต่างจากส่วนขยาย) และดูเหมือนว่า. DIF เชื่อมโยงกับ Quicktime บนคอมพิวเตอร์หลายเครื่อง แค่ FYI :) มิฉะนั้นเคล็ดลับดีๆ!
Nicholas

15
ฉันคิดว่าตัวเลือกที่ 1 ดีที่สุดถ้าคุณต้องการวิธีที่ไม่ยุ่งยากในการสร้างไฟล์ที่ "ใช้งานได้" นั่นคือเปิดในคอมพิวเตอร์ของผู้ใช้ใน excel โดยไม่ต้องให้พวกเขาทำงานเพิ่มเติม
กีบ

ฉันมีปัญหาเดียวกันและไม่มีข้อใดที่เหมาะสมขออภัย ฉันคิดว่าฉันอาจส่งออกเป็น XML และใช้ XSLT เพื่อไปที่ CSV ฉันต้องการไฟล์ CSV ให้ถูกต้องจึงจะสามารถนำเข้าสู่แอปพลิเคชันอื่นได้
Matt

1
โปรดทราบว่าตัวเลือกที่ 1 ไม่ได้ดีเสมอไปหากคุณมีเซลล์ให้พูดว่า "1E02, ข้อความอะไรก็ได้" จากนั้นคุณใส่ค่าเท่ากันไว้ข้างหน้า Excel จะนึกว่าคุณป้อนสูตร ขั้นแรกสูตรจะผิด แต่ประการที่สองและที่สำคัญที่สุดคือจะแบ่งข้อความของคุณออกเป็น 2 เซลล์
ghiscoding

1
ขอบคุณสำหรับตัวเลือกที่ 1 แก้ไขปัญหาสัญกรณ์ทางวิทยาศาสตร์ของฉันโดยไม่ต้องทำงานพิเศษ
น่าน

28

อย่าใช้ CSV ใช้ SYLK
http://en.wikipedia.org/wiki/SYmbolic_LinK_(SYLK)

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


2
+1 การเขียน SYLK นั้นใช้งานง่ายฉันทำตั้งแต่มือใหม่
Matt H

1
ฉันไม่ทราบเกี่ยวกับรูปแบบนี้ ดูเหมือนเป็นสิ่งที่ฉันสามารถใช้ได้ +1 นี้!
Buggabill

+1 ใช้เวลาห้านาทีในการเปลี่ยนจาก CSV เป็น SYLK รูปแบบผลลัพธ์ goto ของฉันต่อจากนี้ไป!
TheFish

@xamde คุณพูดถูก เป็นเรื่องแปลกที่พวกเขาไม่เคยขยายรูปแบบเพื่อรองรับเช่นเดียวกับ RTF
Mark Ransom

WTF หรือสิ่งที่ใครจะแนะนำฉันอ้างจาก Wikipedia: "Microsoft ไม่ได้เผยแพร่ข้อกำหนด SYLK"
ซอริน

14

ใช้ได้กับ Microsoft Office 2010, Excel เวอร์ชัน 14

ฉันอ่านค่ากำหนดของ OP ผิด "เพื่อทำบางอย่างกับไฟล์เอง" ฉันยังคงเก็บสิ่งนี้ไว้สำหรับผู้ที่ต้องการโซลูชันในการจัดรูปแบบการนำเข้าโดยตรง

  1. เปิดไฟล์เปล่า (ใหม่) (ไฟล์ -> ใหม่จากสมุดงาน)
  2. เปิดตัวช่วยสร้างการนำเข้า (ข้อมูล -> จากข้อความ)
  3. เลือกไฟล์. csv ของคุณและนำเข้า
  4. ในกล่องโต้ตอบให้เลือก "ตัวคั่น" แล้วคลิกถัดไป
  5. เลือกตัวคั่นของคุณ (ยกเลิกการเลือกทุกอย่างยกเว้น "ลูกน้ำ") เลือกคุณสมบัติข้อความของคุณ (น่าจะเป็น {ไม่มี}) คลิกถัดไป
  6. ในฟิลด์การแสดงตัวอย่างข้อมูลให้เลือกคอลัมน์ที่คุณต้องการให้เป็นข้อความ ควรเน้น
  7. ใน ฟิลด์รูปแบบข้อมูลคอลัมน์ให้เลือก "ข้อความ"
  8. คลิกเสร็จแล้ว

อธิบายด้วยภาพ: support.insight.ly/hc/en-us/articles/…
Yo Ludke

2

คุณสามารถจัดรูปแบบช่วงของคุณเป็นข้อความได้

นอกจากนี้ที่นี่เป็นบทความที่ดีในรูปแบบตัวเลขและวิธีการที่คุณสามารถโปรแกรมพวกเขา


ซึ่งจะส่งผลต่อการแสดงค่าเท่านั้น คุณต้องแปลงเป็นข้อความไม่ว่าจะด้วยสูตรหรือในระหว่างการนำเข้าโดยใช้วิธีใดวิธีหนึ่งในชุดข้อความนี้
สิงห์

2

ที่จริงฉันค้นพบว่าอย่างน้อยเริ่มต้นด้วย Office 2003 คุณสามารถบันทึกสเปรดชีต Excel เป็นไฟล์ XML ได้ ดังนั้นฉันสามารถสร้างไฟล์ XML และเมื่อฉันดับเบิลคลิกที่ไฟล์นั้นไฟล์นั้นจะเปิดขึ้นใน Excel ให้การควบคุมในระดับเดียวกับ SYLK แต่ไวยากรณ์ XML นั้นใช้งานง่ายกว่า


2

การเพิ่มพื้นที่ว่างในเซลล์สามารถช่วยได้ ตัวอย่างเช่น: "firstvalue";"secondvalue";"005 ";"othervalue"

มันบังคับให้ Excel ถือว่าเป็นข้อความและมองไม่เห็นช่องว่าง ใน Windows คุณสามารถเพิ่มช่องว่างที่ไม่ทำลายได้โดยการแนะนำ alt + 0160 ดูข้อมูลเพิ่มเติมได้ที่นี่: http://en.wikipedia.org/wiki/Non-breaking_space

พยายามใน Excel 2010 หวังว่านี่จะช่วยให้ผู้ที่ยังคงค้นหาวิธีแก้ปัญหาที่เหมาะสมสำหรับปัญหานี้


2

ฉันมีปัญหานี้เมื่อส่งออกข้อมูล CSV จากรหัส C # และแก้ไขปัญหานี้โดยการใส่ข้อมูลศูนย์นำหน้าด้วยอักขระแท็บดังนั้นข้อมูลจึงถูกตีความเป็นข้อความแทนที่จะเป็นตัวเลขใน Excel (แต่ไม่เหมือนกับการป้อนอักขระอื่น ๆ ล่วงหน้า แต่จะไม่ ' ไม่มีใครเห็น)

ฉันชอบวิธี = "001" แต่วิธีนี้ไม่อนุญาตให้นำเข้าข้อมูล CSV ที่ส่งออกอีกครั้งไปยังแอปพลิเคชัน C # ของฉันโดยไม่ลบการจัดรูปแบบทั้งหมดนี้ออกจากไฟล์ CSV นำเข้า (ฉันจะตัดข้อมูลการนำเข้าแทน) .


1

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


1

โหลด csv ลงใน oleDB และบังคับให้ประเภทข้อมูลที่อนุมานทั้งหมดเป็นสตริง

ฉันถามคำถามเดียวกันแล้วตอบด้วยรหัส

โดยทั่วไปเมื่อโหลดไฟล์ csv ไดรเวอร์ oledb จะตั้งสมมติฐานคุณสามารถบอกได้ว่าจะตั้งสมมติฐานอะไร

รหัสของฉันบังคับให้ประเภทข้อมูลทั้งหมดเป็นสตริงแม้ว่า ... มันง่ายมากที่จะเปลี่ยนสคีมา สำหรับจุดประสงค์ของฉันฉันใช้ xslt เพื่อรับ ti ในแบบที่ฉันต้องการ - แต่ฉันกำลังแยกวิเคราะห์ไฟล์ที่หลากหลาย


1

ฉันรู้ว่านี่เป็นคำถามเก่า แต่ฉันมีวิธีแก้ปัญหาที่ไม่ได้ระบุไว้ที่นี่

เมื่อคุณผลิต CSV เพิ่มวรรคหลังเครื่องหมายจุลภาค , 005,แต่ก่อนเช่นค่าของคุณ

วิธีนี้ได้ผลเพื่อป้องกันการจัดรูปแบบวันที่อัตโนมัติใน excel 2007 อยู่ดี


2
เพิ่งทดสอบดูเหมือนจะใช้ไม่ได้กับ Excel 2007 และคอลัมน์ตัวเลข : - /
Norman H

1

วิธีการตัวช่วยสร้างการนำเข้าข้อความจะไม่ทำงานเมื่อไฟล์ CSV ที่กำลังนำเข้ามีการแบ่งบรรทัดภายในเซลล์ วิธีนี้จัดการสถานการณ์นี้ (อย่างน้อยก็ด้วยข้อมูลที่คั่นด้วยแท็บ):

  1. สร้างไฟล์ Excel ใหม่
  2. Ctrl + A เพื่อเลือกเซลล์ทั้งหมด
  3. ในรูปแบบตัวเลข combobox ให้เลือกข้อความ
  4. เปิดไฟล์ที่คั่นด้วยแท็บในโปรแกรมแก้ไขข้อความ
  5. เลือกทั้งหมดคัดลอกและวางลงใน Excel


1

สิ่งนี้ทำให้ฉันแทบคลั่งตลอดทั้งวัน (เนื่องจากคุณไม่สามารถควบคุมประเภทคอลัมน์ของ Excel ได้ก่อนที่จะเปิดไฟล์ CSV) และสิ่งนี้ใช้ได้ผลสำหรับฉันโดยใช้ VB.NET และ Excel Interop:

        'Convert .csv file to .txt file.
        FileName = ConvertToText(FileName)

        Dim ColumnTypes(,) As Integer = New Integer(,) {{1, xlTextFormat}, _
                                                        {2, xlTextFormat}, _
                                                        {3, xlGeneralFormat}, _
                                                        {4, xlGeneralFormat}, _
                                                        {5, xlGeneralFormat}, _
                                                        {6, xlGeneralFormat}}

        'We are using OpenText() in order to specify the column types.
        mxlApp.Workbooks.OpenText(FileName, , , Excel.XlTextParsingType.xlDelimited, , , True, , True, , , , ColumnTypes)
        mxlWorkBook = mxlApp.ActiveWorkbook
        mxlWorkSheet = CType(mxlApp.ActiveSheet, Excel.Worksheet)


Private Function ConvertToText(ByVal FileName As String) As String
    'Convert the .csv file to a .txt file.
    'If the file is a text file, we can specify the column types.
    'Otherwise, the Codes are first converted to numbers, which loses trailing zeros.

    Try
        Dim MyReader As New StreamReader(FileName)
        Dim NewFileName As String = FileName.Replace(".CSV", ".TXT")
        Dim MyWriter As New StreamWriter(NewFileName, False)
        Dim strLine As String

        Do While Not MyReader.EndOfStream
            strLine = MyReader.ReadLine
            MyWriter.WriteLine(strLine)
        Loop

        MyReader.Close()
        MyReader.Dispose()
        MyWriter.Close()
        MyWriter.Dispose()

        Return NewFileName
    Catch ex As Exception
        MsgBox(ex.Message)
        Return ""
    End Try

End Function

0

เมื่อเปิด CSV คุณจะได้รับตัวช่วยสร้างการนำเข้าข้อความ ในขั้นตอนสุดท้ายของวิซาร์ดคุณควรจะสามารถนำเข้าคอลัมน์ที่ระบุเป็นข้อความได้ดังนั้นจึงยังคงคำนำหน้า "00" ไว้ หลังจากนั้นคุณสามารถจัดรูปแบบเซลล์ได้ตามที่คุณต้องการ

ฉันลองกับ Excel 2007 และดูเหมือนว่าจะใช้งานได้


1
Excel 2003 ไม่ปรากฏตัวช่วยสร้าง
Sergey Stadnik

0

excel ไม่เคยปรากฏตัวช่วยสร้างสำหรับไฟล์ CSV ถ้าคุณเปลี่ยนชื่อเป็น. txt คุณจะเห็นวิซาร์ดเมื่อคุณสร้างไฟล์> เปิดใน Excel ในครั้งต่อไป


0

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

...,`005,...

แก้ไข:นี่ผิด เคล็ดลับเครื่องหมายวรรคตอนใช้ได้เฉพาะเมื่อป้อนข้อมูลลงใน Excel โดยตรง เมื่อคุณใช้ในไฟล์ CSV เครื่องหมายวรรคตอนจะปรากฏในช่องซึ่งคุณไม่ต้องการ

http://support.microsoft.com/kb/214233


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