การสร้างไฟล์ CSV สำหรับ Excel, วิธีการขึ้นบรรทัดใหม่ภายในค่า


158

ฉันต้องการสร้างไฟล์สำหรับ Excel ค่าบางอย่างในไฟล์นี้มีหลายบรรทัด

นอกจากนี้ยังมีข้อความที่ไม่ใช่ภาษาอังกฤษอยู่ในนั้นดังนั้นไฟล์ต้องเป็น Unicode

ไฟล์ที่ฉันสร้างตอนนี้มีลักษณะดังนี้: (ใน UTF8 ที่ไม่มีข้อความภาษาอังกฤษผสมอยู่และมีหลายบรรทัด)

Header1,Header2,Header3
Value1,Value2,"Value3 Line1
Value3 Line2"

โปรดสังเกตว่าค่าหลายบรรทัดนั้นอยู่ในเครื่องหมายคำพูดคู่โดยมีการขึ้นบรรทัดใหม่ทุกวันตามปกติ

จากสิ่งที่ฉันพบบนเว็บสิ่งนี้น่าจะใช้ได้ แต่อย่างน้อยก็ไม่ชนะไฟล์ Excel 2007 และ UTF8 Excel ถือว่าบรรทัดที่ 3 เป็นแถวที่สองของข้อมูลไม่ใช่แถวที่สองของแถวข้อมูลแถวแรก .

สิ่งนี้ต้องทำงานบนเครื่องลูกค้าของฉันและฉันไม่สามารถควบคุม Excel เวอร์ชันของพวกเขาดังนั้นฉันต้องการโซลูชันที่จะทำงานกับ Excel 2000 และใหม่กว่า

ขอบคุณ

แก้ไข: ฉัน "แก้ไข" ปัญหาของฉันโดยมีสองตัวเลือก CSV หนึ่งตัวสำหรับ Excel (Unicode แยกแท็บไม่มีบรรทัดใหม่ในฟิลด์) และอีกอันสำหรับส่วนที่เหลือของโลก (UTF8 มาตรฐาน CSV)

ไม่ใช่สิ่งที่ฉันกำลังมองหา แต่อย่างน้อยก็ใช้งานได้ (จนถึงตอนนี้)


1
FYI: ทั้งหมดนี้ทำงานได้อย่างสมบูรณ์ใน LibreOffice และการนำเข้า CSV นั้นง่ายกว่ามากในตอนแรก
user2061057

9
คำตอบที่ได้รับการยอมรับเกี่ยวกับช่องว่างเพิ่มเติมนั้นทำให้เกิดความสับสนอย่างไม่น่าเชื่อในขณะนี้ว่าคุณได้แก้ไขคำถามของคุณและลบช่องว่างออก ...
Matti Virkkunen

คำตอบ:


70

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

หากคุณมีอักขระที่ไม่ใช่ ASCII (เข้ารหัสเป็น UTF-8) ในไฟล์คุณควรมี UTF-8 BOM (3 ไบต์hex EF BB BF) ที่จุดเริ่มต้นของไฟล์ มิฉะนั้น Excel จะตีความข้อมูลตามการเข้ารหัสเริ่มต้นของโลแคลของคุณ (เช่น cp1252) แทน utf-8 และอักขระที่ไม่ใช่ ASCII ของคุณจะถูกทิ้งในถังขยะ

ความคิดเห็นต่อไปนี้มีผลกับ Excel 2003, 2007 และ 2013 ไม่ได้ทดสอบใน Excel 2000

หากคุณเปิดไฟล์โดยดับเบิลคลิกที่ชื่อไฟล์ใน Windows Explorer ทุกอย่างจะทำงานได้ดี

หากคุณเปิดจากภายใน Excel ผลลัพธ์จะแตกต่างกันไป:

  1. คุณมีอักขระ ASCII เท่านั้นในไฟล์ (และไม่มี BOM): ใช้งานได้
  2. คุณมีอักขระที่ไม่ใช่ ASCII (เข้ารหัสเป็น UTF-8) ในไฟล์โดยมี UTF-8 BOM ในตอนเริ่มต้น: มันรับรู้ว่าข้อมูลของคุณถูกเข้ารหัสใน UTF-8 แต่จะละเว้นส่วนขยาย csv และวางคุณลงในข้อความ นำเข้าตัวช่วยสร้างไม่ใช่ขออภัยด้วยผลลัพธ์ที่คุณได้รับปัญหาการแบ่งบรรทัด

ตัวเลือกรวมถึง:

  1. อบรมผู้ใช้ไม่ให้เปิดไฟล์จากใน Excel :-(
  2. ลองเขียนไฟล์ XLS โดยตรง ... มีแพ็คเกจ / ไลบรารี่สำหรับทำใน Python / Perl / PHP / .NET / etc

1
ขอบคุณฉันแก้ไขปัญหาช่องว่างนำในคำถามฉันพิมพ์ตัวอย่าง CSV ด้วยตนเองและไม่ได้คัดลอกวางจากไฟล์จริงไฟล์จริงไม่รวมช่องว่างเหล่านั้นจับดี
Nir

@Nir: ตอนนี้เรามาพูดถึงปัญหาที่แท้จริงของคุณ นั่นหมายความว่าคุณมี UTF-8 BOM และเปิดไฟล์จากภายใน Excel และมีตัวช่วยสร้างการนำเข้าข้อความโดยไม่ทราบว่าบรรทัดใหม่ของ Value3 ของคุณควรเป็น "ป้องกัน" - ถูกต้องหรือไม่ หรือบางทีคุณอาจไม่มี UTF-8 BOM และคุณต้องบอก TIW ว่าข้อมูลของคุณเข้ารหัส UTF-8 และมันยังคงเกิดความผิดพลาดขึ้นบรรทัดใหม่หรือไม่
John Machin

ถ้าฉันต้องการใช้ | เป็นตัวคั่นฟิลด์บรรทัดใหม่เป็นตัวคั่นเรคคอร์ดใช้ "เพื่อปกป้องเนื้อหาของฟิลด์ข้อความและฟิลด์ข้อความอาจมี |," และบรรทัดใหม่ เป็นไปได้ไหม
Giorgio

1
FYI: ฉันได้รับ Excel2007 และ CSV ส่งออกจากระบบ Redmine หลังจากเพิ่ม UTF-8 BOM (EFBBBF) ที่จุดเริ่มต้น Excel จะเปิดไฟล์อย่างสมบูรณ์แบบ บรรทัดใหม่ที่ฝังอยู่ใน colunm "คำอธิบายปัญหา" ได้รับการประมวลผลอย่างถูกต้องและโครงสร้างแถวไม่เสียหายและอักขระประจำชาติทั้งหมดจะถูกอ่านอย่างถูกต้อง Excel ยังไม่ได้แสดงตัวช่วยสร้างการนำเข้าข้อความ ปัจจุบัน CSV นั้นมีEFBBBFส่วนหัวใช้0Aเป็นตัวคั่นแถวและ0D0Aเป็นบรรทัดใหม่ภายในสตริงในเซลล์ข้อความ
quetzalcoatl

1
หากคุณพยายามรับ Excel สำหรับ OS X เพื่ออ่าน CSV ของคุณอย่างถูกต้องรวมถึง Excel สำหรับ Windows นี่เป็นแหล่งข้อมูลที่ดี: stackoverflow.com/questions/4348802/…
Alexandre R. Janini

25

หลังจากปรับแต่งมากมายนี่คือการกำหนดค่าที่ใช้สร้างไฟล์บน Linux อ่านบน Windows + Excel แม้ว่ารูปแบบการขึ้นบรรทัดใหม่ที่ฝังตัวจะไม่เป็นไปตามมาตรฐาน :

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

ใน Perl ฉันใช้ Text :: CSV เพื่อทำสิ่งนี้ดังนี้

use Text::CSV;

open my $FO, ">:encoding(utf8)", $filename or die "Cannot create $filename: $!";
my $csv = Text::CSV->new({ binary => 1, eol => "\r\n" });

#for each row...:
$csv -> print ($FO, \@row);

3
ใช่แล้ว \ r \ n ทำได้ ฉันสามารถยืนยันการใช้งานได้กับ Windows + Excel, OSX + Numbers และ Google เอกสาร
Yorick Sijsling

3
การใช้ \ n (พยายาม \ n) ในฟิลด์ที่ล้อมรอบด้วย "และใช้ \ r \ n เพื่อแบ่งแถวยังไม่ได้แก้ปัญหานี้ให้ฉันใน Excel 2010 ฉันลองใช้ ANSI และ UTF8-with-BOM ไม่สำเร็จ
nl-x

1
แต่นี่เป็นเพราะฉันใช้ | เป็นตัวคั่นฟิลด์ ถ้าฉันใช้; ในฐานะตัวคั่นฟิลด์ปัญหายังคงมีอยู่เมื่อนำเข้าข้อมูล CSV แต่ปัญหาจะหายไปเมื่อเปิด CSV โดยคลิกสองครั้งใน File Explorer
nl-x

2
คำตอบของ Ian ไม่ทำงานสำหรับฉันใน Excel 2003/2010 บน Windows 7 ฉันพยายามใช้ hex editor เพื่อแก้ไขไฟล์ UTF-8 BOM ของฉันและลบ 0D (\ r) จากบิต '0D0A' (\ r \ n) สำหรับการขึ้นบรรทัดใหม่ภายในฟิลด์ แต่มันไม่ทำงาน
Dan W

คำตอบนี้ใช้ได้สำหรับฉัน (โดยไม่มีการดัดแปลง!) โดยใช้ Excel 2010 และ WIndows 7; ยังใช้ perl v5.14.2 ที่มาพร้อมกับ cygwin \nการขึ้นบรรทัดใหม่ฝังตัวของฉันทุกคน ขอบคุณ
ardnew

21

เมื่อเร็ว ๆ นี้ฉันมีปัญหาที่คล้ายกันฉันแก้ไขได้โดยการนำเข้าไฟล์HTMLตัวอย่างพื้นฐานจะเป็นดังนี้:

<html xmlns:v="urn:schemas-microsoft-com:vml"
xmlns:o="urn:schemas-microsoft-com:office:office"
xmlns:x="urn:schemas-microsoft-com:office:excel"
xmlns="http://www.w3.org/TR/REC-html40">
  <head>
    <style>
      <!--
      br {mso-data-placement:same-cell;}
      -->
    </style>
  </head>
  <body>
    <table>
      <tr>
        <td>first line<br/>second line</td>
        <td style="white-space:normal">first line<br/>second line</td>
      </tr>
    </table>
  </body>
</html>

ฉันรู้ว่ามันไม่ใช่ CSV และอาจใช้งานได้กับ Excel รุ่นต่าง ๆ แต่ฉันคิดว่ามันน่าลอง

ฉันหวังว่านี่จะช่วยได้ ;-)


35
@GusDeCooL ถ้อยคำของประโยคแรกของ OP "ฉันต้องการสร้างไฟล์สำหรับ Excel ค่าบางอย่างในไฟล์นี้มีหลายบรรทัด" แนะนำว่าอาจไม่จำเป็นต้องเป็นไฟล์ CSV นอกจากนี้รูปแบบถาม & ตอบนำไปใช้กับผู้อ่านรายอื่นเช่นกันและอาจเป็นตัวเลือกที่เหมาะสมสำหรับบางคน (แม้ว่า OP จำเป็นต้องใช้ CSV) ฉันพบว่า downvote ของคุณไม่มีเหตุผล (ยังขอบคุณที่อธิบายว่าทำไม)
dtldarek

1
นี่เป็นตัวเลือกที่ดีที่สุดสำหรับฉันจริง ๆ แล้ว; ขอบคุณสำหรับการแนะนำ!
Jordan Gray

8

เป็นที่น่าสังเกตว่าเมื่อไฟล์. CSV มีเขตข้อมูลอยู่ในเครื่องหมายคำพูดคู่ซึ่งมีตัวแบ่งบรรทัด Excel จะไม่นำเข้าไฟล์. CSV อย่างถูกต้องหากไฟล์. CSV ถูกเขียนในรูปแบบ UTF-8 Excel ปฏิบัติต่อตัวแบ่งบรรทัดราวกับว่ามันเป็น CR / LF และเริ่มต้นบรรทัดใหม่ สเปรดชีตอ่านไม่ออก ดูเหมือนว่าจะเป็นจริงแม้ว่าจะใช้ semi-colon เป็นตัวคั่นฟิลด์ (แทนเครื่องหมายจุลภาค)

ปัญหาสามารถแก้ไขได้โดยใช้ Windows Notepad เพื่อแก้ไขไฟล์. CSV โดยใช้ไฟล์> บันทึกเป็น ... เพื่อบันทึกไฟล์และก่อนบันทึกไฟล์เปลี่ยนการเข้ารหัสไฟล์จาก UTF-8 เป็น ANSI เมื่อไฟล์ถูกบันทึกในรูปแบบ ANSI แล้วฉันพบว่า Microsoft Excel 2013 ที่ทำงานบน Windows 7 Professional จะนำเข้าไฟล์อย่างถูกต้อง


7

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

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


ใช่ แต่แล้วฉันไม่พบตัวเลือกที่จะทำให้เส้นกับเซมิโคลอนใน excel
4324 GusDeCooL

เกิดอะไรขึ้นถ้าข้อมูลข้อความจริงบางส่วนมีเซมิโคลอน? สิ่งนี้จะไม่ทำงาน
htm11h

4

บนพีซีอักขระ ASCII # 10 คือสิ่งที่คุณต้องการวางบรรทัดใหม่ภายในค่า

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


3

สิ่งนี้จะไม่ทำงานหากคุณพยายามนำเข้าไฟล์ไปยัง EXCEL

เชื่อมโยงไฟล์นามสกุล csv กับ EXCEL.EXE ดังนั้นคุณจะสามารถเรียกใช้ EXCEL ได้โดยดับเบิลคลิกที่ไฟล์ csv

ที่นี่ฉันวางข้อความตามด้วย NewLine Char ตามด้วยข้อความเพิ่มเติมและล้อมรอบสตริงทั้งหมดด้วยเครื่องหมายคำพูดคู่

อย่าใช้ CR เนื่องจาก EXCEL จะวางส่วนของสตริงในเซลล์ถัดไป

""text" + NL + "text""

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

2

วันที่

นี่คือรหัสในพื้นฐาน

CHR$(34,"2", 10,"DATE", 34)

2

ฉันพบสิ่งนี้และมันได้ผลสำหรับฉัน

$delimiter = ',';
$enc1 = '"';
$enc2 = '""';

จากนั้นคุณต้องมีสิ่งที่ล้อมรอบ

$myfile = ('/path/to/myfile.csv');
//erase any previous contents
$fp = fopen($myfile, 'w+');
fwrite($fp, $enc1 .  'Column Heading 1' . $enc1 . $delimiter );
//append to new file
$fp2 = fopen($myfile, 'a');
fwrite($fp2, $enc1 .  'Column Heading 2' . $enc1 . $delimiter );

.....

fwrite($fp2, $enc1 .  'Last Column Heading' . $enc1 . $delimiter. PHP_EOL );

จากนั้นเมื่อคุณจำเป็นต้องเขียนบางสิ่งออกมาเช่น HTML ที่มี "คุณสามารถทำได้

fwrite($fp2, $enc2 .  $myhtmlstring . $enc2 . $delimiter);

บรรทัดใหม่ลงท้ายด้วย . PHP_EOL

จุดสิ้นสุดของสคริปต์จะพิมพ์ลิงก์ออกมาเพื่อให้ผู้ใช้สามารถดาวน์โหลดไฟล์ได้

echo 'Click <a href="myfile.csv">here</a> to download file';

1

ไฟล์ UTF ที่มี BOM จะทำให้ Excel จัดการกับบรรทัดใหม่อย่างแท้จริงแม้ในฟิลด์นั้นจะมีคำพูดล้อมรอบ (ทดสอบใน Excel 2008 Mac)

การแก้ปัญหาคือการทำให้บรรทัดใหม่ใด ๆ เป็น carriage return (CHR 13) มากกว่าการป้อนบรรทัด


Excel 2016 ดูเหมือนว่าจะจัดการไฟล์ CSV ของฉันอย่างถูกต้องแม้ว่าจะมี UTF8 BOM ก็ตาม อย่างไรก็ตามสิ่งที่สร้างความแตกต่างทั้งหมดคือการใช้ ';' เป็นตัวคั่นฟิลด์ (ซึ่งเป็นสิ่งที่ Excel ทำสำหรับตำแหน่งที่ตั้งทั้งหมดที่มี ',' เป็นตัวคั่นทศนิยม)
Ale

1

ทดสอบสิ่งนี้: มันทำงานได้อย่างสมบูรณ์สำหรับฉัน: ใส่บรรทัดต่อไปนี้ในxxxx.csvไฟล์

hola_x,="este es mi text1"&CHAR(10)&"I sigo escribiendo",hola_a

hola_y,="este es mi text2"&CHAR(10)&"I sigo escribiendo",hola_b

hola_z,="este es mi text3"&CHAR(10)&"I sigo escribiendo",hola_c

เปิดด้วย excel

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

และขอบคุณสำหรับคำแนะนำอื่น ๆ แต่พวกเขาไม่ได้ผลสำหรับฉัน ฉันอยู่ใน env windows ที่บริสุทธิ์และไม่ต้องการเล่นกับ Unicode หรือเรื่องตลกอื่น ๆ

วิธีนี้คุณวางสูตรจาก csv ไปยัง excel อาจมีประโยชน์หลายอย่างสำหรับวิธีการทำงานนี้ (หมายเหตุ = ก่อนเครื่องหมายคำพูด)

pd: ในคำแนะนำของคุณโปรดใส่ตัวอย่างของข้อมูลไม่เพียง แต่รหัส


1

วาง "\ r" ที่ส่วนท้ายของแต่ละแถวจริง ๆ แล้วมีผลกระทบของการแบ่งบรรทัดใน excel แต่ใน. csv มันหายไปและทิ้งระเบียบที่น่าเกลียดที่แต่ละแถวถูกแบนกับถัดไปโดยไม่มีช่องว่างและไม่มีการแบ่งบรรทัด


0

วิธีที่เราทำ (เราใช้ VB.Net) คือใส่ข้อความด้วยบรรทัดใหม่ใน Chr (34) ซึ่งเป็นอักขระแทนเครื่องหมายคำพูดคู่และแทนที่อักขระ CR-LF ทั้งหมดสำหรับ LF


0

โดยปกติบรรทัดใหม่คือ "\ r \ n" ใน CSV ของฉันฉันแทนที่ "\ r" ด้วยค่าว่าง นี่คือรหัสใน Javascript:

cellValue = cellValue.replace(/\r/g, "")

เมื่อฉันเปิด CSV ใน MS Excel มันทำงานได้ดี หากค่ามีหลายบรรทัดจะอยู่ภายในเซลล์เดียว 1 เซลล์ในแผ่นงาน Excel


0

สำหรับเปิดไฟล์เท่านั้นไวยากรณ์คือ

 ,"one\n
 two",...

สิ่งสำคัญคือไม่มีที่ว่างหลังจาก "แรก" โดยปกติช่องว่างจะดีและตัดถ้าสตริงไม่ได้ยกมา แต่น่ารังเกียจเป็นอย่างอื่น เอาฉันไปคิดดูสิ

ดูเหมือนจะไม่สำคัญว่าจะวางสาย \ n หรือ \ c \ n

ตรวจสอบให้แน่ใจว่าคุณขยายแถบสูตรเพื่อให้คุณสามารถเห็นข้อความในเซลล์ (พาฉันมาหลังจากวันที่ยาวนาน ... )

ตอนนี้แน่นอนว่า File Open จะไม่รองรับ UTF-8 อย่างถูกต้อง (เว้นแต่จะใช้ลูกเล่น)

Excel> ข้อมูล> รับข้อมูลภายนอก > จากข้อความ

สามารถตั้งค่าเป็นโหมดUTF-8 (เป็นรายการแบบอักษร) อย่างไรก็ตามในกรณีนี้บรรทัดใหม่ดูเหมือนจะไม่ทำงานและฉันรู้ว่าไม่มีวิธีแก้ไข

(สิ่งหนึ่งอาจเป็นไปได้ว่าหลังจาก 30 ปี MS จะทำให้เรื่องนี้ถูกต้อง)


0

ใน Excel 365 ขณะนำเข้าไฟล์:

ข้อมูล -> จากข้อความ / CSV -> เลือกไฟล์> แปลงข้อมูล -> การกำหนดค่าแหล่งข้อมูล -> เลือกแหล่งข้อมูล -> คลิกแก้ไขแหล่งที่มา -> คลิกที่แก้ไขแหล่งที่มา -> ในรายการแบบหล่นลงการแบ่งบรรทัดเลือกละเว้นการแบ่งบรรทัด

ข้อความข้างต้นแปลจากภาษาโปรตุเกสดังนั้นข้อความอาจแตกต่างกันในภาษาอังกฤษ


-1

"\"Value3 Line1 Value3 Line2\""คุณสามารถทำอะไรต่อไป มันทำงานได้สำหรับฉันสร้างไฟล์ csv ใน java


-2

นี่คือวิธีการที่น่าสนใจโดยใช้ JavaScript ...

  String.prototype.csv = String.prototype.split.partial(/,\s*/);  

  var results = ("Mugan, Jin, Fuu").csv();                        

  console.log(results[0]=="Mugan" &&                                   
         results[1]=="Jin" &&                                     
         results[2]=="Fuu",                                       
         "The text values were split properly");                  

-3

การพิมพ์บรรทัดใหม่ HTML <br/>ลงในเนื้อหาและการเปิดใน excel จะทำงานได้ดีบน excel ใด ๆ


-3

คุณสามารถใช้แป้นพิมพ์ลัด ALT + Enter

  1. เลือกเซลล์ที่คุณต้องการแก้ไข
  2. เข้าสู่โหมดแก้ไขอย่างใดอย่างหนึ่งโดยดับเบิลคลิกหรือกด F2 3. กด Alt + Enter สิ่งนี้จะสร้างบรรทัดใหม่ในเซลล์

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