العمل مع CSV في Kotlin: المكتبات، التحليل وكتابة البيانات

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

العمل مع CSV في Kotlin: نظرة عامة على المكتبات وأمثلة عملية



CSV (Comma-Separated Values) هو أحد أكثر التنسيقات شيوعًا لتبادل البيانات الجدولية. في Kotlin، كما في Java، توجد عدة مكتبات ناضجة للعمل مع CSV. في هذه المقالة، سنستعرض ثلاثة طرق رئيسية: مكتبة kotlin-csv الخفيفة، وOpenCSV القوي، وApache Commons CSV الكلاسيكي. ستتعلم كيفية قراءة وكتابة ومعالجة ملفات CSV بأقل جهد.



1. مكتبة kotlin-csv (الخيار الموصى به)



kotlin-csv هي مكتبة Kotlin أصلية، مكتوبة بالكامل بلغة Kotlin دون اعتماد على مكتبات Java. وهي مثالية للمشاريع الحديثة بلغة Kotlin.



الإضافة (Gradle)

dependencies {    implementation("com.github.doyaaaaaken:kotlin-csv-jvm:1.9.3")}


قراءة CSV

import com.github.doyaaaaaken.kotlincsv.dsl.csvReader

fun main() { val csvData = """ name,age,city Alice,30,New York Bob,25,London Charlie,35,Tokyo """.trimIndent()

val rows: List<List<String>> = csvReader().readAll(csvData) rows.forEach { row -> println("${row[0]} — ${row[1]} سنة، ${row[2]}") }}


كتابة CSV

import com.github.doyaaaaaken.kotlincsv.dsl.csvWriter

fun main() { val data = listOf( listOf("product", "price", "quantity"), listOf("Laptop", "1200", "5"), listOf("Mouse", "25", "50") ) csvWriter().open("inventory.csv") { writeRows(data) } println("تم إنشاء الملف inventory.csv")}


2. OpenCSV — مكتبة Java موثوقة



OpenCSV هي واحدة من أشهر مكتبات Java للعمل مع CSV. تعمل بشكل ممتاز في Kotlin بفضل التوافق الكامل.



الإضافة (Gradle)

dependencies {    implementation("com.opencsv:opencsv:5.9")}


القراءة مع تعيين البيانات إلى كلاس

import com.opencsv.bean.CsvToBeanBuilderimport java.io.FileReader

data class Person( @field:com.opencsv.bean.CsvBindByName(column = "name") val name: String, @field:com.opencsv.bean.CsvBindByName(column = "age") val age: Int, @field:com.opencsv.bean.CsvBindByName(column = "city") val city: String)

fun main() { val beans = CsvToBeanBuilder<Person>(FileReader("people.csv")) .withType(Person::class.java) .build() .parse()

beans.forEach { println("${it.name} (${it.age}) — ${it.city}") }}


كتابة الكائنات

import com.opencsv.bean.StatefulBeanToCsvimport com.opencsv.bean.StatefulBeanToCsvBuilderimport java.io.FileWriter

fun main() { val people = listOf( Person("Alice", 30, "New York"), Person("Bob", 25, "London") ) val writer = FileWriter("output.csv") val beanToCsv: StatefulBeanToCsv<Person> = StatefulBeanToCsvBuilder(writer).build() beanToCsv.write(people) writer.close() println("تم")}


3. Apache Commons CSV — المعيار الصناعي



مكتبة من مؤسسة Apache Foundation، تدعم تنسيقات CSV مختلفة (Excel، MySQL، RFC 4180).



الإضافة (Gradle)

dependencies {    implementation("org.apache.commons:commons-csv:1.11.0")}


القراءة مع العناوين

import org.apache.commons.csv.CSVFormatimport org.apache.commons.csv.CSVParserimport java.io.FileReader

fun main() { val parser = CSVParser.parse( FileReader("data.csv"), CSVFormat.DEFAULT.withFirstRecordAsHeader() ) parser.forEach { record -> val name = record["name"] val age = record["age"] println("$name, العمر $age") }}


الكتابة مع

توصيات