العمل مع Excel في TypeScript: المكتبات والأمثلة والأدوات
TypeScript هي لغة قوية لتطوير تطبيقات الويب، وغالبًا ما تنشأ الحاجة إلى العمل برمجيًا مع ملفات Excel: قراءة التقارير، إنشاء الجداول، تصدير البيانات. في هذه المقالة، سنستعرض ثلاث مكتبات رئيسية للعمل مع Excel في TypeScript، وإمكانياتها، ونقدم أمثلة عملية.
1. المكتبات الرئيسية للعمل مع Excel في TypeScript
هناك العديد من الحلول الشائعة، لكل منها نقاط قوته:
- ExcelJS — المكتبة الأكثر شيوعًا لقراءة وكتابة وتنسيق ملفات Excel. تدعم .xlsx و .xlsm و .csv، بالإضافة إلى العمل مع الصيغ والتنسيق الشرطي والصور.
- xlsx (SheetJS) — مكتبة خفيفة وسريعة للعمليات الأساسية: قراءة وكتابة البيانات الجدولية. مثالية للمهام البسيطة.
- excel4node — مكتبة لإنشاء ملفات Excel مع التركيز على الأداء ودعم الأنماط.
2. التثبيت والإعداد
لتثبيت المكتبة المختارة، استخدم npm. سننظر في تثبيت ExcelJS و xlsx:
npm install exceljsnpm install xlsxبالنسبة لـ TypeScript، قم بتثبيت الأنواع بشكل إضافي (بالنسبة لـ xlsx فهي مدمجة):
npm install @types/exceljs --save-devnpm install @types/node --save-dev3. العمل مع Excel عبر ExcelJS
3.1 إنشاء وكتابة ملف
لنقم بإنشاء ملف Excel جديد مع عناوين وبيانات:
import * as ExcelJS from 'exceljs';
async function createExcel() { const workbook = new ExcelJS.Workbook(); const worksheet = workbook.addWorksheet('البيانات');
// تعريف الأعمدة worksheet.columns = [ { header: 'الاسم', key: 'name', width: 25 }, { header: 'العمر', key: 'age', width: 10 }, { header: 'المدينة', key: 'city', width: 20 } ];
// إضافة الصفوف worksheet.addRow({ name: 'آنا', age: 28, city: 'موسكو' }); worksheet.addRow({ name: 'إيفان', age: 35, city: 'سانت بطرسبرغ' }); worksheet.addRow({ name: 'أولغا', age: 22, city: 'قازان' });
// تنسيق العناوين const headerRow = worksheet.getRow(1); headerRow.font = { bold: true, color: { argb: 'FFFFFFFF' } }; headerRow.fill = { type: 'pattern', pattern: 'solid', fgColor: { argb: 'FF4472C4' } };
// حفظ الملف await workbook.xlsx.writeFile('example.xlsx'); console.log('تم إنشاء الملف');}
createExcel();3.2 قراءة ملف موجود
لنقرأ البيانات من الملف الذي تم إنشاؤه مسبقًا:
async function readExcel() { const workbook = new ExcelJS.Workbook(); await workbook.xlsx.readFile('example.xlsx');
const worksheet = workbook.getWorksheet('البيانات'); if (!worksheet) return;
worksheet.eachRow((row, rowNumber) => { const rowData = row.values as any[]; console.log(`الصف ${rowNumber}: ${rowData.join(', ')}`); });}
readExcel();4. العمل مع Excel عبر xlsx (SheetJS)
4.1 قراءة البيانات
تتيح مكتبة xlsx قراءة البيانات من ملف بسرعة:
import * as XLSX from 'xlsx';
function readXlsxFile(filePath: string) { const workbook = XLSX.readFile(filePath); const sheetName = workbook.SheetNames[0]; const worksheet = workbook.Sheets[sheetName]; const data = XLSX.utils.sheet_to_json(worksheet); console.log(data);}
readXlsxFile('example.xlsx');4.2 الإنشاء والكتابة
لنقم بإنشاء ملف Excel بسيط من مصفوفة كائنات:
function createXlsx() { const data = [ { Name: 'آنا', Age: 28, City: 'موسكو' }, { Name: 'إيفان', Age: 35, City: 'SPb' } ];
const worksheet = XLSX.utils.json_to_sheet(data); const workbook = XLSX.utils.book_new(); XLSX.utils.book_append_sheet(workbook, wor