Thep Excel

CsvStyle.Typeระบุวิธีจัดการเครื่องหมายคำพูดใน CSV

Enumeration type ที่ระบุว่าเครื่องหมายคำพูด (quote) ในไฟล์ CSV จะมีความสำคัญเมื่อไหร่ ใช้กับ Csv.Document เพื่อควบคุมการแยกวิเคราะห์ข้อมูล

fx
=CsvStyle.QuoteAfterDelimiter | CsvStyle.QuoteAlways

ความนิยม4/10
ความยาก2/10
ประโยชน์4/10

อัปเดต 4 December 2025

Syntax & Arguments

อาร์กิวเมนต์ ชนิด คำอธิบาย
[CsvStyle.QuoteAfterDelimiter]ไม่บังคับ number (0) เครื่องหมายคำพูดมีความสำคัญเฉพาะหลังตัวคั่น (delimiter) เท่านั้น เป็นค่าเริ่มต้น
[CsvStyle.QuoteAlways]ไม่บังคับ number (1) เครื่องหมายคำพูดมีความสำคัญทุกที่ในช่อง ไม่ว่าจะอยู่ตรงไหนก็ตาม

[ ] = อาร์กิวเมนต์ที่ไม่บังคับ

Additional Notes

เวลาที่ผมต้อง Import ไฟล์ CSV ที่มี quote characters ฝังอยู่ในข้อมูล ผมต้องบอก Power Query ว่าจะให้มันสนใจ quote ตรงไหน CsvStyle.Type คือตัวเลือกที่ใช้บอก Power Query ว่า quote มีความหมายเมื่อไหร่ ทำให้การอ่านข้อมูล CSV แม่นยำมากขึ้นครับ

ที่เจ๋งคือ CsvStyle.Type มีค่าสองแบบ: QuoteAfterDelimiter (ค่าเริ่มต้น) ที่สนใจ quote เฉพาะหลัง delimiter และ QuoteAlways ที่สนใจ quote ทุกที่ ทำให้แก้ปัญหา CSV ที่ format ไม่ standard ได้ดีเลย

ส่วนตัวผม ผมมักจะเริ่มด้วย QuoteAfterDelimiter (default) ก่อน ถ้า data มี quote ที่แปลกๆ เกิดขึ้นจนข้อมูลผิด ผมจะลอง QuoteAlways เพื่อดูว่าแบบไหนให้ผลที่ดีกว่า 😎

Examples

ใช้ QuoteAfterDelimiter (ค่าเริ่มต้น)let csv = "Name,Description#(cr)#(lf)John,""Sales Report""#(cr)#(lf)Jane,Normal", options = [Delimiter = ",", CsvStyle = Csv.Style.QuoteAfterDelimiter] in Csv.D…

ผม Import CSV ที่มี quote อยู่หลัง comma นะครับ ด้วย QuoteAfterDelimiter มันจะทำงานดีตามปกติ

fx
let
csv = "Name,Description#(cr)#(lf)John,""Sales Report""#(cr)#(lf)Jane,Normal",
options = [Delimiter = ",", CsvStyle = Csv.Style.QuoteAfterDelimiter]
in
Csv.Document(csv, options)

ผลลัพธ์ตารางที่มี 2 คอลัมน์: Name (John, Jane) และ Description (Sales Report, Normal)
ใช้ QuoteAlways สำหรับ CSV ที่ไม่ standardlet csv = "Item,Price#(cr)#(lf)""Widget"",9.99#(cr)#(lf)Tool,19.99", options = [Delimiter = ",", CsvStyle = Csv.Style.QuoteAlways] in Csv.Document(csv, options)

เวลา quote ปรากฏทุกที่ ผม ใช้ QuoteAlways เพื่อให้ Power Query จัดการ quote ได้ถูกต้อง

fx
let
csv = "Item,Price#(cr)#(lf)""Widget"",9.99#(cr)#(lf)Tool,19.99",
options = [Delimiter = ",", CsvStyle = Csv.Style.QuoteAlways]
in
Csv.Document(csv, options)

ผลลัพธ์ตารางที่มี 2 คอลัมน์: Item (Widget, Tool) และ Price (9.99, 19.99)
เปรียบเทียบสองแบบกับ CSV ที่มี quote ตรงกลางlet csv = "Code,Name#(cr)#(lf)A,Item ""Special"" Type#(cr)#(lf)B,Regular", withQuoteAfter = Csv.Document(csv, [Delimiter = ",", CsvStyle = Csv.Style.QuoteAfterD…

ผม เลือก QuoteAfterDelimiter จะอ่าน quote ตรงกลางเป็นตัวอักษรปกติ แต่ QuoteAlways จะตีความว่าเป็น escaped quote

fx
let
csv = "Code,Name#(cr)#(lf)A,Item ""Special"" Type#(cr)#(lf)B,Regular",
withQuoteAfter = Csv.Document(csv, [Delimiter = ",", CsvStyle = Csv.Style.QuoteAfterDelimiter]),
withQuoteAlways = Csv.Document(csv, [Delimiter = ",", CsvStyle = Csv.Style.QuoteAlways])
in
{ QuoteAfter = withQuoteAfter, QuoteAlways = withQuoteAlways }

ผลลัพธ์สองตารางที่แสดงผลต่างกัน เนื่องจาก quote อยู่กลางข้อมูล

FAQs

ผม ต้องใช้ CsvStyle.Type ทุกครั้งหรือ?+

ไม่จำเป็นครับ ส่วนใหญ่ QuoteAfterDelimiter (ค่าเริ่มต้น) ก็พอดี ผม ใช้เฉพาะเวลา CSV มี quote แปลกๆ ที่ไม่ follow standard CSV format

ผลต่างระหว่าง QuoteAfterDelimiter กับ QuoteAlways คืออะไร?+

QuoteAfterDelimiter ให้ quote มีความสำคัญเฉพาะหลัง delimiter (เช่น comma) เท่านั้น ส่วน QuoteAlways ให้ quote มีความสำคัญทุกที่ ผม ใช้ QuoteAlways เวลา CSV format ของข้อมูลแปลกๆ

ถ้าเลือก CsvStyle ไม่ถูก จะเกิดอะไรขึ้น?+

ข้อมูลอาจจะ parse ผิด เช่น quote ที่ควรจะ escaped กลายเป็นตัวอักษรปกติ หรือตัวอักษรปกติกลายเป็น quote ผม แนะนำว่าให้ลองทั้งสองแบบแล้วดู preview ว่าแบบไหนให้ผลที่ถูกต้อง

Resources & Related

ฟังก์ชันที่ผู้เขียนโยงไว้กับ CsvStyle.Type จัดกลุ่มตามหมวด · ชี้ที่ชื่อใดชื่อหนึ่ง แล้วฟังก์ชันที่ใช้คู่กันจะมีจุดทอง

ฟังก์ชันนี้CsvStyle.Typeenumerations
Accessing data functions (1)
Csv.Document

Csv.Document แปลงข้อมูลรูปแบบ CSV (Comma-Separated Values) ให้เป็นตารางข้อมูล (table) ใน Power Query โดยรองรับการกำหนดตัวแบ่งข้อมูล (delimiter), รหัสภาษา (encoding) และโครงสร้างคอลัมน์ (column structure) แบบต่างๆ ได้ตามความต้องการ function นี้สามารถแยกวิเคราะห์ทั้งข้อมูลแบบ binary content ที่ได้จาก File.Contents และข้อความแบบ text string ที่ได้จาก Web.Contents พร้อมจัดการข้อความที่ครอบด้วย quote ตามมาตรฐานสากล CSV standard เหมาะสมสำหรับการนำเข้าไฟล์ CSV จากระบบไฟล์ในเครื่อง (local), ที่อยู่เว็บไซต์ (URL) หรือการตอบกลับจาก API (API response) ที่มีตัวแบ่งข้อมูลแบบกำหนดเอง (custom delimiter), เนื้อหาภาษาต่างประเทศ หรือโครงสร้างพิเศษที่ต้องการการควบคุมเฉพาะ คืนค่าออกมาเป็นตารางที่ทุกคอลัมน์มีประเภทข้อมูลเป็นข้อความ (text type) ควรใช้ร่วมกับ Table.PromoteHeaders เพื่อยกแถวแรกขึ้นเป็นหัวตาราง และ Table.TransformColumnTypes เพื่อแปลงประเภทข้อมูลให้เหมาะสมกับการใช้งาน

Comments

อีเมลของคุณจะไม่ถูกเผยแพร่