„JavaScript“ naudojimas „Chrome“ plėtinyje vaizdams įterpti į „Excel“ langelius

Temp mail SuperHeros
„JavaScript“ naudojimas „Chrome“ plėtinyje vaizdams įterpti į „Excel“ langelius
„JavaScript“ naudojimas „Chrome“ plėtinyje vaizdams įterpti į „Excel“ langelius

Vaizdų įterpimas į „Excel“ failus su „JavaScript“ ir „SheetJS“.

Kuriant „Chrome“ plėtinį, generuojantį „Excel“ (.xlsx) failus, vaizdų įterpimas tiesiai į langelius gali būti sudėtinga užduotis. Nors „JavaScript“ ir bibliotekos, pvz., „SheetJS“, supaprastina skaičiuoklių kūrimą ir redagavimą, tvarkyti įterptus vaizdus dažnai reikia konkretesnio tvarkymo.

Daugeliu atvejų kūrėjai susiduria su apribojimu, nes jie gali pridėti tik vaizdo nuorodas į langelius, o ne tiesiogiai įterpti vaizdus. Ši problema kyla dėl vaizdo duomenų konvertavimo ir „Excel“ failų formatavimo sudėtingumo, ypač naršyklės aplinkoje, pvz., „Chrome“ plėtiniuose.

Šiame straipsnyje mes išnagrinėsime sprendimą, kaip įterpti vaizdus tiesiai į "Excel" failo langelius naudojant "JavaScript". Vaizdai bus paimti iš HTML elementų ir įterpti į atitinkamus „Excel“ langelius, todėl naudotojai, kuriems reikia vaizdinių duomenų skaičiuoklėse, bus sklandesni.

Aptarsime, kaip integruoti tokias bibliotekas kaip „ExcelJS“, ir spręsti įprastas problemas, pvz., vaizdų įterpimą į apsaugotą „Chrome“ plėtinio aplinką. Be to, norėdami užtikrinti sėkmingą diegimą, peržiūrėsime Node.js ir „Chrome“ plėtinių metodų skirtumus.

komandą Naudojimo pavyzdys
ExcelJS.Workbook() Tai sukuria naują Excel darbaknygės objektą Node.js aplinkoje naudojant ExcelJS biblioteką. Tai būtina norint sukurti „Excel“ failus nuo nulio, įskaitant darbalapius, formatavimą ir vaizdus.
addWorksheet() Šis metodas prideda naują darbalapį prie darbaknygės. Šios problemos kontekste jis naudojamas kuriant lapą, kuriame galima įterpti duomenis (tiek tekstą, tiek vaizdus).
axios.get() Naudojamas vaizdo duomenims iš URL gauti. Jis nuskaito dvejetainius vaizdo duomenis masyvo buferio formatu, kuris yra būtinas vaizdams įterpti į Excel langelius.
workbook.addImage() Ši komanda įtraukia vaizdą į „Excel“ darbaknygę. Vaizdas gali būti pateiktas kaip dvejetainių duomenų buferis, kuris yra būtinas vaizdams įterpti į konkrečias ląsteles.
worksheet.addImage() Šis metodas yra atsakingas už pridėto vaizdo įdėjimą į konkrečią darbalapio langelį arba langelių diapazoną, kad būtų galima įterpti vaizdinius elementus kartu su tekstiniais duomenimis.
fetch() Naršyklės aplinkoje ši komanda naudojama norint paprašyti vaizdo iš nuotolinio serverio ir gauti jį kaip blob. Tada dėmė konvertuojama į base64 koduotą eilutę, skirtą įterpti į „Excel“.
FileReader.readAsDataURL() Ši komanda konvertuoja blob (dvejetainio didelio objekto) duomenis, gautus iš vaizdo URL, į base64 eilutę, todėl ją galima įterpti į Excel failą per SheetJS.
aoa_to_sheet() Šis SheetJS metodas konvertuoja masyvų masyvą (AoA) į „Excel“ lapą. Tai ypač naudinga nustatant paprastas duomenų struktūras, apimančias ir tekstą, ir vaizdus.
writeFile() Ši funkcija „ExcelJS“ ir „SheetJS“ išsaugo sugeneruotą „Excel“ failą su įterptais vaizdais vietinėje failų sistemoje. Tai paskutinis žingsnis sukūrus darbaknygę ir pridėjus visus reikiamus elementus.

Kaip įterpti vaizdus į „Excel“ langelius naudojant „JavaScript“ ir „ExcelJS“.

Mano pateiktas scenarijus išsprendžia vaizdų įterpimo tiesiai į „Excel“ ląsteles problemą JavaScript, ExcelJS ir Axios. Pirma, scenarijus pradedamas inicijuojant naują darbaknygę naudojant ExcelJS su komanda ExcelJS.Workbook(), kuri yra „Excel“ failų generavimo pagrindas. Tada skambinant sukuriamas darbalapis addWorksheet(). Šis darbalapis veikia kaip visų duomenų ir vaizdų, kurie bus įtraukti, konteineris. Pavyzdiniai duomenys apima vaizdų URL, kurie vėliau bus gauti ir įterpti į konkrečius langelius.

Norėdami apdoroti vaizdo gavimą, scenarijus naudoja Axios biblioteką su axios.get() prašyti vaizdų iš jų URL. „Axios“ nuskaito vaizdą kaip dvejetainius duomenis naudodama „responseType“ „masyvo buferį“, kuris tinka dvejetainiam turiniui, pvz., vaizdams, įterpti į „Excel“ failą. Gavus duomenis, vaizdas konvertuojamas į buferinį formatą, leidžiantį ExcelJS atpažinti jį kaip tinkamą įterpti į langelį vaizdą.

Kai vaizdas yra paimtas ir apdorojamas, komanda workbook.addImage() naudojamas paveikslėliui įterpti į darbaknygę. Šis veiksmas apibrėžia vaizdą ir paruošia jį įdėti į tam tikrą darbalapio vietą. Po to workheet.addImage() nurodo, kur turi būti vaizdas, šiuo atveju dabartinės eilutės stulpelyje "B". Eilutės aukštis reguliuojamas taip, kad vaizdas gerai tilptų langelyje.

Galiausiai scenarijus išsaugo darbaknygę naudodamas workbook.xlsx.writeFile(), kuri įrašo failą į vietinę sistemą. Tai užbaigia procesą, o „Excel“ failas su įterptais vaizdais tiesiai į langelius, o ne tik nuorodomis. Šis metodas yra labai efektyvus tais atvejais, kai į ataskaitas arba duomenų lapus reikia įtraukti vaizdus, ​​​​kad naudotojai galėtų sklandžiai bendrauti su „Excel“ failais, kuriuose yra ir duomenų, ir vaizdinių elementų.

Vaizdų įterpimas į „Excel“ langelius naudojant „ExcelJS“ ir „Axios“.

Šis sprendimas naudoja Node.js, ExcelJS kuriant Excel darbaknygę ir Axios vaizdo duomenims gauti. Jis tvarko vaizdų įterpimą tiesiai į „Excel“ langelius.

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

Vaizdų įterpimas į „Excel“ naudojant „Base64 Data“ ir „SheetJS“.

Šis sprendimas skirtas vaizdų gavimui ir konvertavimui į base64 formatą prieš įterpiant juos į „Excel“ failą naudojant „SheetJS“ „Chrome“ plėtinio aplinkoje.

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

Vaizdo įterpimo į „Excel“ failus optimizavimas „Chrome“ plėtiniams

Kuriant a Chrome plėtinys Integruojant vaizdus į „Excel“ failus, vienas pagrindinių iššūkių yra tvarkyti vaizdų įterpimą naršyklės aplinkoje. Skirtingai nuo tradicinių Node.js aplinkos, „Chrome“ plėtiniuose yra papildomų saugos ir našumo apribojimų, kurie neleidžia tiesiogiai pasiekti tam tikrų API. Tai reiškia, kad tokiems metodams kaip vaizdų gavimas naudojant bibliotekas, pvz., „Axios“, gali prireikti alternatyvų, kad būtų laikomasi naršyklės politikos.

Naršyklės aplinkos sprendimas gali apimti naudojimą bazė64 užkoduoti vaizdai vietoj neapdorotų dvejetainių duomenų. „Base64“ kodavimas leidžia lengvai perkelti vaizdus ir saugoti juos kaip eilutę, kurią vėliau galima įterpti tiesiai į „Excel“ lapą naudojant tokias bibliotekas kaip „SheetJS“. Šiuo atveju base64 kodavimas padeda įveikti Chrome keliamus saugumo apribojimus, juolab, kad plėtiniai negali vykdyti Node.js specifinio kodo.

Kitas svarbus aspektas, į kurį reikia atsižvelgti, yra didelių vaizdų duomenų rinkinių tvarkymas „Excel“ failuose. Kelių vaizdų įterpimas į „Excel“ lapą gali smarkiai padidinti failo dydį, o tai gali turėti įtakos našumui, ypač naudojant naršyklę. Norėdami tai optimizuoti, kūrėjai turėtų naudoti suglaudintus vaizdo formatus, pvz., WebP arba JPEG, kad sumažintų failo dydį ir užtikrintų, kad vaizdo kokybė išliktų nepakitusi.

Dažni klausimai apie vaizdų įterpimą į „Excel“ naudojant „JavaScript“.

  1. Kaip gauti vaizdus „Chrome“ plėtinio aplinkoje?
  2. „Chrome“ plėtinyje galite naudoti fetch() norėdami gauti vaizdus iš URL ir konvertuoti juos į base64 naudodami FileReader įdėjimui.
  3. Kokio formato turi būti vaizdai, kad būtų išvengta didelių failų dydžių?
  4. Rekomenduojama naudoti WebP arba JPEG formatus, nes jie siūlo geresnį glaudinimą ir sumažina galutinį „Excel“ failo dydį.
  5. Ar galima į vieną Excel failą įdėti kelis vaizdus?
  6. Taip, naudojant tokias bibliotekas kaip ExcelJS arba SheetJS, galite įterpti kelis vaizdus į skirtingus langelius, peržiūrėdami vaizdų URL masyvą.
  7. Kuo skiriasi vaizdų įterpimas į Node.js ir naršyklę?
  8. Node.js galite naudoti axios.get() norėdami gauti vaizdo duomenis, būdami naršyklėje, turite naudoti fetch() ir tinkamai tvarkyti CORS politiką.
  9. Kaip užtikrinti, kad „Excel“ langeliuose būtų tinkamai pakeistas vaizdų dydis?
  10. Naudokite row.height ir addImage() funkcijų, skirtų valdyti langelių, kuriose įterpiami vaizdai, matmenis, užtikrinant tinkamą rodymą.

Paskutinės mintys apie vaizdų įterpimą į „Excel“.

Vaizdų įterpimas tiesiai į Excel langelius naudojant JavaScript reikia tinkamų įrankių ir bibliotekų, pvz., „ExcelJS“, ypač dirbant „Chrome“ plėtinio aplinkoje. Tai leidžia generuoti dinamiškesnius ir vizualiai turtingesnius Excel failus.

Naudojant optimizuotus metodus, pvz., vaizdo duomenų gavimą dvejetainiu formatu ir įterpiant juos tiesiai į langelius, šis metodas užtikrina, kad jūsų sukurti „Excel“ failai būtų funkcionalūs ir vizualiai patrauklūs, atitinkantys įvairius naudojimo atvejus kuriant žiniatinklį ir ne tik.

Nuorodos ir papildomi ištekliai
  1. Norėdami gauti daugiau informacijos apie tai, kaip naudoti ExcelJS kuriant ir manipuliuojant Excel failais, apsilankykite Oficiali ExcelJS dokumentacija .
  2. Norėdami suprasti, kaip gauti vaizdus iš URL naudojant „JavaScript“ „Axios“, žr Axios dokumentacija .
  3. Norėdami gauti informacijos apie darbą su „Base64“ vaizdo kodavimu „JavaScript“, kad būtų galima įterpti į „Excel“ failus, žr MDN žiniatinklio dokumentai: FileReader.readAsDataURL .
  4. Jei kuriate „Chrome“ plėtinį ir jums reikia API naudojimo nurodymų, apsilankykite šiuo adresu: „Chrome“ plėtinių kūrėjo vadovas .