JavaScript आणि SheetJS सह एक्सेल फायलींमध्ये प्रतिमा एम्बेड करणे
Excel (.xlsx) फायली व्युत्पन्न करणारे Chrome विस्तार विकसित करताना, प्रतिमा थेट सेलमध्ये एम्बेड करणे हे एक आव्हानात्मक कार्य असू शकते. JavaScript आणि SheetJS सारख्या लायब्ररी स्प्रेडशीट तयार करणे आणि संपादित करणे सोपे करते, एम्बेड केलेल्या प्रतिमा हाताळण्यासाठी अधिक विशिष्ट हाताळणी आवश्यक असते.
बऱ्याच प्रकरणांमध्ये, विकसकांना प्रतिमा थेट एम्बेड करण्याऐवजी सेलमध्ये प्रतिमा दुवे जोडण्यास सक्षम असण्याच्या मर्यादेचा सामना करावा लागतो. ही समस्या इमेज डेटा रूपांतरण आणि एक्सेल फाइल फॉरमॅटिंगमध्ये गुंतलेल्या गुंतागुंतांमुळे उद्भवते, विशेषत: क्रोम विस्तारांसारख्या ब्राउझर वातावरणात.
या लेखात, आम्ही JavaScript वापरून थेट एक्सेल फाइल सेलमध्ये इमेज एम्बेड करण्याचा उपाय शोधू. इमेज एचटीएमएल घटकांमधून आणल्या जातील आणि योग्य एक्सेल सेलमध्ये समाविष्ट केल्या जातील, ज्या वापरकर्त्यांना त्यांच्या स्प्रेडशीटमध्ये व्हिज्युअल डेटाची आवश्यकता असेल त्यांना अधिक अखंड अनुभव देईल.
आम्ही एक्सेलजेएस सारख्या लायब्ररींचे एकत्रीकरण कसे करावे आणि संरक्षित क्रोम एक्स्टेंशन वातावरणात प्रतिमा एम्बेड करणे यासारख्या सामान्य आव्हानांना कसे सामोरे जावे याबद्दल चर्चा करू. याव्यतिरिक्त, यशस्वी अंमलबजावणी सुनिश्चित करण्यासाठी आम्ही Node.js आणि Chrome विस्तार पद्धतींमधील फरकांचे पुनरावलोकन करू.
आज्ञा | वापराचे उदाहरण |
---|---|
ExcelJS.Workbook() | हे ExcelJS लायब्ररी वापरून Node.js वातावरणात नवीन Excel वर्कबुक ऑब्जेक्ट तयार करते. वर्कशीट्स, फॉरमॅटिंग आणि इमेजेससह स्क्रॅचमधून एक्सेल फाइल्स व्युत्पन्न करण्यासाठी हे आवश्यक आहे. |
addWorksheet() | ही पद्धत वर्कबुकमध्ये नवीन वर्कशीट जोडते. या समस्येच्या संदर्भात, हे शीट तयार करण्यासाठी वापरले जाते जेथे डेटा (मजकूर आणि प्रतिमा दोन्ही) समाविष्ट केला जाऊ शकतो. |
axios.get() | URL वरून प्रतिमा डेटा आणण्यासाठी वापरला जातो. ते ॲरे बफर फॉरमॅटमध्ये बायनरी इमेज डेटा पुनर्प्राप्त करते, जे एक्सेल सेलमध्ये इमेज एम्बेड करण्यासाठी आवश्यक आहे. |
workbook.addImage() | ही कमांड एक्सेल वर्कबुकमध्ये इमेज जोडते. प्रतिमा बायनरी डेटाचा बफर म्हणून प्रदान केली जाऊ शकते, जी विशिष्ट पेशींमध्ये प्रतिमा एम्बेड करण्यासाठी आवश्यक आहे. |
worksheet.addImage() | ही पद्धत वर्कशीटमधील एका विशिष्ट सेलमध्ये किंवा सेलच्या श्रेणीमध्ये जोडलेली प्रतिमा ठेवण्यासाठी जबाबदार आहे, ज्यामुळे मजकूर डेटाच्या बाजूने दृश्य घटकांना एम्बेड केले जाऊ शकते. |
fetch() | ब्राउझर वातावरणात, हा आदेश रिमोट सर्व्हरवरून प्रतिमेची विनंती करण्यासाठी आणि ब्लॉब म्हणून पुनर्प्राप्त करण्यासाठी वापरला जातो. ब्लॉब नंतर एक्सेलमध्ये एम्बेड करण्यासाठी बेस64-एनकोड केलेल्या स्ट्रिंगमध्ये रूपांतरित केला जातो. |
FileReader.readAsDataURL() | ही कमांड इमेज URL मधून पुनर्प्राप्त केलेल्या ब्लॉब (बायनरी लार्ज ऑब्जेक्ट) डेटाला बेस64 स्ट्रिंगमध्ये रूपांतरित करते, ज्यामुळे ते शीटजेएस द्वारे एक्सेल फाइलमध्ये एम्बेड करण्यासाठी सुसंगत होते. |
aoa_to_sheet() | शीटजेएसची ही पद्धत ॲरे ऑफ ॲरे (AoA) एक्सेल शीटमध्ये रूपांतरित करते. मजकूर आणि प्रतिमा दोन्ही समाविष्ट असलेल्या साध्या डेटा स्ट्रक्चर्स सेट करण्यासाठी हे विशेषतः उपयुक्त आहे. |
writeFile() | ExcelJS आणि SheetJS या दोन्हींमध्ये हे फंक्शन एम्बेडेड इमेजेससह जनरेट केलेली Excel फाइल स्थानिक फाइल सिस्टीममध्ये सेव्ह करते. कार्यपुस्तिका तयार करणे आणि सर्व आवश्यक घटक जोडणे ही अंतिम पायरी आहे. |
जावास्क्रिप्ट आणि एक्सेलजेएस वापरून एक्सेल सेलमध्ये इमेज एम्बेड कसे करावे
मी दिलेली स्क्रिप्ट थेट एक्सेल सेलमध्ये इमेज एम्बेड करण्याच्या समस्येचे निराकरण करते JavaScript, ExcelJS आणि Axios. प्रथम, कमांडसह ExcelJS वापरून नवीन वर्कबुक सुरू करून स्क्रिप्ट सुरू होते ExcelJS.वर्कबुक(), जे एक्सेल फाइल्स व्युत्पन्न करण्यासाठी पाया आहे. ते नंतर कॉल करून वर्कशीट तयार करते वर्कशीट जोडा(). हे वर्कशीट जोडल्या जाणाऱ्या सर्व डेटा आणि प्रतिमांसाठी कंटेनर म्हणून कार्य करते. नमुना डेटामध्ये प्रतिमा URL समाविष्ट आहेत ज्या नंतर प्राप्त केल्या जातील आणि विशिष्ट सेलमध्ये एम्बेड केल्या जातील.
इमेज फेचिंग हाताळण्यासाठी, स्क्रिप्ट Axios लायब्ररी वापरते axios.get() त्यांच्या URL वरून प्रतिमांची विनंती करण्यासाठी. Axios प्रतिसाद प्रकार "ॲरेबफर" वापरून बायनरी डेटा म्हणून प्रतिमा पुनर्प्राप्त करते, जी एक्सेल फाइलमध्ये प्रतिमांसारखी बायनरी सामग्री एम्बेड करण्यासाठी योग्य आहे. डेटा प्राप्त केल्यानंतर, इमेज बफर फॉरमॅटमध्ये रूपांतरित केली जाते, ज्यामुळे ExcelJS ला सेलमध्ये एम्बेड करण्यासाठी वैध प्रतिमा म्हणून ओळखता येते.
एकदा प्रतिमा आणली आणि प्रक्रिया केली की, आदेश workbook.addImage() वर्कबुकमध्ये इमेज टाकण्यासाठी वापरली जाते. ही पायरी प्रतिमा परिभाषित करते आणि वर्कशीटमध्ये विशिष्ट ठिकाणी ठेवण्यासाठी तयार करते. यानंतर, worksheet.addImage() वर्तमान पंक्तीच्या स्तंभ "B" मध्ये, प्रतिमा कुठे ठेवली पाहिजे हे निर्दिष्ट करते. प्रतिमा सेलमध्ये व्यवस्थित बसते याची खात्री करण्यासाठी पंक्तीची उंची समायोजित केली जाते.
शेवटी, स्क्रिप्ट वापरून कार्यपुस्तिका जतन करते workbook.xlsx.writeFile(), जे स्थानिक प्रणालीवर फाइल लिहिते. हे प्रक्रिया पूर्ण करते, परिणामी केवळ लिंक्सऐवजी थेट सेलमध्ये एम्बेड केलेल्या प्रतिमा असलेली एक्सेल फाइल तयार होते. डेटा आणि व्हिज्युअल घटक दोन्ही असलेल्या Excel फायलींशी संवाद साधणाऱ्या वापरकर्त्यांना अखंड अनुभव प्रदान करून अहवाल किंवा डेटा शीटमध्ये प्रतिमा समाविष्ट करणे आवश्यक असलेल्या प्रकरणांमध्ये ही पद्धत अत्यंत प्रभावी आहे.
ExcelJS आणि Axios वापरून एक्सेल सेलमध्ये प्रतिमा एम्बेड करणे
हे समाधान Node.js, Excel वर्कबुक तयार करण्यासाठी ExcelJS आणि इमेज डेटा आणण्यासाठी Axios चा वापर करते. हे एक्सेल सेलमध्ये थेट प्रतिमा एम्बेड करणे हाताळते.
const ExcelJS = require('exceljs');
const axios = require('axios');
async function addImageToExcel() {
const workbook = new ExcelJS.Workbook();
const worksheet = workbook.addWorksheet('My Sheet');
const data = [
{ id: 1, imageUrl: 'https://example.com/image1.png' },
{ id: 2, imageUrl: 'https://example.com/image2.png' }
];
worksheet.columns = [
{ header: 'ID', key: 'id', width: 10 },
{ header: 'Image', key: 'image', width: 30 }
];
for (const item of data) {
const row = worksheet.addRow({ id: item.id });
row.height = 90;
const imageId = workbook.addImage({
buffer: (await axios.get(item.imageUrl, { responseType: 'arraybuffer' })).data,
extension: 'png'
});
worksheet.addImage(imageId, \`B${row.number}:B${row.number}\`);
}
await workbook.xlsx.writeFile('ExcelWithImages.xlsx');
console.log('Excel file with images saved!');
}
addImageToExcel().catch(console.error);
बेस64 डेटा आणि शीटजेएस वापरून एक्सेलमध्ये प्रतिमा एम्बेड करणे
हे समाधान क्रोम एक्स्टेंशन वातावरणात शीटजेएस वापरून एक्सेल फाइलमध्ये एम्बेड करण्यापूर्वी प्रतिमा आणण्यावर आणि बेस64 फॉरमॅटमध्ये रूपांतरित करण्यावर लक्ष केंद्रित करते.
१
क्रोम विस्तारांसाठी एक्सेल फाइल्समध्ये इमेज एम्बेडिंग ऑप्टिमाइझ करणे
विकसित करताना ए Chrome विस्तार एक्सेल फायलींमध्ये प्रतिमा समाकलित करणारे, ब्राउझर वातावरणात इमेज एम्बेडिंग कसे हाताळायचे हे एक मोठे आव्हान आहे. पारंपारिक Node.js वातावरणाच्या विपरीत, Chrome विस्तार अतिरिक्त सुरक्षा आणि कार्यप्रदर्शन प्रतिबंधांसह येतात जे विशिष्ट API मध्ये थेट प्रवेश प्रतिबंधित करतात. याचा अर्थ Axios सारख्या लायब्ररी वापरून प्रतिमा आणण्यासारख्या पद्धतींना ब्राउझर धोरणांचे पालन करण्यासाठी पर्यायांची आवश्यकता असू शकते.
ब्राउझर वातावरणासाठी एक उपाय वापरणे समाविष्ट असू शकते बेस64 कच्च्या बायनरी डेटाऐवजी एन्कोड केलेल्या प्रतिमा. बेस64 एन्कोडिंगमुळे प्रतिमा सहजपणे हस्तांतरित आणि स्ट्रिंग म्हणून संग्रहित केल्या जाऊ शकतात, ज्या नंतर शीटजेएस सारख्या लायब्ररीचा वापर करून थेट एक्सेल शीटमध्ये एम्बेड केल्या जाऊ शकतात. या प्रकरणात, बेस64 एन्कोडिंग Chrome द्वारे लादलेल्या सुरक्षा मर्यादांवर मात करण्यास मदत करते, विशेषत: कारण विस्तार Node.js-विशिष्ट कोड कार्यान्वित करू शकत नाहीत.
विचार करण्याजोगी आणखी एक महत्त्वाची बाब म्हणजे एक्सेल फाइल्समधील मोठ्या इमेज डेटा सेटची हाताळणी. एक्सेल शीटमध्ये एकाधिक प्रतिमा एम्बेड केल्याने फाईलचा आकार मोठ्या प्रमाणात वाढू शकतो, ज्यामुळे कार्यप्रदर्शन प्रभावित होऊ शकते, विशेषत: ब्राउझर-आधारित अनुप्रयोगामध्ये. हे ऑप्टिमाइझ करण्यासाठी, प्रतिमेची गुणवत्ता अबाधित राहते याची खात्री करताना विकासकांनी फाइल आकार कमी करण्यासाठी WebP किंवा JPEG सारखे संकुचित प्रतिमा स्वरूप वापरावे.
JavaScript सह एक्सेलमध्ये प्रतिमा एम्बेड करण्यावरील सामान्य प्रश्न
- मी क्रोम एक्स्टेंशन वातावरणात इमेज कसे आणू शकतो?
- Chrome विस्तारामध्ये, तुम्ही वापरू शकता fetch() URL वरून प्रतिमा पुनर्प्राप्त करण्यासाठी आणि वापरून त्यांना बेस64 मध्ये रूपांतरित करा १ एम्बेडिंगसाठी.
- मोठ्या फाईलचा आकार टाळण्यासाठी प्रतिमा कोणत्या फॉरमॅटमध्ये असाव्यात?
- वापरण्याची शिफारस केली जाते WebP किंवा JPEG फॉरमॅट्स, कारण ते चांगले कॉम्प्रेशन ऑफर करतात आणि अंतिम एक्सेल फाइल आकार कमी करतात.
- एकाच एक्सेल फाईलमध्ये अनेक प्रतिमा एम्बेड करणे शक्य आहे का?
- होय, लायब्ररी वापरणे जसे ExcelJS किंवा ५, तुम्ही इमेज URL च्या ॲरेमधून लूप करून वेगवेगळ्या सेलमध्ये अनेक इमेज एम्बेड करू शकता.
- Node.js आणि ब्राउझरमध्ये इमेज एम्बेड करण्यात काय फरक आहे?
- Node.js मध्ये, तुम्ही वापरू शकता axios.get() प्रतिमा डेटा आणण्यासाठी, ब्राउझरमध्ये असताना, तुम्हाला वापरण्याची आवश्यकता आहे fetch() आणि CORS धोरणे योग्यरित्या हाताळा.
- एक्सेल सेलमध्ये प्रतिमांचा आकार योग्य प्रकारे बदलला गेला आहे याची मी खात्री कशी करू शकतो?
- वापरा row.height आणि ९ पेशींचे परिमाण नियंत्रित करण्यासाठी कार्ये जेथे प्रतिमा एम्बेड केल्या जातात, योग्य प्रदर्शन सुनिश्चित करते.
एक्सेलमध्ये प्रतिमा एम्बेड करण्यावरील अंतिम विचार
वापरून थेट एक्सेल सेलमध्ये प्रतिमा एम्बेड करणे JavaScript ExcelJS सारखी योग्य साधने आणि लायब्ररी आवश्यक आहेत, विशेषत: Chrome विस्तार वातावरणात काम करताना. हे तुम्हाला अधिक डायनॅमिक आणि दृष्यदृष्ट्या समृद्ध एक्सेल फाइल्स व्युत्पन्न करण्यास अनुमती देते.
बायनरी फॉरमॅटमध्ये इमेज डेटा आणणे आणि ते थेट सेलमध्ये एम्बेड करणे यासारख्या ऑप्टिमाइझ केलेल्या तंत्रांद्वारे, ही पद्धत सुनिश्चित करते की तुमच्या व्युत्पन्न केलेल्या एक्सेल फाइल्स वेब डेव्हलपमेंटमध्ये आणि त्यापुढील विविध वापराच्या केसेस पूर्ण करण्यासाठी कार्यशील आणि दृश्यास्पद आहेत.
संदर्भ आणि अतिरिक्त संसाधने
- एक्सेल फाइल्स तयार करण्यासाठी आणि हाताळण्यासाठी एक्सेलजेएस कसे वापरावे यावरील अधिक तपशीलवार दस्तऐवजीकरणासाठी, भेट द्या ExcelJS अधिकृत दस्तऐवजीकरण .
- JavaScript मध्ये Axios वापरून URL मधून प्रतिमा कशा मिळवायच्या हे समजून घेण्यासाठी, पहा Axios दस्तऐवजीकरण .
- एक्सेल फाइल्समध्ये एम्बेड करण्यासाठी JavaScript मध्ये बेस64 इमेज एन्कोडिंगसह काम करण्याबद्दल माहितीसाठी, तपासा MDN वेब डॉक्स: FileReader.readAsDataURL .
- तुम्ही क्रोम एक्स्टेंशन विकसित करत असल्यास आणि API वापराबद्दल मार्गदर्शन हवे असल्यास, येथे भेट द्या Chrome विस्तार विकसक मार्गदर्शक .