العمل مع Excel في TypeScript: المكتبات والأدوات وأمثلة الكود

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

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

ابدأ الدورة

العمل مع Excel في TypeScript: نظرة شاملة على الأدوات

\n\n

TypeScript، كإضافة ثابتة الأنواع فوق JavaScript، يوفر إمكانيات ممتازة لإنشاء تطبيقات مؤسسية معقدة. إحدى المهام الشائعة هي العمل مع ملفات Microsoft Excel - قراءة وإنشاء وتحرير الجداول. في هذه المقالة، سنستعرض أفضل المكتبات للعمل مع Excel في TypeScript، وميزاتها، ونقدم أمثلة عملية على الكود.

\n\n

المكتبات الشائعة للعمل مع Excel

\n\n

يوجد حاليًا العديد من الحلول الناضجة. إليك أهمها:

\n\n
    \n
  • ExcelJS - أقوى مكتبة تدعم الأنماط والصيغ والرسوم البيانية والمعالجة التدفقية.
  • \n
  • xlsx (SheetJS) - مكتبة خفيفة وسريعة، مثالية للعمليات البسيطة للقراءة/الكتابة.
  • \n
  • node-excel-export - قديمة ولكنها لا تزال مستخدمة في المشاريع القديمة.
  • \n
  • Excel4Node - متخصصة في إنشاء تقارير معقدة مع التنسيق.
  • \n
\n\n

لمعظم المشاريع الحديثة على TypeScript، نوصي باستخدام ExcelJS و xlsx (SheetJS). سنناقشهما بالتفصيل.

\n\n

التثبيت والإعداد

\n\n

يتم تثبيت كلتا المكتبتين عبر npm:

\n\n
npm install exceljs\nnpm install xlsx
\n\n

بالنسبة لـ TypeScript، يجب تثبيت الأنواع (إذا لم تكن مضمنة):

\n\n
npm install --save-dev @types/node
\n\n

ملاحظة: ExcelJS يأتي مع أنواع مدمجة، بينما بالنسبة لـ xlsx يجب تثبيت الأنواع بشكل منفصل:

\n\n
npm install --save-dev @types/xlsx
\n\n

مثال 1: إنشاء ملف Excel باستخدام ExcelJS

\n\n

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

\n\n
import 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 بثلاثة صفوف من البيانات وعنوان جميل.

\n\n

مثال 2: قراءة ملف Excel باستخدام xlsx (SheetJS)

\n\n

لنقرأ ملفًا موجودًا ونعرض البيانات في وحدة التحكم:

\n\n
import * 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 تقوم تلقائيًا بتحويل الجدول إلى مصفوفة من الكائنات، حيث تكون المفاتيح هي عناوين الأعمدة

توصيات