โปรแกรมอ่านและเขียน CSV ที่ง่ายและรวดเร็วอย่างยิ่งซึ่งรองรับการอ่านและเขียนค่า CSV แบบดิบและวัตถุที่พิมพ์
มันใช้งานง่ายจริงๆ ต่อไปนี้เป็นตัวอย่าง:
using Sky . Data . Csv ;
//reader and writer sample
using ( var reader = CsvReader . Create ( "path-to-file" ) ) {
using ( var writer = CsvWriter . Create ( "path-to-file" ) ) {
foreach ( var row in reader ) {
writer . WriteRow ( row ) ;
}
}
}
วิธี Create
แบบคงที่จากทั้ง CsvReader
และ CsvWriter
สามารถยอมรับพารามิเตอร์ตัวที่สองที่ระบุตัวเลือกบางอย่าง เช่น ขนาดบัฟเฟอร์ การเข้ารหัส ว่าจะเขียนทับไฟล์ที่มีอยู่หรือไม่เมื่อเขียนไฟล์ CSV และจะใช้แคชเมื่ออ่านไฟล์ CSV หรือไม่ เป็นต้น .
ตัวเลือก UseCache
ในคลาส CsvReaderSettings
มีประโยชน์มากเมื่อแถวส่วนใหญ่ในไฟล์ CSV ซ้ำกัน ตัวเลือกนี้ช่วยได้มากในการปรับปรุงประสิทธิภาพ
นอกจากนี้ ทั้ง CsvReaderSettings
และ CsvWriterSettings
ยังรองรับตัวเลือก Separator
ที่คุณสามารถระบุอักขระตัวแยกเซลล์เมื่ออ่านหรือเขียนไฟล์ CSV
หากคุณใช้ CsvReader<T>
และ CsvWriter<T>
เวอร์ชันทั่วไป วิธี Create
static จะยอมรับพารามิเตอร์ประเภท IDataResolver<T>
ซึ่งสนับสนุน CsvReader
และ CsvWriter
เพื่ออ่านและเขียนอ็อบเจ็กต์ที่พิมพ์
AbstractDataResolver<T>
จัดเตรียมประเภทพื้นฐานพร้อมการใช้งานพื้นฐานบางอย่าง และคุณสามารถสร้างคลาสย่อยของมันได้
public class Student
{
public String Name { get ; set ; }
public String Address { get ; set ; }
public Int32 Height { get ; set ; }
public DateTime Birthday { get ; set ; }
}
public class StudentResolver : AbstractDataResolver < Student >
{
public override Student Deserialize ( List < String > data )
{
var culture = CultureInfo . InvariantCulture ;
return new Student
{
Name = data [ 0 ] ,
Height = Int32 . Parse ( data [ 1 ] ) ,
Birthday = DateTime . ParseExact ( data [ 2 ] , "yyyy-MM-dd" , culture ) ,
Address = data [ 3 ] ,
} ;
}
public override List < String > Serialize ( Student data )
{
return new List < String >
{
data . Name ,
data . Height . ToString ( ) ,
data . Birthday . ToString ( "yyyy-MM-dd" ) ,
data . Address ,
} ;
}
}
static void Main ( String [ ] args )
{
var dataResolver = new StudentResolver ( ) ;
var csvPath = "path-to-csv-file" ;
using ( var reader = CsvReader < Student > . Create ( csvPath , dataResolver ) )
{
foreach ( var student in reader )
{
Console . WriteLine ( student . Address ) ;
}
}
}
ในซอร์สโค้ดเวอร์ชันก่อนหน้า โปรเจ็กต์ทดสอบ รองรับเฉพาะ Windows OS เท่านั้น ตอนนี้ก็รองรับ Linux ด้วย
หากคุณต้องการรันโค้ดทดสอบใน Linux ( ทดสอบบน Ubuntu 18.04 LTS x64 ) ขั้นแรกให้เปลี่ยนไดเร็กทอรีปัจจุบันเป็น Sky.Data.Csv.Test จากนั้นรันคำสั่งต่อไปนี้ในเทอร์มินัล:
Sky.Data.Csv.Test$ dotnet run -c Release --project Sky.Data.Csv.Test.Core.csproj
นี่เป็นการใช้งาน CsvReader
และ CsvWriter
ที่เรียบง่ายแต่รวดเร็ว
CsvReader นี้รองรับทั้งสี่รูปแบบที่บันทึกโดย Excel เวอร์ชันใหม่ล่าสุด นั่นคือ คั่นด้วยเครื่องหมายจุลภาค , ms dos , macintosh และ คั่นด้วยเครื่องหมายจุลภาค UTF8
ตามค่าเริ่มต้น CsvReaderSettings
และ CsvWriterSettings
ใช้ Encoding.Default
เป็นการเข้ารหัสเริ่มต้นและเครื่องหมายจุลภาค (,) เป็นตัวคั่นฟิลด์ คุณยังสามารถระบุการตั้งค่าเหล่านี้ ( และการตั้งค่าอื่นๆ บางส่วนที่รองรับการตั้งค่าจำนวนมาก ) โดยการสร้างออบเจ็กต์การตั้งค่าใหม่และส่งไปยังเมธอด Create
static
เอ็มไอทีได้รับใบอนุญาต