العمل مع CSV في Kotlin: المكتبات وأمثلة الكود

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

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

ابدأ الدورة

العمل مع CSV في Kotlin: المكتبات وأمثلة الكود



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



1. مكتبة kotlin-csv (Kotlinx.serialization)



kotlin-csv — هي مكتبة حديثة مكتوبة بلغة Kotlin النقية. تتكامل بشكل مثالي مع kotlinx.serialization، مما يسمح بربط أسطر CSV تلقائيًا بفئات البيانات. هذا هو الخيار الأفضل للمشاريع الجديدة في Kotlin.



التثبيت

أضف التبعية في build.gradle.kts:

dependencies {    implementation("com.github.doyaaaaaken:kotlin-csv-jvm:1.9.3")    implementation("org.jetbrains.kotlinx:kotlinx-serialization-csv:1.6.3")}


مثال لقراءة CSV

import com.github.doyaaaaaken.kotlincsv.dsl.csvReaderimport kotlinx.serialization.Serializableimport kotlinx.serialization.csv.Csv

@Serializabledata class User(val name: String, val age: Int, val email: String)

fun readCsvWithKotlinCsv() { val csvData = """ name,age,email Alice,30,alice@example.com Bob,25,bob@test.org """.trimIndent()

// الخيار 1: التحليل اليدوي val rows: List<List<String>> = csvReader().readAll(csvData) rows.forEach { row -> println("Name: ${row[0]}, Age: ${row[1]}, Email: ${row[2]}") }

// الخيار 2: مع التسلسل val csv = Csv { ignoreUnknownColumns = true } val users: List<User> = csv.decodeFromString(csvData) users.forEach { println(it) }}


مثال لكتابة CSV

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

fun writeCsvWithKotlinCsv() { val data = listOf( listOf("Name", "Age", "City"), listOf("John", "28", "New York"), listOf("Jane", "32", "London") ) csvWriter().open("output.csv") { writeRows(data) } println("تم كتابة ملف CSV بنجاح.")}


2. مكتبة OpenCSV



OpenCSV — مكتبة Java كلاسيكية تعمل بشكل ممتاز في Kotlin. توفر إمكانيات مرنة للتحليل، بما في ذلك معالجة علامات الاقتباس، والهروب، ودعم الفواصل المختلفة.



التثبيت

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


مثال للقراءة مع الربط بالكائنات

import com.opencsv.CSVReaderBuilderimport com.opencsv.bean.CsvToBeanBuilderimport com.opencsv.bean.HeaderColumnNameMappingStrategyimport java.io.StringReader

data class Product(val id: Int, val name: String, val price: Double)

fun readCsvWithOpenCsv() { val csvContent = """ id,name,price 1,Laptop,999.99 2,Mouse,25.50 """.trimIndent()

// التحليل اليدوي val reader = CSVReaderBuilder(StringReader(csvContent)).build() reader.forEach { line -> println("ID: ${line[0]}, Name: ${line[1]}, Price: ${line[2]}") }

// الربط بفئة البيانات val strategy = HeaderColumnNameMappingStrategy<Product>() strategy.type = Product::class.java val beans = CsvToBeanBuilder<Product>(StringReader(csvContent)) .withMappingStrategy(strategy) .build() .parse() beans.forEach { println(it) }}


مثال لكتابة CSV

import com.opencsv.CSVWriterimport java.io.StringWriter

fun writeCsvWithOpenCsv() { val stringWriter = StringWriter() val writer = CSVWriter(stringWriter) val

توصيات