JavaScript izmantošana Chrome paplašinājumā, lai ievietotu attēlus Excel šūnās

Temp mail SuperHeros
JavaScript izmantošana Chrome paplašinājumā, lai ievietotu attēlus Excel šūnās
JavaScript izmantošana Chrome paplašinājumā, lai ievietotu attēlus Excel šūnās

Attēlu iegulšana Excel failos, izmantojot JavaScript un SheetJS

Izstrādājot Chrome paplašinājumu, kas ģenerē Excel (.xlsx) failus, attēlu iegulšana tieši šūnās var būt sarežģīts uzdevums. Lai gan JavaScript un bibliotēkas, piemēram, SheetJS, vienkāršo izklājlapu izveidi un rediģēšanu, iegulto attēlu apstrādei bieži ir nepieciešama specifiskāka apstrāde.

Daudzos gadījumos izstrādātāji saskaras ar ierobežojumu, kas var tikai pievienot attēlu saites šūnām, nevis tieši iegult attēlus. Šo problēmu rada sarežģītība, kas saistīta ar attēlu datu konvertēšanu un Excel failu formatēšanu, jo īpaši pārlūkprogrammas vidē, piemēram, Chrome paplašinājumos.

Šajā rakstā mēs izpētīsim risinājumu attēlu iegulšanai tieši Excel failu šūnās, izmantojot JavaScript. Attēli tiks izgūti no HTML elementiem un ievietoti attiecīgajās Excel šūnās, piedāvājot vienkāršāku pieredzi lietotājiem, kuriem izklājlapās ir nepieciešami vizuāli dati.

Mēs apspriedīsim, kā integrēt bibliotēkas, piemēram, ExcelJS, un risināt bieži sastopamas problēmas, piemēram, attēlu iegulšanu aizsargātā Chrome paplašinājuma vidē. Turklāt mēs pārskatīsim atšķirības starp Node.js un Chrome paplašinājumu pieejām, lai nodrošinātu veiksmīgu ieviešanu.

Pavēli Lietošanas piemērs
ExcelJS.Workbook() Tādējādi vidē Node.js, izmantojot ExcelJS bibliotēku, tiek izveidots jauns Excel darbgrāmatas objekts. Tas ir būtiski, lai no jauna ģenerētu Excel failus, tostarp darblapas, formatējumu un attēlus.
addWorksheet() Šī metode darbgrāmatai pievieno jaunu darblapu. Šīs problēmas kontekstā to izmanto, lai izveidotu lapu, kurā var ievietot datus (gan tekstu, gan attēlus).
axios.get() Izmanto attēla datu iegūšanai no URL. Tas izgūst bināro attēlu datus masīva bufera formātā, kas nepieciešams attēlu iegulšanai Excel šūnās.
workbook.addImage() Šī komanda Excel darbgrāmatai pievieno attēlu. Attēlu var nodrošināt kā bināro datu buferi, kas ir būtisks attēlu iegulšanai noteiktās šūnās.
worksheet.addImage() Šī metode ir atbildīga par pievienotā attēla ievietošanu noteiktā darblapas šūnā vai šūnu diapazonā, ļaujot vizuālos elementus iegult līdzās teksta datiem.
fetch() Pārlūka vidē šī komanda tiek izmantota, lai pieprasītu attēlu no attālā servera un izgūtu to kā blobu. Pēc tam lāse tiek pārveidota par base64 kodētu virkni iegulšanai programmā Excel.
FileReader.readAsDataURL() Šī komanda pārveido blob (bināra liela objekta) datus, kas iegūti no attēla URL, base64 virknē, padarot to saderīgu iegulšanai Excel failā, izmantojot SheetJS.
aoa_to_sheet() Šī SheetJS metode pārvērš masīvu masīvu (AoA) par Excel lapu. Tas ir īpaši noderīgi, lai izveidotu vienkāršas datu struktūras, kas ietver gan tekstu, gan attēlus.
writeFile() Šī funkcija gan programmā ExcelJS, gan SheetJS saglabā ģenerēto Excel failu ar iegultajiem attēliem vietējā failu sistēmā. Tas ir pēdējais solis pēc darbgrāmatas izveides un visu nepieciešamo elementu pievienošanas.

Kā iegult attēlus Excel šūnās, izmantojot JavaScript un ExcelJS

Manis nodrošinātais skripts atrisina problēmu, kas saistīta ar attēlu iegulšanu tieši Excel šūnās, izmantojot JavaScript, ExcelJS un Axios. Pirmkārt, skripts sākas, inicializējot jaunu darbgrāmatu, izmantojot ExcelJS ar komandu ExcelJS.Darbgrāmata(), kas ir Excel failu ģenerēšanas pamats. Pēc tam tas izveido darblapu, zvanot addWorksheet(). Šī darblapa darbojas kā konteiners visiem datiem un attēliem, kas tiks pievienoti. Datu paraugi ietver attēlu vietrāžus URL, kas vēlāk tiks izgūti un iegulti noteiktās šūnās.

Lai apstrādātu attēla ienesi, skripts izmanto Axios bibliotēku ar axios.get() lai pieprasītu attēlus no saviem URL. Axios izgūst attēlu kā bināros datus, izmantojot atbildes veidu "masīva buferis", kas ir piemērots bināra satura, piemēram, attēlu, iegulšanai Excel failā. Pēc datu saņemšanas attēls tiek pārveidots bufera formātā, ļaujot ExcelJS atpazīt to kā derīgu attēlu iegulšanai šūnā.

Kad attēls ir ielādēts un apstrādāts, komanda workbook.addImage() tiek izmantots, lai ievietotu attēlu darbgrāmatā. Šī darbība nosaka attēlu un sagatavo to ievietošanai noteiktā vietā darblapā. Pēc šī workheet.addImage() norāda, kur attēls jānovieto, šajā gadījumā pašreizējās rindas kolonnā "B". Rindas augstums ir pielāgots, lai nodrošinātu, ka attēls labi iekļaujas šūnā.

Visbeidzot, skripts saglabā darbgrāmatu, izmantojot darbgrāmata.xlsx.writeFile(), kas ieraksta failu lokālajā sistēmā. Tas pabeidz procesu, kā rezultātā tiek izveidots Excel fails ar iegultiem attēliem tieši šūnās, nevis tikai saitēm. Šī metode ir ļoti efektīva gadījumos, kad pārskatos vai datu lapās ir jāiekļauj attēli, nodrošinot nevainojamu pieredzi lietotājiem, kuri mijiedarbojas ar Excel failiem, kas satur gan datus, gan vizuālos elementus.

Attēlu iegulšana Excel šūnās, izmantojot ExcelJS un Axios

Šis risinājums izmanto Node.js, ExcelJS Excel darbgrāmatas izveidei un Axios attēla datu izgūšanai. Tas apstrādā attēlu iegulšanu tieši Excel šūnās.

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);

Attēlu iegulšana programmā Excel, izmantojot Base64 Data un SheetJS

Šis risinājums ir vērsts uz attēlu iegūšanu un konvertēšanu base64 formātā pirms to iegulšanas Excel failā, izmantojot SheetJS Chrome paplašinājuma vidē.

async function getImageBase64(url) {
  const response = await fetch(url);
  const blob = await response.blob();
  return new Promise((resolve, reject) => {
    const reader = new FileReader();
    reader.onloadend = () => resolve(reader.result.split(',')[1]);
    reader.onerror = reject;
    reader.readAsDataURL(blob);
  });
}

async function addImageToSheetJS() {
  const wb = XLSX.utils.book_new();
  const ws = XLSX.utils.aoa_to_sheet([[ 'ID', 'Image' ]]);

  const imageData = await getImageBase64('https://example.com/image.png');
  ws['!merges'] = [{ s: { c: 1, r: 1 }, e: { c: 1, r: 5 } }];
  ws['B2'] = { t: 's', v: imageData, l: { Target: 'base64 image' } };

  XLSX.utils.book_append_sheet(wb, ws, 'Sheet 1');
  XLSX.writeFile(wb, 'SheetWithImages.xlsx');
}

addImageToSheetJS();

Attēlu iegulšanas optimizēšana Excel failos Chrome paplašinājumiem

Izstrādājot a Chrome paplašinājums kas integrē attēlus Excel failos, viens no galvenajiem izaicinājumiem ir tas, kā pārlūkprogrammas vidē rīkoties ar attēlu iegulšanu. Atšķirībā no tradicionālajām Node.js vidēm, Chrome paplašinājumiem ir papildu drošības un veiktspējas ierobežojumi, kas neļauj tiešu piekļuvi noteiktiem API. Tas nozīmē, ka tādām metodēm kā attēlu iegūšana, izmantojot bibliotēkas, piemēram, Axios, var būt vajadzīgas alternatīvas, lai nodrošinātu atbilstību pārlūkprogrammas politikām.

Risinājums pārlūkprogrammu vidēm varētu ietvert izmantošanu bāze64 kodēti attēli neapstrādātu bināro datu vietā. Base64 kodējums ļauj viegli pārsūtīt un saglabāt attēlus kā virkni, ko pēc tam var iegult tieši Excel lapā, izmantojot tādas bibliotēkas kā SheetJS. Šajā gadījumā base64 kodējums palīdz pārvarēt Chrome noteiktos drošības ierobežojumus, jo īpaši tāpēc, ka paplašinājumi nevar izpildīt Node.js raksturīgo kodu.

Vēl viens svarīgs aspekts, kas jāņem vērā, ir lielu attēlu datu kopu apstrāde Excel failos. Vairāku attēlu iegulšana Excel lapā var ievērojami palielināt faila lielumu, kas var ietekmēt veiktspēju, īpaši pārlūkprogrammā. Lai to optimizētu, izstrādātājiem ir jāizmanto saspiesti attēlu formāti, piemēram, WebP vai JPEG, lai samazinātu faila lielumu, vienlaikus nodrošinot nemainīgu attēla kvalitāti.

Bieži uzdotie jautājumi par attēlu iegulšanu programmā Excel, izmantojot JavaScript

  1. Kā es varu ienest attēlus Chrome paplašinājuma vidē?
  2. Chrome paplašinājumā varat izmantot fetch() lai izgūtu attēlus no URL un pārvērstu tos par base64, izmantojot FileReader iegulšanai.
  3. Kādā formātā jābūt attēliem, lai izvairītos no lieliem failu izmēriem?
  4. Ieteicams lietot WebP vai JPEG formātos, jo tie piedāvā labāku saspiešanu un samazina gala Excel faila lielumu.
  5. Vai vienā Excel failā ir iespējams iegult vairākus attēlus?
  6. Jā, izmantojot tādas bibliotēkas kā ExcelJS vai SheetJS, varat iegult vairākus attēlus dažādās šūnās, izmantojot virkni attēlu URL.
  7. Kāda ir atšķirība starp attēlu iegulšanu pakalpojumā Node.js un pārlūkprogrammā?
  8. Vietnē Node.js varat izmantot axios.get() lai ielādētu attēla datus, atrodoties pārlūkprogrammā, ir jāizmanto fetch() un pareizi rīkoties ar CORS politikām.
  9. Kā nodrošināt, lai Excel šūnās attēlu izmēri būtu pareizi mainīti?
  10. Izmantojiet row.height un addImage() funkcijas, lai kontrolētu to šūnu izmērus, kurās ir iegulti attēli, nodrošinot pareizu displeju.

Pēdējās domas par attēlu iegulšanu programmā Excel

Attēlu iegulšana tieši Excel šūnās, izmantojot JavaScript nepieciešami atbilstoši rīki un bibliotēkas, piemēram, ExcelJS, īpaši, ja strādājat Chrome paplašinājuma vidē. Tas ļauj ģenerēt dinamiskākus un vizuāli bagātākus Excel failus.

Izmantojot optimizētas metodes, piemēram, attēlu datu ienešanu binārā formātā un iegulšanu tieši šūnās, šī metode nodrošina, ka jūsu ģenerētie Excel faili ir gan funkcionāli, gan vizuāli pievilcīgi, nodrošinot dažādus lietošanas gadījumus tīmekļa izstrādē un ne tikai.

Atsauces un papildu resursi
  1. Lai iegūtu detalizētāku dokumentāciju par to, kā izmantot ExcelJS, lai izveidotu un apstrādātu Excel failus, apmeklējiet vietni ExcelJS oficiālā dokumentācija .
  2. Lai saprastu, kā iegūt attēlus no vietrāžiem URL, izmantojot JavaScript Axios, skatiet Axios dokumentācija .
  3. Lai iegūtu informāciju par darbu ar base64 attēlu kodējumu JavaScript iegulšanai Excel failos, skatiet MDN tīmekļa dokumenti: FileReader.readAsDataURL .
  4. Ja izstrādājat Chrome paplašinājumu un jums ir nepieciešami norādījumi par API lietošanu, apmeklējiet vietni Chrome paplašinājumu izstrādātāja rokasgrāmata .