قارئ وكاتب 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 الثابتة أيضًا معلمة من النوع 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 فقط. الآن أصبح يدعم 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 الثابتة.
مرخص من معهد ماساتشوستس للتكنولوجيا.