การนำเข้า CSV พร้อมตัวแบ่งบรรทัดใน Excel 2007


130

ฉันกำลังทำงานกับฟีเจอร์เพื่อส่งออกผลการค้นหาไปยังไฟล์ CSV เพื่อเปิดใน Excel หนึ่งในฟิลด์คือฟิลด์ข้อความอิสระซึ่งอาจมีการแบ่งบรรทัดจุลภาคเครื่องหมายคำพูด ฯลฯ เพื่อที่จะแก้ไขปัญหานี้ฉันได้รวมฟิลด์นั้นด้วยเครื่องหมายคำพูดคู่ (")

อย่างไรก็ตามเมื่อฉันนำเข้าข้อมูลลงใน Excel 2007 ตั้งค่าตัวคั่นที่เหมาะสมและตั้งค่าคุณสมบัติข้อความเป็นเครื่องหมายอัญประกาศคู่การแบ่งบรรทัดยังคงสร้างเรกคอร์ดใหม่ที่ตัวแบ่งบรรทัดซึ่งฉันคาดว่าจะเห็นฟิลด์ข้อความทั้งหมดใน เซลล์เดียว

ฉันได้ลองแทนที่ CR / LF (\ r \ n) ด้วยแค่ CR (\ r) และอีกครั้งด้วย LF (\ n) แต่ไม่มีโชค

มีใครพบพฤติกรรมนี้บ้างและถ้าเป็นเช่นนั้นคุณแก้ไขอย่างไร

TIA,
-J

แก้ไข:
นี่คือไฟล์ด่วนที่ฉันเขียนด้วยมือเพื่อทำซ้ำปัญหา

ID, ชื่อ, คำอธิบาย
"12345", "Smith, Joe", "เฮ้
ฉันชื่อโจ"

เมื่อฉันนำเข้าสิ่งนี้ใน Excel 2007 ฉันจะจบลงด้วยแถวส่วนหัวและสองระเบียน โปรดทราบว่าเครื่องหมายจุลภาคใน "Smith, Joe" ได้รับการจัดการอย่างเหมาะสม เป็นเพียงเส้นแบ่งที่ก่อให้เกิดปัญหา


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

4
ฉันมีปัญหากับไฟล์ UTF8 .csv ที่มีข้อมูลหลายบรรทัดและ excel ฉันลงเอยด้วยการอัปโหลดไฟล์ไปยัง Google เอกสารเปิดลงใน Google Sheet จากนั้นดาวน์โหลดเป็นไฟล์. xls ทำงานได้ดีสำหรับฉันด้วยวิธีนี้
creuzerm

คำตอบ:


53

Excel (อย่างน้อยใน Office 2007 บน XP) สามารถทำงานแตกต่างกันไปขึ้นอยู่กับว่าไฟล์ CSV ถูกนำเข้าโดยการเปิดจากเมนู File-> Open หรือดับเบิลคลิกที่ไฟล์ใน Explorer

ฉันมีไฟล์ CSV ที่เข้ารหัส UTF-8 และมีการขึ้นบรรทัดใหม่ในบางเซลล์ ถ้าฉันเปิดไฟล์นี้จากเมนูไฟล์ -> เปิดของ Excel วิซาร์ด "นำเข้า CSV" จะปรากฏขึ้นและไม่สามารถนำเข้าไฟล์ได้อย่างถูกต้อง: บรรทัดใหม่จะเริ่มแถวใหม่แม้ว่าจะยกมาก็ตาม หากฉันเปิดไฟล์นี้โดยดับเบิลคลิกที่ไฟล์ในหน้าต่าง Explorer ไฟล์นั้นจะเปิดขึ้นอย่างถูกต้องโดยไม่มีการแทรกแซงของวิซาร์ด


1
มีความคิดอย่างไรในการตั้งค่าเช่นเดียวกับการดับเบิลคลิก
Michiel Thalen

7
มันเป็นความจริง! แปลกแค่ไหน.
เดวิด

5
หากคุณใช้การตั้งค่าภูมิภาคของเยอรมันคุณต้องใช้อัฒภาค (;) แทนเครื่องหมายจุลภาค (,) ใน csv ของคุณเพื่อให้ดับเบิ้ลคลิกเพื่อทำงาน ...
user1859022

3
มันไม่ได้ผลสำหรับฉัน ด้วย "," เป็นตัวคั่นจะเปิดทุกอย่างในคอลัมน์เดียวด้วยการดับเบิลคลิก ด้วย ";" เป็นตัวคั่นจะถูกนำเข้าอย่างถูกต้องยกเว้นช่องข้อความหลายบรรทัดซึ่งนำเข้าเป็นหลายระเบียน ฉันมี Excel 2010
Andrej Adamenko

2
@ user1859022 ฉันเพิ่มเป็นสองเท่าสำหรับภาษาฮังการี จริงๆแล้วโลแคลใด ๆ ที่ใช้ลูกน้ำเป็นตัวคั่นทศนิยมจะต้องใช้อัฒภาคเป็นตัวคั่นฟิลด์เพื่อให้ csv ดับเบิลคลิกที่เปิดเพื่อให้ทำงานได้อย่างถูกต้อง
robotik

42

ไม่มีวิธีแก้ปัญหาที่แนะนำสำหรับฉัน

สิ่งที่ใช้งานได้จริง (ด้วยการเข้ารหัสใด ๆ ):

คัดลอก / วางข้อมูลจากไฟล์ csv (เปิดในตัวแก้ไข) จากนั้นดำเนินการ "ข้อความในคอลัมน์" -> ไม่ได้ผลเลย

ไปที่แท็บถัดไปแล้วคัดลอก / วางอีกครั้ง (สิ่งเดียวกับที่คุณมีอยู่แล้วในคลิปบอร์ดของคุณ) -> ทำงานโดยอัตโนมัติในขณะนี้


2
ในกรณีของฉันวิธีนี้ใช้ได้ผล: มันยุบ CSV ลงในระเบียนเดียวอย่างถูกต้อง แต่ลบข้อมูลทั้งหมดในฟิลด์ที่ผ่านบรรทัดใหม่
Lilienthal

1
สิ่งนี้ได้ผลแนวคิดใด ๆ ที่ทำไมมันไม่ทำงานเมื่อนำเข้า csv จาก excel
Rafael Sisto

1
ฉันยืนยันได้ว่าใช้งานได้คุณสามารถวางข้อมูลเพิ่มเติมในแผ่นงานต่างๆได้โดยไม่ต้องใช้คำสั่ง "text to column" ซ้ำ สิ่งนี้มีประโยชน์หากคุณต้องการนำเข้าไฟล์หลาย ๆ ไฟล์
Alex

1
เหตุใดจึงใช้งานได้ แต่ไม่เปิด CSV หรือเพิ่มเป็นข้อมูลข้อความด้วยการตั้งค่าที่เหมาะสมทั้งหมดจึงไม่ทำงาน ขอบคุณสำหรับทิป. ทีม Copy / Paste ต้องคุยกับทีมนำเข้าข้อมูล!
alexGIS

2
อึศักดิ์สิทธิ์ มันใช้งานได้จริง และมันก็สมเหตุสมผลแล้วว่าทำไม เมื่อสร้าง "ข้อความเป็นคอลัมน์" Excel จะจำการตั้งค่าและจะแปลงอัตโนมัติ เมื่อคุณแยกข้อความออกเป็นแถวแล้วมันจะดูทีละแถวและไม่สนใจบรรทัดใหม่ ฉันคิดว่า MS ควรมีช่องทำเครื่องหมายเพื่อคงพฤติกรรมหรือสแกนข้อมูลใหม่ ฉันไม่สนใจ ... ถ้ามันทำงาน
ผิดพลาด

29

หากคุณกำลังดำเนินการด้วยตนเองให้ดาวน์โหลด LibreOffice และใช้ LibreOffice Calc เพื่อนำเข้า CSV ของคุณ มันทำงานได้ดีกว่า Excel เวอร์ชันใด ๆ ที่ฉันเคยลองและสามารถบันทึกเป็น XLS หรือ XLSX ได้ตามต้องการหากคุณต้องการถ่ายโอนไปยัง Excel ในภายหลัง

แต่ถ้าคุณติด Excel และต้องการการแก้ไขที่ดีขึ้นดูเหมือนจะมีวิธี ดูเหมือนว่าจะขึ้นอยู่กับสถานที่ (ซึ่งดูเหมือนงี่เง่าในความเห็นที่ต่ำต้อยของฉัน) ฉันไม่มี Excel 2007 แต่ฉันมี Excel 2010 และตัวอย่างที่ให้ไว้:

ID,Name,Description
"12345","Smith, Joe","Hey.
My name is Joe."

ไม่ทำงาน ฉันเขียนไว้ใน Notepad และเลือกบันทึกเป็น ... และถัดจากปุ่มบันทึกคุณสามารถเลือกการเข้ารหัสได้ ฉันเลือก UTF-8 ตามที่แนะนำ แต่โชคไม่ดี แม้ว่าการเปลี่ยนเครื่องหมายจุลภาคเป็นอัฒภาคได้ผลสำหรับฉัน ฉันไม่ได้เปลี่ยนอะไรเลยและมันก็ใช้ได้ผล ดังนั้นฉันจึงเปลี่ยนตัวอย่างให้มีลักษณะเช่นนี้และเลือกการเข้ารหัส UTF-8 เมื่อบันทึกใน Notepad:

ID;Name;Description
"12345";"Smith, Joe";"Hey.
My name is Joe."

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

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

ดังนั้นรายละเอียดทั้งหมดที่ฉันสามารถรวบรวมเพื่อให้มันใช้งานได้คือ:

  1. ต้องบันทึกไฟล์เป็น UTF-8 ด้วย BOM ซึ่งเป็นสิ่งที่ Notepad ทำเมื่อคุณเลือก UTF-8 ฉันลอง UTF-8 โดยไม่มี BOM (สามารถเปลี่ยนได้อย่างง่ายดายใน Notepad ++) แต่การดับเบิลคลิกที่เอกสารล้มเหลว
  2. คุณต้องใช้เครื่องหมายจุลภาคหรือตัวคั่นอัฒภาค แต่ไม่ใช่ตัวคั่นทศนิยมในการตั้งค่าภูมิภาคของคุณ บางทีตัวละครอื่น ๆ ก็ใช้ได้ แต่ฉันไม่รู้ว่าตัวไหน
  3. คุณต้องอ้างฟิลด์ที่มีการขึ้นบรรทัดใหม่ด้วยอักขระ "
  4. ฉันใช้การลงท้ายบรรทัดของ Windows (\ r \ n) ทั้งในช่องข้อความและเป็นตัวคั่นบันทึกซึ่งใช้งานได้
  5. คุณต้องดับเบิลคลิกที่ไฟล์เพื่อเปิดการนำเข้าข้อมูลจากข้อความจะไม่ได้ผล

หวังว่านี่จะช่วยใครบางคนได้


นอกจากนี้เคล็ดลับที่กล่าวถึงโดย @sdplus ดูเหมือนจะได้ผล! ฉันคิดว่าสิ่งที่เกิดขึ้นคือเมื่อคุณวางและทำ "text to คอลัมน์" เป็นครั้งแรกคุณกำลังกำหนดค่าสิ่งที่อ้างถึงและตัวคั่นฟิลด์ใน Excel ในครั้งที่สองที่คุณวางจะใช้การกำหนดค่านี้และแยกข้อมูลออกเป็นคอลัมน์อย่างถูกต้องตามการกำหนดค่า แต่ดูเหมือนว่าจะเป็นแนวทางปฏิบัติ
ketil

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

เคล็ดลับของคุณดูเหมือนจะใช้ได้ผลจริงๆ แต่ดูเหมือนอัฒภาคไม่มีส่วนเกี่ยวข้องกับคำตอบ ปัญหาคือ Excel ปฏิบัติกับไฟล์ CSV แตกต่างกันขึ้นอยู่กับการตั้งค่าภูมิภาค ฉันมาจากเยอรมันและสำหรับฉันไฟล์ CSV จาก Excel มักจะมีเครื่องหมายอัฒภาคแทนที่จะเป็นเครื่องหมายจุลภาค (เหตุผลก็คือในเยอรมนีตัวแยกทศนิยมคือลูกน้ำแทนที่จะเป็นจุด) ทางออกที่แท้จริงดูเหมือนว่า Excel จะโหลดไฟล์ CSV แตกต่างจากไฟล์ข้อความอื่น ๆ โดยสิ้นเชิง ดังนั้นไฟล์ CSV ที่มีตัวแบ่งบรรทัดระหว่างใบเสนอราคาดูเหมือนจะใช้ได้ ไฟล์ข้อความอื่น ๆ ไม่มี
Martini Bianco

@Martini ใช่ฉันมี Norwegian Excel และเรายังใช้ลูกน้ำเป็นตัวคั่นทศนิยมด้วยดังนั้นฉันจึงพูดถึงว่าสิ่งนี้ขึ้นอยู่กับการตั้งค่าภูมิภาคอย่างไร (แม้ว่าฉันจะเรียกว่าโลแคลก็ตาม) บางทีฉันควรจะเรียบเรียงใหม่เพื่อความชัดเจน
ketil

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

25

ในที่สุดฉันก็พบปัญหาแล้ว!

ปรากฎว่าเรากำลังเขียนไฟล์โดยใช้การเข้ารหัส Unicode แทนที่จะเป็น ASCII หรือ UTF-8 การเปลี่ยนการเข้ารหัสบน FileStream ดูเหมือนจะช่วยแก้ปัญหาได้

ขอบคุณทุกคนสำหรับคำแนะนำทั้งหมดของคุณ!


29
การเข้ารหัส ASCII ดูเหมือนจะไม่สามารถแก้ปัญหาให้ฉันได้ (แม้ว่าบน MacOS) และฉันไม่มีช่องว่างชั้นนำและเขตข้อมูลของฉันถูกยกมา การนำเข้าเอกสารที่เหมือนกันทุกประการสามารถทำได้ดีใน Google เอกสาร น่าหงุดหงิดแค่ไหน BTW ไม่มีสิ่งที่เรียกว่าไฟล์ข้อความที่เข้ารหัส "Unicode" จะต้องเป็นหนึ่งในการนำ Unicode ไปใช้ (UTF-8, UTF-16, UTF-32 เป็นต้น)
Ben

11
ขอบคุณสำหรับการแก้ปัญหา ฉันยังคงสงสัยว่าคำตอบคืออะไรดังนั้นฉันจึงลองสร้าง csv ด้วยตัวแบ่งบรรทัดใน Excel และดูว่ามันบันทึกอะไร ฉันปรากฎว่า Excel ใช้เพียงฟีดบรรทัดสำหรับบรรทัดใหม่ในเซลล์ ถ้าฉันพยายามสร้าง csv เดียวกันใน Notepad มันจะใช้การป้อนบรรทัด + การกลับแคร่สำหรับตัวแบ่งบรรทัด ดังนั้นสำหรับการแบ่งบรรทัดในเซลล์เดียวตรวจสอบให้แน่ใจว่าใช้เฉพาะฟีดบรรทัดเท่านั้น (LF หรือ \ n) ไม่ใช่การกลับแคร่ (CR หรือ \ r) Excel ใช้ทั้งสองอย่างเพื่อยุติแถว
xr280xr

1
การเข้ารหัส ASCII ไม่สามารถแก้ไขปัญหาให้ฉันได้เช่นกัน - Excel 2000, Windows 7
ChrisJJ

1
สำหรับ OS X บน Macintosh ให้บันทึกเป็น "Windows Comma Separated (csv)" สิ่งนี้จะเพิ่มขึ้นบรรทัดใหม่แทนการขึ้นบรรทัดใหม่ โดยจะแสดงอยู่ในเมนูแบบเลื่อนลงสำหรับรูปแบบภายใต้ "รูปแบบพิเศษ"
taco

ควรใช้การเข้ารหัส Unicode ใด (UTF-8, UTF-16)
Andrej Adamenko

7

คำตอบสั้น ๆ

ลบอักขระ newline / linefeed ( \nด้วย Notepad ++) Excel จะยังคงจดจำอักขระส่งคืนแคร่ ( \r) เพื่อแยกระเบียน

คำตอบยาว

ดังที่กล่าวไว้อักขระขึ้นบรรทัดใหม่ได้รับการสนับสนุนในช่อง CSV แต่ Excel ไม่ได้จัดการอย่างสง่างามเสมอไป ฉันประสบปัญหาเดียวกันกับ CSV ของบุคคลที่สามซึ่งอาจมีปัญหาในการเข้ารหัส แต่ไม่ได้รับการปรับปรุงเมื่อมีการเปลี่ยนแปลงการเข้ารหัส

สิ่งที่ได้ผลสำหรับฉันคือการลบอักขระขึ้นบรรทัดใหม่ทั้งหมด ( \n) สิ่งนี้มีผลในการยุบเขตข้อมูลให้เป็นระเบียนเดียวโดยสมมติว่าระเบียนของคุณถูกคั่นด้วยการรวมกันของการส่งคืนค่าขนส่งและการขึ้นบรรทัดใหม่ (CR / LF) จากนั้น Excel จะนำเข้าไฟล์อย่างถูกต้องและรับรู้บันทึกใหม่โดยการส่งคืนแคร่

เห็นได้ชัดว่าวิธีแก้ปัญหาที่สะอาดกว่าคือการแทนที่บรรทัดใหม่จริง ( \r\n) ด้วยการผสมอักขระชั่วคราวก่อนแทนที่บรรทัดใหม่ ( \n) ด้วยอักขระที่คุณเลือก (เช่นลูกน้ำในไฟล์อัฒภาค) จากนั้นแทนที่อักขระชั่วคราวด้วยการขึ้นบรรทัดใหม่ที่เหมาะสมอีกครั้ง


1
ฉันมีสถานการณ์ตรงกันข้าม: \nระหว่างบรรทัดและ\r\nค่าภายใน เพิ่งลอกหลังใน Notepad ++
Rarst

5

+1 ในความคิดเห็นของ J Ashley ฉันพบปัญหานี้ด้วย ปรากฎว่า Excel ต้องการ:

  • อักขระขึ้นบรรทัดใหม่ ("\ n") ในสตริงที่ยกมา

  • การกลับรถและขึ้นบรรทัดใหม่ระหว่างแต่ละแถว

เช่น "Test", "Multiline item \ n multiline item" \ r \ n "Test2", "Multiline item \ n multiline item" \ r \ n

ฉันใช้ notepad ++ เพื่อคั่นแต่ละแถวอย่างถูกต้องและใช้เฉพาะบรรทัดใหม่ในสตริง ค้นพบสิ่งนี้โดยการสร้างรายการหลายบรรทัดในเอกสาร excel เปล่าและเปิด csv ใน notepad ++


มันใช้งานได้สำหรับฉันด้วยอักขระขึ้นบรรทัดใหม่เป็นทั้งรายการหลายบรรทัดและตัวคั่นแถวเมื่อฉันตั้งค่าตัวคั่นฟิลด์ตามสถานที่ของฉัน
robotik

4

ถ้าเขตข้อมูลมีช่องว่างนำหน้า Excel จะละเว้นเครื่องหมายคำพูดคู่เป็นตัวระบุข้อความ วิธีแก้ปัญหาคือการกำจัดช่องว่างนำหน้าระหว่างเครื่องหมายจุลภาค (ตัวคั่นฟิลด์) และเครื่องหมายอัญประกาศคู่ ตัวอย่างเช่น:

เสีย:
ชื่อหัวข้อคำอธิบาย
"John" "Mr. " "คำอธิบายโดยละเอียดของฉัน"

การทำงาน:
ชื่อหัวข้อคำอธิบาย
"John" "Mr." "คำอธิบายโดยละเอียดของฉัน"


2
อย่างไรก็ตามฉันยอมรับว่าฉันไม่มีช่องว่างในผลลัพธ์ของฉัน ความคิดใด ๆ ?
jeremyalan

เราต้องการสายขาด :(
ลุค

4

ใช้ Google ชีตและนำเข้าไฟล์ CSV

จากนั้นคุณสามารถส่งออกเพื่อใช้ใน Excel


1
เคล็ดลับดีๆ! นี่เป็นวิธีการแปลงที่สะดวกที่สุดหากคุณพอใจกับการอัปโหลด CSV ของคุณไปยังบริการของบุคคลที่สาม (เช่นข้อมูลที่ไม่เป็นความลับ) โปรดทราบว่าคุณอาจต้องตั้งค่าตัวคั่นด้วยตนเองเมื่อนำเข้า และคุณอาจต้องปรับขนาดเซลล์ในไฟล์ Excel ที่ได้เพื่อให้แสดงได้อย่างถูกต้อง
m000

ยังใช้งานได้กับ Excel ใน Office 365 ในเบราว์เซอร์ ฉันไม่สามารถเปิด CSV ที่มีการแบ่งบรรทัดภายในเซลล์ด้วยแอปพลิเคชัน Excel บนเดสก์ท็อปได้อย่างถูกต้อง (ลองใช้คำแนะนำส่วนใหญ่จากหน้านี้) แต่ Excel บน office.com สามารถเปิดได้อย่างถูกต้อง
จอร์เจีย w.

3

หากใครที่สะดุดใจกับกระทู้นี้และกำลังมองหาคำตอบที่ชัดเจนก็ไปที่นี่ (ให้เครดิตกับบุคคลที่กล่าวถึง LibreOffice:

1) ติดตั้ง LibreOffice 2) เปิด Calc และนำเข้าไฟล์ 3) ไฟล์ txt ของฉันมีฟิลด์ที่คั่นด้วยและฟิลด์อักขระอยู่ใน "4) บันทึกเป็นไฟล์ ODS 5) เปิดไฟล์ ODS ใน Excel 6) บันทึกเป็น. xls (x) 7) เสร็จสิ้น 8) สิ่งนี้ทำงานได้อย่างสมบูรณ์แบบสำหรับฉันและช่วยฉันได้ BIGTIME!


3
ไม่จำเป็นต้องบันทึกเป็น ODS LibreOffice สามารถบันทึก xls (x) ได้โดยกำเนิด
robotik

2

วางลงใน Notepad ++ เลือกการเข้ารหัส> เข้ารหัสใน ANSI คัดลอกทั้งหมดอีกครั้งแล้ววางลงใน Excel :)


2

ฉันมีปัญหาที่คล้ายกัน ฉันมีข้อมูล Twitter ใน MySQL ข้อมูลมี Line feed (LF หรือ \ n) อยู่ในข้อมูล ฉันมีข้อกำหนดในการส่งออกข้อมูล MySQL ไปยัง excel LF ทำให้การนำเข้าไฟล์ csv ของฉันสับสน ดังนั้นฉันจึงทำสิ่งต่อไปนี้ -

1. From MySQL exported to CSV with Record separator as CRLF
2. Opened the data in notepad++ 
3. Replaced CRLF (\r\n) with some string I am not expecting in the Data. I used ###~###! as replacement of CRLF
4. Replaced LF (\n) with Space
5. Replaced ###~###! with \r\n, so my record separator are back.
6. Saved and then imported into Excel

หมายเหตุ - ในขณะที่แทนที่ CRLF หรือ LF อย่าลืมทำเครื่องหมายที่ Excended (\ n, \ r, \ t ... ช่องทำเครื่องหมาย [ดูที่ด้านล่างซ้ายของกล่องโต้ตอบ)


2

ประสบการณ์ของฉันกับ Excel 2010 บน WinXP พร้อมการตั้งค่าภูมิภาคของฝรั่งเศส

  • ตัวคั่นของ csv ที่คุณนำเข้าต้องตรงกับตัวคั่นรายการของการตั้งค่าภูมิภาคของคุณ (ในกรณีของฉัน)
  • คุณต้องดับเบิลคลิกที่ไฟล์จาก explorer อย่าเปิดจาก Excel

1

Excel เสียอย่างไม่น่าเชื่อเมื่อจัดการกับ CSV LibreOffice ทำงานได้ดีกว่ามาก ดังนั้นฉันจึงพบว่า:

  • ไฟล์ต้องเข้ารหัสเป็น UTF-8 ด้วย BOM ดังนั้นให้พิจารณาสิ่งนี้สำหรับประเด็นทั้งหมดด้านล่าง
  • ผลลัพธ์ที่ดีที่สุดคือทำได้โดยการเปิดจาก File Explorer
  • หากคุณเปิดจากภายใน Excel มีสองผลลัพธ์ที่เป็นไปได้:
    • หากมีเพียงอักขระ ASCII ก็น่าจะใช้ได้
    • หากมีอักขระที่ไม่ใช่ ASCII จะทำให้การแบ่งบรรทัดของคุณยุ่งเหยิง
  • ดูเหมือนว่าจะขึ้นอยู่กับตัวคั่นทศนิยมที่กำหนดค่าในการตั้งค่าภูมิภาคของระบบปฏิบัติการดังนั้นคุณต้องเลือกอันที่ถูกต้อง
  • ฉันจะพนันได้เลยว่ามันอาจทำงานแตกต่างกันไปขึ้นอยู่กับเวอร์ชันของ OS และ Office

คุณยืนยันว่า LibreOffice เดาได้ดีกว่า Excel ใช่ไหม Excel ถามคำถามที่ถูกต้องทั้งหมดเมื่อนำเข้าไฟล์ข้อความเว้นแต่คุณจะบอกให้เดา
Tom Blodget

1
ขอบคุณ! ช่วยฉันในการแปลง CSV จาก "UTF-8 ที่ไม่มี BOM" เป็น "UTF-8 พร้อม BOM" (ง่ายๆเพียงแค่ "UTF-8" ในเมนู) โดย Notepad ++ จากนั้นฉันก็เปิดมันจาก Explorer และ Excel แสดงให้เห็นอย่างเหมาะสมด้วยสัญลักษณ์ที่ถูกต้องและการแบ่งบรรทัดที่ถูกต้องภายในเซลล์ เมื่อฉันเปิดในค่าเริ่มต้นการเข้ารหัส "UTF-8 ที่ไม่มี BOM" จาก Explorer Excel ที่นำเข้าจะแบ่งบรรทัดอย่างถูกต้อง แต่แสดงสัญลักษณ์ที่ไม่ใช่ภาษาละตินผิดวิธี ถ้าฉันเปิดจาก Excel แสดงว่าการเข้ารหัสถูกต้อง แต่ไม่สามารถจัดการกับการแบ่งบรรทัดได้
Sergey Beloglazov

1

ภาพรวม

เกือบ 10 ปีหลังจากโพสต์ต้นฉบับ Excel ยังไม่ได้ปรับปรุงการนำเข้าไฟล์ CSV อย่างไรก็ตามฉันพบว่าการนำเข้าตาราง HTML ดีกว่ามาก ดังนั้นเราสามารถใช้ Python เพื่อแปลง CSV เป็น HTML จากนั้นนำเข้า HTML ที่เป็นผลลัพธ์ไปยัง Excel

ข้อดีของแนวทางนี้คือ (ก) ทำงานได้อย่างน่าเชื่อถือ (b) คุณไม่จำเป็นต้องส่งข้อมูลของคุณไปยังบริการของบุคคลที่สาม (เช่น Google ชีต) (c) ไม่จำเป็นต้องติดตั้ง "ไขมัน" เพิ่มเติม (LibreOffice, ตัวเลข ฯลฯ ) สำหรับผู้ใช้ส่วนใหญ่ (d) ระดับที่สูงกว่าการเข้าไปยุ่งกับอักขระ CR / LF และเครื่องหมาย BOM (e) ไม่จำเป็นต้องใช้การตั้งค่าสถานที่

ขั้นตอน

ขั้นตอนต่อไปนี้สามารถรันบนเชลล์แบบ bash ได้ตราบเท่าที่ติดตั้ง Python 3 แม้ว่า Python จะสามารถใช้เพื่ออ่าน CSV ได้โดยตรง แต่csvkitก็ถูกใช้เพื่อทำการแปลงกลางเป็น JSON สิ่งนี้ช่วยให้เราหลีกเลี่ยงไม่ต้องจัดการกับความซับซ้อนของ CSV ในโค้ด Python ของเรา

ขั้นแรกให้บันทึกสคริปต์ต่อไปนี้เป็นjson2html.pyไฟล์. สคริปต์อ่านไฟล์ JSON จาก stdin และทิ้งเป็นตาราง HTML:

#!/usr/bin/env python3
import sys, json, html

if __name__ == '__main__':
    header_emitted = False
    make_th = lambda s: "<th>%s</th>" % (html.escape(s if s else ""))
    make_td = lambda s: "<td>%s</td>" % (html.escape(s if s else ""))
    make_tr = lambda l, make_cell: "<tr>%s</tr>" % ( "".join([make_cell(v) for v in l]) )
    print("<html><body>\n<table>")
    for line in json.load(sys.stdin):
        lk, lv = zip(*line.items())
        if not header_emitted:
            print(make_tr(lk, make_th))
            header_emitted = True
        print(make_tr(lv, make_td))
    print("</table\n</body></html>")

จากนั้นติดตั้ง csvkit ในสภาพแวดล้อมเสมือนและใช้csvjsonเพื่อป้อนไฟล์อินพุตไปยังสคริปต์ของเรา เป็นความคิดที่ดีที่จะปิดการเดาประเภทเซลล์ด้วย-Iอาร์กิวเมนต์:

$ virtualenv -p python3 pyenv
$ . ./pyenv/bin/activate
$ pip install csvkit
$ csvjson -I input.csv | python3 json2html.py > output.html

ตอนนี้output.htmlสามารถนำเข้าใน Excel การแบ่งบรรทัดในเซลล์จะถูกเก็บรักษาไว้

คุณอาจต้องการล้างสภาพแวดล้อมเสมือน Python ของคุณ:

$ deactivate
$ rm -rf pyenv

1

สำหรับ Excel 2016:

เพิ่งมีปัญหาเดียวกันกับการแบ่งบรรทัดภายในไฟล์ csv ด้วย Excel Wizard

หลังจากนั้นฉันได้ลองใช้ฟีเจอร์ "การสืบค้นใหม่": ข้อมูล -> คำค้นหาใหม่ -> จากไฟล์ -> จาก CSV -> เลือกไฟล์ -> นำเข้า -> โหลด

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


0

สิ่งที่ใช้ได้ผลสำหรับฉันการนำเข้าสู่ Excel โดยตรงโดยมีเงื่อนไขว่าการนำเข้าจะทำในรูปแบบข้อความแทนเป็นรูปแบบ csv M /


0

เพียงสร้างแผ่นงานใหม่ด้วยเซลล์ที่มี linebreak บันทึกลงใน csv จากนั้นเปิดด้วยโปรแกรมแก้ไขที่สามารถแสดงส่วนท้ายของอักขระบรรทัด (เช่น notepad ++) เมื่อทำเช่นนั้นคุณจะสังเกตเห็นว่า linebreak ในเซลล์ถูกเข้ารหัสด้วย LF ในขณะที่ส่วนท้ายของบรรทัด "จริง" คือโค้ดที่มี CR LF Voilàตอนนี้คุณรู้วิธีสร้างไฟล์ csv ที่ "ถูกต้อง" สำหรับ excel แล้ว


0

ฉันมีปัญหานี้เช่นกันเช่น. ไฟล์ csv (สตริงคั่นด้วยเครื่องหมายจุลภาค, สตริงที่คั่นด้วยเครื่องหมายอัญประกาศคู่) กับ LF ในสตริงที่ยกมา สิ่งเหล่านี้ถูกดาวน์โหลดไฟล์ Square ฉันได้นำเข้าข้อมูล แต่แทนที่จะนำเข้าเป็นไฟล์ข้อความนำเข้าเป็น "จาก HTML" คราวนี้ไม่สนใจ LF ในสตริงที่ยกมา


0

สิ่งนี้ใช้ได้กับ Mac โดยใช้ csv และเปิดไฟล์ใน Excel

ใช้ python เพื่อเขียนไฟล์ csv

data = '"บรรทัดแรกของเซลล์ a1 \ r บรรทัดที่ 2 ในเซลล์ a1 \ r บรรทัดที่ 3 ในเซลล์ a1", "เซลล์ b1", "บรรทัดที่ 1 ในเซลล์ c1 \ r บรรทัดที่ 2 ในเซลล์ c1" \ n "บรรทัดแรกใน เซลล์ a2 "\ n '

file.write (ข้อมูล)


0

บน MacOS ให้ลองใช้ Numbers

หากคุณสามารถเข้าถึง Mac OS ฉันพบว่าหมายเลขสเปรดชีตของ Apple ทำงานได้ดีในการยกเลิกการเลือกไฟล์ CSV แบบหลายบรรทัดที่ซับซ้อนซึ่ง Excel ไม่สามารถจัดการได้ เพียงแค่เปิด.csvด้วย Numbers จากนั้นส่งออกไปยัง Excel


0

ในกรณีของฉันเปิด CSV ใน notepad ++ และการเพิ่มSEP=","เป็นบรรทัดแรกช่วยให้ฉันเปิด CSV ด้วยตัวแบ่งบรรทัดและ utf-8 ใน Excel โดยไม่มีปัญหา


0

แทนที่ตัวคั่นด้วย TAB (\ t) แทนเครื่องหมายจุลภาค (,) จากนั้นเปิดไฟล์ในโปรแกรมแก้ไขของคุณ (Notepad เป็นต้น) คัดลอกเนื้อหาจากที่นั่นแล้ววางลงในไฟล์ Excel


ลองใช้ไฟล์ขนาดใหญ่ :)
chukko

-1

การแบ่งบรรทัดภายในเครื่องหมายคำพูดคู่ทำได้ดีอย่างสมบูรณ์ตามมาตรฐาน CSV การแยกบรรทัดใน Excel ขึ้นอยู่กับการตั้งค่าระบบปฏิบัติการของตัวคั่นรายการ:

  1. ของ Windows: คุณจะต้องตั้ง seperator รายการเพื่อจุลภาค (ภูมิภาคและภาษา»รูปแบบ»ขั้นสูง) ที่มา: /superuser/238944/how-to-force-excel-to-open-csv-files- กับข้อมูลที่จัดในคอลัมน์ # คำตอบ-633302

  2. Mac: จำเป็นต้องเปลี่ยนภูมิภาคไปยังสหรัฐ (แล้วเปลี่ยนการตั้งค่าอื่น ๆ กลับไปตามความต้องการของคุณด้วยตนเอง) ที่มา: https://answers.microsoft.com/en-us/mac/forum/macoffice2016-macexcel/line-separator-comma -semicolon-in-excel-2016-for / 7db1b1a0-0300-44ba-ab9b-35d1c40159c6 (ดูคำตอบของ NewmanLee)

อย่าลืมปิด Excel ให้เรียบร้อยก่อนลองอีกครั้ง

ฉันจำลองปัญหาได้สำเร็จและสามารถแก้ไขได้โดยใช้ข้างต้นทั้งใน Max และ Windows


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