Kuvien upottaminen Excel-tiedostoihin JavaScriptin ja SheetJS:n avulla
Kun kehitetään Excel (.xlsx) -tiedostoja luovaa Chrome-laajennusta, kuvien upottaminen suoraan soluihin voi olla haastava tehtävä. Vaikka JavaScript ja kirjastot, kuten SheetJS, yksinkertaistavat laskentataulukoiden luomista ja muokkaamista, upotettujen kuvien käsittely vaatii usein tarkempaa käsittelyä.
Monissa tapauksissa kehittäjät kohtaavat rajoituksena vain lisätä kuvalinkkejä soluihin sen sijaan, että upottaisivat kuvat suoraan. Tämä ongelma johtuu kuvatietojen muuntamisen ja Excel-tiedostomuotoilun monimutkaisuudesta, erityisesti selainympäristössä, kuten Chrome-laajennuksissa.
Tässä artikkelissa tutkimme ratkaisua upottaa kuvat suoraan Excel-tiedostosoluihin JavaScriptin avulla. Kuvat haetaan HTML-elementeistä ja lisätään sopiviin Excel-soluihin, mikä tarjoaa saumattomamman kokemuksen käyttäjille, jotka tarvitsevat visuaalista dataa laskentataulukoissaan.
Keskustelemme siitä, kuinka integroida kirjastoja, kuten ExcelJS, ja käsitellä yleisiä haasteita, kuten kuvien upottaminen suojattuun Chrome-laajennusympäristöön. Lisäksi tarkastelemme Node.js:n ja Chromen laajennusmenetelmien väliset erot onnistuneen toteutuksen varmistamiseksi.
Komento | Esimerkki käytöstä |
---|---|
ExcelJS.Workbook() | Tämä luo uuden Excel-työkirjaobjektin Node.js-ympäristöön käyttämällä ExcelJS-kirjastoa. Se on välttämätöntä Excel-tiedostojen, mukaan lukien laskentataulukoiden, muotoilun ja kuvien, luomiseksi tyhjästä. |
addWorksheet() | Tämä menetelmä lisää työkirjaan uuden laskentataulukon. Tämän ongelman yhteydessä sitä käytetään luomaan arkki, johon voidaan lisätä tietoja (sekä tekstiä että kuvia). |
axios.get() | Käytetään kuvatietojen hakemiseen URL-osoitteesta. Se hakee binäärikuvadataa taulukkopuskurimuodossa, mikä on tarpeen kuvien upottamiseksi Excel-soluihin. |
workbook.addImage() | Tämä komento lisää kuvan Excel-työkirjaan. Kuva voidaan tarjota binaaridatan puskurina, mikä on välttämätöntä kuvien upottamiseksi tiettyihin soluihin. |
worksheet.addImage() | Tämä menetelmä on vastuussa lisätyn kuvan sijoittamisesta laskentataulukon tiettyyn soluun tai solualueeseen, jolloin visuaaliset elementit voidaan upottaa tekstitietojen rinnalle. |
fetch() | Selainympäristössä tätä komentoa käytetään kuvan pyytämiseen etäpalvelimelta ja hakemiseen blobina. Blob muunnetaan sitten base64-koodatuksi merkkijonoksi Exceliin upottamista varten. |
FileReader.readAsDataURL() | Tämä komento muuntaa kuvan URL-osoitteesta haetut blob-tiedot (binaariset suuret objektit) base64-merkkijonoksi, mikä tekee siitä yhteensopivan Excel-tiedostoon upottamiseen SheetJS:n kautta. |
aoa_to_sheet() | Tämä SheetJS:n menetelmä muuntaa taulukon (AoA) Excel-taulukoksi. Se on erityisen hyödyllinen luotaessa yksinkertaisia tietorakenteita, jotka sisältävät sekä tekstiä että kuvia. |
writeFile() | Tämä toiminto sekä ExcelJS:ssä että SheetJS:ssä tallentaa luodun Excel-tiedoston, jossa on upotetut kuvat, paikalliseen tiedostojärjestelmään. Se on viimeinen vaihe työkirjan luomisen ja kaikkien tarvittavien elementtien lisäämisen jälkeen. |
Kuvien upottaminen Excelin soluihin JavaScriptin ja ExcelJS:n avulla
Toimittamani skripti ratkaisee ongelman, joka liittyy kuvien upottamiseen suoraan Excel-soluihin JavaScript, ExcelJS ja Axios. Ensin komentosarja alkaa alustamalla uusi työkirja ExcelJS-komennolla ExcelJS.Työkirja(), joka on perusta Excel-tiedostojen luomiselle. Sitten se luo laskentataulukon soittamalla addWorksheet(). Tämä laskentataulukko toimii säilönä kaikille lisättäville tiedoille ja kuville. Esimerkkitiedot sisältävät kuvien URL-osoitteita, jotka myöhemmin haetaan ja upotetaan tiettyihin soluihin.
Käsittelemään kuvien noutoa komentosarja käyttää Axios-kirjastoa axios.get() pyytää kuvia URL-osoitteistaan. Axios hakee kuvan binääritietona käyttämällä vastaustyyppiä "arraybuffer", joka sopii binaarisisällön, kuten kuvien, upottamiseen Excel-tiedostoon. Tietojen vastaanottamisen jälkeen kuva muunnetaan puskurimuotoon, jolloin ExcelJS tunnistaa sen kelvolliseksi soluun upotettavaksi kuvaksi.
Kun kuva on haettu ja käsitelty, komento workbook.addImage() käytetään kuvan lisäämiseen työkirjaan. Tämä vaihe määrittää kuvan ja valmistelee sen sijoitettavaksi tiettyyn paikkaan laskentataulukossa. Tämän jälkeen workheet.addImage() määrittää, minne kuva sijoitetaan, tässä tapauksessa nykyisen rivin sarakkeeseen "B". Rivin korkeutta säädetään niin, että kuva mahtuu hyvin soluun.
Lopuksi skripti tallentaa työkirjan käyttämällä workbook.xlsx.writeFile(), joka kirjoittaa tiedoston paikalliseen järjestelmään. Tämä viimeistelee prosessin, ja tuloksena on Excel-tiedosto, jossa on upotetut kuvat suoraan soluihin pelkkien linkkien sijaan. Tämä menetelmä on erittäin tehokas tapauksissa, joissa kuvia on sisällytettävä raportteihin tai tietosivuihin, mikä tarjoaa saumattoman kokemuksen käyttäjille, jotka käyttävät Excel-tiedostoja, jotka sisältävät sekä dataa että visuaalisia elementtejä.
Kuvien upottaminen Excelin soluihin ExcelJS:n ja Axiosin avulla
Tämä ratkaisu käyttää Node.js:ää, ExcelJS:ää Excel-työkirjan luomiseen ja Axiosta kuvatietojen hakemiseen. Se käsittelee kuvien upottamista suoraan Excelin soluihin.
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);
Kuvien upottaminen Exceliin Base64 Datan ja SheetJS:n avulla
Tämä ratkaisu keskittyy kuvien hakemiseen ja muuntamiseen base64-muotoon ennen niiden upottamista Excel-tiedostoon SheetJS:n avulla Chrome-laajennusympäristössä.
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();
Kuvien upottamisen optimointi Excel-tiedostoihin Chrome-laajennuksia varten
Kun kehitetään a Chromen laajennus joka integroi kuvat Excel-tiedostoihin, yksi suuri haaste on kuvien upottaminen selainympäristössä. Toisin kuin perinteiset Node.js-ympäristöt, Chrome-laajennuksissa on lisäturva- ja suorituskykyrajoituksia, jotka estävät suoran pääsyn tiettyihin sovellusliittymiin. Tämä tarkoittaa, että menetelmät, kuten kuvien hakeminen Axiosin kaltaisten kirjastojen avulla, saattavat tarvita vaihtoehtoja selainkäytäntöjen noudattamiseksi.
Ratkaisu selainympäristöihin voisi sisältää käytön base64 koodattuja kuvia raakabinaaridatan sijaan. Base64-koodaus mahdollistaa kuvien helpon siirron ja tallentamisen merkkijonona, joka voidaan sitten upottaa suoraan Excel-arkkiin käyttämällä kirjastoja, kuten SheetJS. Tässä tapauksessa base64-koodaus auttaa voittamaan Chromen asettamat tietoturvarajoitukset, varsinkin kun laajennukset eivät voi suorittaa Node.js-kohtaista koodia.
Toinen tärkeä huomioitava näkökohta on suurten kuvatietojoukkojen käsittely Excel-tiedostoissa. Useiden kuvien upottaminen Excel-taulukkoon voi suurentaa tiedoston kokoa huomattavasti, mikä voi vaikuttaa suorituskykyyn erityisesti selainpohjaisissa sovelluksissa. Tämän optimoimiseksi kehittäjien tulisi käyttää pakattuja kuvamuotoja, kuten WebP tai JPEG, minimoimaan tiedostokoko ja varmistamaan samalla, että kuvan laatu pysyy ennallaan.
Yleisiä kysymyksiä kuvien upottamisesta Exceliin JavaScriptin avulla
- Kuinka voin hakea kuvia Chrome-laajennusympäristössä?
- Chrome-laajennuksessa voit käyttää fetch() noutaaksesi kuvia URL-osoitteesta ja muuntaaksesi ne base64-muotoon käyttämällä FileReader upottamista varten.
- Missä muodossa kuvien tulee olla suurien tiedostokokojen välttämiseksi?
- On suositeltavaa käyttää WebP tai JPEG muotoja, koska ne tarjoavat paremman pakkauksen ja pienentävät lopullista Excel-tiedoston kokoa.
- Onko mahdollista upottaa useita kuvia yhteen Excel-tiedostoon?
- Kyllä, käyttämällä kirjastoja, kuten ExcelJS tai SheetJS, voit upottaa useita kuvia eri soluihin selaamalla kuvien URL-osoitteita.
- Mitä eroa on kuvien upottaminen Node.js:ään ja selaimeen?
- Node.js:ssä voit käyttää axios.get() kuvatietojen hakemiseksi selaimessa ollessasi sinun on käytettävä fetch() ja käsitellä CORS-käytäntöjä oikein.
- Kuinka varmistan, että kuvien kokoa muutetaan oikein Excel-soluissa?
- Käytä row.height ja addImage() Toimii ohjaamaan niiden solujen mittoja, joihin kuvat on upotettu, varmistaen oikean näytön.
Viimeisiä ajatuksia kuvien upottamisesta Exceliin
Kuvien upottaminen suoraan Excelin soluihin käyttämällä JavaScript vaatii oikeat työkalut ja kirjastot, kuten ExcelJS, varsinkin kun työskentelet Chrome-laajennusympäristössä. Sen avulla voit luoda dynaamisempia ja visuaalisesti monipuolisempia Excel-tiedostoja.
Optimoitujen tekniikoiden, kuten kuvatietojen hakemisen binäärimuodossa ja upotuksen suoraan soluihin, avulla tämä menetelmä varmistaa, että luomasi Excel-tiedostosi ovat sekä toimivia että visuaalisesti houkuttelevia, ja ne sopivat erilaisiin käyttötapauksiin verkkokehityksessä ja sen ulkopuolella.
Viitteet ja lisäresurssit
- Lisätietoja ExcelJS:n käyttämisestä Excel-tiedostojen luomiseen ja käsittelemiseen on osoitteessa ExcelJS:n virallinen dokumentaatio .
- Lisätietoja kuvien hakemisesta URL-osoitteista JavaScriptin Axiosilla on kohdassa Axios-dokumentaatio .
- Lisätietoja base64-kuvakoodauksen käyttämisestä JavaScriptillä Excel-tiedostoihin upottamista varten on osoitteessa MDN Web Docs: FileReader.readAsDataURL .
- Jos olet kehittämässä Chrome-laajennusta ja tarvitset ohjeita sovellusliittymän käyttöön, käy osoitteessa Chrome Extensions -kehittäjän opas .