العمل مع Excel في Swift على iOS وmacOS: المكتبات وأمثلة الكود

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

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

ابدأ الدورة

العمل مع Excel في Swift: المكتبات والأدوات لنظامي iOS وmacOS



عند تطوير التطبيقات لنظامي iOS وmacOS، غالبًا ما تكون هناك حاجة لاستيراد أو تصدير أو معالجة البيانات بتنسيق Excel (XLSX، CSV). لا توجد دعم مدمج لتنسيقات Excel على منصة Apple، لذلك يستخدم المطورون مكتبات خارجية. في هذه المقالة، سنستعرض ثلاث أدوات شائعة: CoreXLSX، XLSXWriter و SwiftCSV، بالإضافة إلى تقديم أمثلة عملية على كود Swift.



1. CoreXLSX — قراءة وكتابة XLSX



CoreXLSX — مكتبة خفيفة لقراءة وإنشاء ملفات XLSX. تعتمد على معيار Open XML، وتدعم النصوص والأرقام والتواريخ والصيغ والأنماط.



التثبيت

// Swift Package Managerdependencies: [    .package(url: "https://github.com/CoreOffice/CoreXLSX.git", from: "0.14.0")]


مثال: قراءة البيانات من Excel

import CoreXLSX

func readExcel(path: String) { guard let file = XLSXFile(filepath: path) else { print("خطأ في فتح الملف") return } do { for path in try file.parseWorksheetPaths() { let worksheet = try file.parseWorksheet(at: path) let rows = worksheet.data?.rows ?? [] for row in rows { let values = row.cells.compactMap { $0.value } print(values.joined(separator: "\\t")) } } } catch { print("خطأ في القراءة: \\(error)") }}


مثال: إنشاء ملف XLSX جديد

import CoreXLSX

func createExcel() { let header = ["الاسم", "العمر", "المدينة"] let data = [ ["آنا", "25", "موسكو"], ["بوريس", "30", "سانت بطرسبرغ"] ] var sharedStrings = SharedStrings() let headerRefs = header.map { sharedStrings.append(string: $0) } let dataRefs = data.map { row in row.map { sharedStrings.append(string: $0) } } let headerRow = Row(cells: headerRefs.enumerated().map { (index, ref) in Cell(reference: "\\(Character(UnicodeScalar(65 + index)!))1", type: .string, value: ref) }) let dataRows = dataRefs.enumerated().map { (rowIndex, row) in Row(cells: row.enumerated().map { (colIndex, ref) in let colRef = Character(UnicodeScalar(65 + colIndex)!) return Cell(reference: "\\(colRef)\\(rowIndex + 2)", type: .string, value: ref) }) } let worksheet = Worksheet(data: Data(rows: [headerRow] + dataRows)) let file = XLSXFile(sharedStrings: sharedStrings, worksheets: [worksheet]) do { try file.write(to: URL(fileURLWithPath: "/tmp/example.xlsx")) print("تم حفظ الملف") } catch { print("خطأ في الكتابة: \\(error)") }}


2. XLSXWriter — كتابة سريعة للملفات الكبيرة



XLSXWriter — مكتبة تركز على الأداء عند الكتابة. مناسبة لتصدير آلاف الصفوف، وتدعم الأنماط ودمج الخلايا والرسوم البيانية.



التثبيت

// عبر CocoaPodspod 'XLSXWriter'


مثال: كتابة البيانات مع التنسيق

import XLSXWriter

func writeFormattedExcel() { let workbook = Workbook() let sheet = workbook.addSheet(named: "تقرير") // الأنماط let headerStyle = CellStyle() headerStyle.font = Font(name: "Helvetica", size: 14, bold: true) headerStyle.fill = Fill(color: .lightGray) let dataStyle = CellStyle() dataStyle.font = Font(name: "Helvetica", size: 12) dataStyle.border = Border(top: .thin, bottom: .thin) // العناوين sheet.write(row: 0, column: 0, value: "المنتج", style: headerStyle) sheet.write(row: 0, column: 1, value: "السعر", style: headerStyle) sheet.write(row: 0, column: 2, value: "الكمية", style: headerStyle)

توصيات