بغيتي تستخرج المعلومات اللي كاينين في ملف 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 كايكون فيه صفحة أو أكثر, الصفحات كاتلقاهوم لتحت على هاد الشكل:
كل صفحة كايكونو فيها معلومات خاصين بيها, لذلك غانقادو 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
النهاية:
وصلنا إلى نهاية المقال. إلى اللقاء في مقال أخر.