العمل مع 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 (الإصدار