العمل مع Excel في TypeScript: نظرة شاملة على الأدوات
\n\nTypeScript، كإضافة ثابتة الأنواع فوق JavaScript، يوفر إمكانيات ممتازة لإنشاء تطبيقات مؤسسية معقدة. إحدى المهام الشائعة هي العمل مع ملفات Microsoft Excel - قراءة وإنشاء وتحرير الجداول. في هذه المقالة، سنستعرض أفضل المكتبات للعمل مع Excel في TypeScript، وميزاتها، ونقدم أمثلة عملية على الكود.
\n\nالمكتبات الشائعة للعمل مع Excel
\n\nيوجد حاليًا العديد من الحلول الناضجة. إليك أهمها:
\n\n- \n
- ExcelJS - أقوى مكتبة تدعم الأنماط والصيغ والرسوم البيانية والمعالجة التدفقية. \n
- xlsx (SheetJS) - مكتبة خفيفة وسريعة، مثالية للعمليات البسيطة للقراءة/الكتابة. \n
- node-excel-export - قديمة ولكنها لا تزال مستخدمة في المشاريع القديمة. \n
- Excel4Node - متخصصة في إنشاء تقارير معقدة مع التنسيق. \n
لمعظم المشاريع الحديثة على TypeScript، نوصي باستخدام ExcelJS و xlsx (SheetJS). سنناقشهما بالتفصيل.
\n\nالتثبيت والإعداد
\n\nيتم تثبيت كلتا المكتبتين عبر npm:
\n\nnpm install exceljs\nnpm install xlsx\n\nبالنسبة لـ TypeScript، يجب تثبيت الأنواع (إذا لم تكن مضمنة):
\n\nnpm install --save-dev @types/node\n\nملاحظة: ExcelJS يأتي مع أنواع مدمجة، بينما بالنسبة لـ xlsx يجب تثبيت الأنواع بشكل منفصل:
\n\nnpm install --save-dev @types/xlsx\n\nمثال 1: إنشاء ملف Excel باستخدام ExcelJS
\n\nلننشئ جدولًا بسيطًا مع بيانات وأنماط:
\n\nimport ExcelJS from 'exceljs';\n\nasync function createWorkbook() {\n const workbook = new ExcelJS.Workbook();\n const sheet = workbook.addWorksheet('تقرير');\n\n // تعريف الأعمدة\n sheet.columns = [\n { header: 'المعرف', key: 'id', width: 10 },\n { header: 'الاسم', key: 'name', width: 25 },\n { header: 'التاريخ', key: 'date', width: 15 },\n { header: 'المبلغ', key: 'amount', width: 12 }\n ];\n\n // إضافة الصفوف\n sheet.addRow({ id: 1, name: 'إيفان بيتروف', date: '2024-01-15', amount: 1500.50 });\n sheet.addRow({ id: 2, name: 'ماريا سيدوروفا', date: '2024-02-20', amount: 2300.75 });\n sheet.addRow({ id: 3, name: 'أليكسي إيفانوف', date: '2024-03-10', amount: 890.25 });\n\n // تنسيق العنوان\n const headerRow = sheet.getRow(1);\n headerRow.font = { bold: true, size: 12, color: { argb: 'FFFFFFFF' } };\n headerRow.fill = { type: 'pattern', pattern: 'solid', fgColor: { argb: 'FF4472C4' } };\n headerRow.alignment = { horizontal: 'center' };\n\n // حفظ الملف\n await workbook.xlsx.writeFile('output.xlsx');\n console.log('تم إنشاء الملف!');\n}\n\ncreateWorkbook();\n\nهذا الكود ينشئ ملف output.xlsx بثلاثة صفوف من البيانات وعنوان جميل.
مثال 2: قراءة ملف Excel باستخدام xlsx (SheetJS)
\n\nلنقرأ ملفًا موجودًا ونعرض البيانات في وحدة التحكم:
\n\nimport * as XLSX from 'xlsx';\n\nfunction readExcel(filePath: string) {\n const workbook = XLSX.readFile(filePath);\n const sheetName = workbook.SheetNames[0]; // نأخذ الورقة الأولى\n const worksheet = workbook.Sheets[sheetName];\n\n // تحويل إلى JSON\n const data: any[] = XLSX.utils.sheet_to_json(worksheet);\n\n console.log('البيانات من الملف:');\n data.forEach((row, index) => {\n console.log(`الصف ${index + 1}:`, row);\n });\n\n return data;\n}\n\n// الاستخدام\nconst data = readExcel('input.xlsx');\n\nمكتبة xlsx تقوم تلقائيًا بتحويل الجدول إلى مصفوفة من الكائنات، حيث تكون المفاتيح هي عناوين الأعمدة