العمل مع Excel في Kotlin: مكتبات Apache POI وملحقات Kotlin

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

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

ابدأ الدورة

العمل مع Excel في Kotlin: Apache POI ومكتبات الملحقات



Kotlin، كلغة برمجة حديثة لـ JVM، يوفر إمكانيات ممتازة للعمل مع البيانات الجدولية. على الرغم من عدم وجود دعم أصلي لتنسيق .xlsx في نظام Kotlin البيئي، يمكنك استخدام مكتبات Java الموثوقة والمكيفة مع صياغة Kotlin. في هذه المقالة، سنستعرض الأداة الرئيسية — Apache POI — وملحقين شائعين لـ Kotlin: poi-kotlin و kotlinpoi.



1. Apache POI — أساس العمل مع Excel



Apache POI هي مكتبة Java ناضجة لقراءة وكتابة ملفات تنسيق Microsoft Office (OLE2 و OOXML). للعمل مع ملفات .xlsx الحديثة، يُستخدم الوحدة الفرعية poi-ooxml. أضف التبعية في build.gradle.kts:



dependencies {    implementation("org.apache.poi:poi:5.3.0")    implementation("org.apache.poi:poi-ooxml:5.3.0")}


قراءة ملف Excel في Kotlin

مثال لقراءة البيانات من الورقة الأولى:

import org.apache.poi.ss.usermodel.*import org.apache.poi.xssf.usermodel.XSSFWorkbookimport java.io.FileInputStream

fun readExcel(filePath: String) { val file = FileInputStream(filePath) val workbook: Workbook = XSSFWorkbook(file) val sheet: Sheet = workbook.getSheetAt(0)

for (row in sheet) { for (cell in row) { when (cell.cellType) { CellType.STRING -> print("${cell.stringCellValue} ") CellType.NUMERIC -> print("${cell.numericCellValue} ") else -> print(" ") } } println() } workbook.close()}


إنشاء ملف Excel

لننشئ جدولًا بسيطًا بعناوين:

import org.apache.poi.xssf.usermodel.XSSFWorkbookimport java.io.FileOutputStream

fun createExcel() { val workbook = XSSFWorkbook() val sheet = workbook.createSheet("بيانات")

// العناوين val headerRow = sheet.createRow(0) headerRow.createCell(0).setCellValue("الاسم") headerRow.createCell(1).setCellValue("العمر") headerRow.createCell(2).setCellValue("المدينة")

// البيانات val data = listOf( listOf("آنا", 25, "موسكو"), listOf("إيفان", 30, "سانت بطرسبرغ"), listOf("ماريا", 22, "قازان") )

data.forEachIndexed { index, rowData -> val row = sheet.createRow(index + 1) rowData.forEachIndexed { cellIndex, value -> row.createCell(cellIndex).setCellValue(value.toString()) } }

workbook.write(FileOutputStream("output.xlsx")) workbook.close()}


2. مكتبة poi-kotlin — ملحق Kotlin-first



poi-kotlin (الإصدار 0.3.0) هي ملحق خفيف الوزن فوق Apache POI، يضيف دوال تمديد وصياغة DSL مميزة لـ Kotlin. التثبيت:



repositories {    maven("https://jitpack.io")}dependencies {    implementation("com.github.nicklausw.poi-kotlin:poi-kotlin:0.3.0")}


مثال مع poi-kotlin

import com.github.nicklausw.poi.kotlin.*

fun dslExample() { val workbook = workbook { sheet("تقرير") { row { cell("المنتج") cell("السعر") cell("الكمية") } row { cell("حاسوب محمول") cell(1200.0) cell(5) } row { cell("فأرة") cell(25.5) cell(10) } } } workbook.writeToFile("report.xlsx")}

أصبح الكود أكثر قابلية للقراءة، والكتل المتداخلة sheet { row { ... } } تذكرنا ببناء ترميز HTML.



3. مكتبة kotlinpoi — النهج الوظيفي



kotlinpoi (الإصدار

توصيات