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