العمل مع Excel في Swift (iOS/macOS): المكتبات وأمثلة برمجية
غالبًا ما يتطلب تطوير التطبيقات لنظامي iOS وmacOS التكامل مع تنسيق Excel (.xlsx، .xls). لا توفر أدوات Apple الأصلية واجهة برمجة تطبيقات مباشرة للعمل مع هذه الملفات، لذلك يستخدم المطورون مكتبات خارجية. في هذه المقالة، سنستعرض ثلاثة خيارات شائعة: CoreXLSX، xlsxwriter وSwiftCSV، بالإضافة إلى تقديم أمثلة عملية للقراءة والكتابة.
1. CoreXLSX — قراءة وكتابة .xlsx
CoreXLSX هي مكتبة مفتوحة المصدر مكتوبة بالكامل بلغة Swift. تعتمد على تنسيق ZIP الداخلي (نظرًا لأن .xlsx هو أرشيف ZIP يحتوي على ملفات XML). تدعم قراءة وكتابة وتحرير الأوراق والخلايا والأنماط.
التثبيت: عبر Swift Package Manager (SPM) أضف الحزمة https://github.com/CoreOffice/CoreXLSX.git.
مثال: قراءة البيانات من Excel
import CoreXLSX
func readExcelExample() { guard let filePath = Bundle.main.path(forResource: "data", ofType: "xlsx"), let data = try? Data(contentsOf: URL(fileURLWithPath: filePath)), let file = try? XLSXFile(data: data) else { print("فشل تحميل الملف") return } do { let sharedStrings = try file.parseSharedStrings() let worksheet = try file.parseWorksheet(at: "xl/worksheets/sheet1.xml") for row in worksheet.data?.rows ?? [] { var rowValues: [String] = [] for cell in row.cells { if let stringRef = cell.stringValue(sharedStrings) { rowValues.append(stringRef) } else if let value = cell.value { rowValues.append(value) } else { rowValues.append("") } } print(rowValues.joined(separator: ", ")) } } catch { print("خطأ في التحليل: \\(error)") }}2. xlsxwriter — إنشاء ملفات Excel في Swift
xlsxwriter هي غلاف لمكتبة libxlsxwriter (تنفيذ بلغة C). تسمح بإنشاء ملفات .xlsx مع التنسيق والصيغ والرسوم البيانية. مثالية لإنشاء التقارير على macOS وiOS.
التثبيت: عبر CocoaPods (pod 'xlsxwriter') أو SPM.
مثال: إنشاء ملف بسيط
import xlsxwriter
func createExcelExample() { let documentDirectory = FileManager.default.temporaryDirectory let fileURL = documentDirectory.appendingPathComponent("report.xlsx") let workbook = Workbook(path: fileURL.path) let sheet = workbook.addWorksheet(named: "تقرير") // العناوين sheet.writeString("الاسم", at: column: 0, row: 0) sheet.writeString("العمر", at: column: 1, row: 0) sheet.writeString("المدينة", at: column: 2, row: 0) // البيانات sheet.writeString("آنا", at: column: 0, row: 1) sheet.writeNumber(28, at: column: 1, row: 1) sheet.writeString("موسكو", at: column: 2, row: 1) sheet.writeString("إيفان", at: column: 0, row: 2) sheet.writeNumber(35, at: column: 1, row: 2) sheet.writeString("سانت بطرسبرغ", at: column: 2, row: 2) workbook.close() print("تم إنشاء الملف: \\(fileURL)")}3. SwiftCSV — العمل مع CSV (بديل Excel)
إذا كنت لا تحتاج إلى تنسيق .xlsx كامل، فإن SwiftCSV هي مكتبة خفيفة لقراءة وكتابة ملفات CSV. يمكن فتح CSV بسهولة في Excel ومحررات الجداول الأخرى.
التثبيت: عبر SPM: https://github.com/swiftcsv/SwiftCSV.git.
مثال: قراءة وكتابة CSV
import SwiftCSV
func csvExample() { // قراءة guard let csvURL = Bundle.main.url(forResource: "data", with