تحويل ملف Excel إلى JSON بإستخدام Nodejs

تحويل ملف Excel إلى JSON بإستخدام Nodejs

29 مارس 2022|3 دقائق قراءة

بغيتي تستخرج المعلومات اللي كاينين في ملف Excel, سواء من أجل حفض المعلومات في قاعدة بيانات أو مجرد العمل عليها في التطبيق, مثلا لإجراء التحليلات analytics. فهاد المقال غانتعرفو على كيفاش نحولو ملف Excel إلى JSON بإستخدام Nodejs.

ماذا سنحتاج ؟

لتحويل ملف Excel إلى JSON غانحتاجو Package سميتو xlsx.

إلى مكانش عندك ملف package.json في ل project ديالك, خاصك تنشئ واحد, بإمكانك تنشؤ بهاد الطريقة.

npm init -y

ألان غانقومو بإضافة xlsx.

npm install xlsx

كتابة ل code :

ألان في ملف index.js غانقومو بإحضار ل package اللي ضفنا باش نقومو بالتحويل xlsx, بالإضافة ل fs اللي غاتمكنا من أننا نحفضو المعلومات في ملف JSON في الجهاز ديالنا.

const xlsx = require("xlsx"); const fs = require("fs");

ألأن غانقومو بإنشاء 2 functions الأولى غانسميوها convertExcelFileToJson, غاتكون هي اللي مكلفة بإستخراج المعلومات من ملف Excel. و الثانية غانسميوها generateJSONFile, غاتكون المهمة ديالها إنشاء ملف JSON و كتابة المعلومات بداخله.

convertExcelFileToJson :

أولا غانقومو بقراءة ملف Excel و حفض النتيجة في متغير سميناه file بإستخدام xlsx.readFile اللي غانعطيوها المسار ديال الملف Excel. كل ملف Excel كايكون فيه صفحة أو أكثر, الصفحات كاتلقاهوم لتحت على هاد الشكل:

description

كل صفحة كايكونو فيها معلومات خاصين بيها, لذلك غانقادو data على شكل array فيها objects كل object غايكون فيه إسم الصفحة و data الخاصة بالصفحة, و فالأخير غانعطيو ديك ل array ل generateJSONFile باش تنشئ لنا ملف JSON فيه data اللي إستخرجنا.

function convertExcelFileToJson() { // pathname بإستخدام مساره Excel قراءة ملف const file = xlsx.readFile("./data.xlsx"); // إستخراج أسماء الصفحات const sheetNames = file.SheetNames; // ["sheet1", "sheet2"] // parsedData الخاصة بها و نضعها في data كل صفحة نستخرج let parsedData = sheetNames.map((el) => { const tempData = xlsx.utils.sheet_to_json(file.Sheets[el]); // object الخاصة بها في data وضع إسم الصفحة مع return { sheetName: el, data: tempData, }; }); // JSON المستخرجة في ملف data حفض generateJSONFile(parsedData); }

generateJSONFile :

في fs توجد method تسمى writeFileSync, ستمكننا من إنشاء ملف JSON و كتابة data بداخله. على هذا الشكل:

function generateJSONFile(data) { try { fs.writeFileSync("data.json", JSON.stringify(data)); console.log("---------done----------"); } catch (err) { console.error(err); } }

النتيجة النهائية :

النتيجة النهائية ستكون على هذا الشكل:

const xlsx = require("xlsx"); const fs = require("fs"); function generateJSONFile(data) { try { fs.writeFileSync("data.json", JSON.stringify(data)); console.log("---------done----------"); } catch (err) { console.error(err); } } function convertExcelFileToJson() { // Read the file using pathname const file = xlsx.readFile("./data.xlsx"); // Grab the sheet names from the file const sheetNames = file.SheetNames; // Loop through sheets and store the data in parseedData let parsedData = sheetNames.map((el) => { const tempData = xlsx.utils.sheet_to_json(file.Sheets[el]); // Add the sheet's data and name into our data array return { sheetName: el, data: tempData, }; }); // call a function to save the data in a json file generateJSONFile(parsedData); } convertExcelFileToJson();

يمكنكم الحصول على جميع الملفات من github


النهاية:

وصلنا إلى نهاية المقال. إلى اللقاء في مقال أخر.