Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.
Att anpassa en bild exakt till en enda cell är ett vanligt krav när man utformar kalkylblad som fungerar som visuella rapporter, produktkataloger, personalregister, dashboards eller inventarielistor. Istället för att sträcka ut en bild över många celler eller placera den löst på ett kalkylblad kanske du vill ha en ren, cellbunden bild som håller sig justerad med den cell som äger den. Aspose.Cells stödjer det här scenariot på två kompletterande sätt:
Picture i kalkylbladet, ställ in dess placement till MoveAndSize, och justera dess ankarceller (upperLeftRow, upperLeftColumn, lowerRightRow, lowerRightColumn) så att bilden täcker exakt en cell.embeddedImage-egenskap. Bilden skalas automatiskt för att passa cellens visningsyta och följer med cellen.
Resten av den här artikeln går igenom båda metoderna, förklarar relevanta API:er och visar hur man använder dem i kod.En flytande bild är ett Picture-objekt som finns på kalkylbladets ritlager. Även om den inte tillhör någon enskild cell är den förankrad till ett cellintervall. Bildens ankarceller — dess övre vänstra och nedre högra hörn — avgör dess visuella utsträckning på kalkylbladet. Som standard sträcker sig en nyligen tillagd bild över flera celler.
För att få en flytande bild att täcka exakt en cell behöver du:
worksheet.pictures.add(row, column, stream), vilket förankrar den nya bilden till den givna cellen.picture.placement till PlacementType.MoveAndSize så att bilden flyttas och storleksändras tillsammans med den underliggande cellen när användaren ändrar kolumnbredd eller radhöjd.Bildens ankare definieras av fyra nollbaserade indexegenskaper:
picture.upperLeftRow — radindex för bildens övre kant.picture.upperLeftColumn — kolumnindex för bildens vänstra kant.picture.lowerRightRow — radindex för bildens nedre kant. För att bildens nedre kant ska hamna längst ner på rad r, ställ in detta till r + 1.picture.lowerRightColumn — kolumnindex för bildens högra kant. För att bildens högra kant ska hamna till höger om kolumn c, ställ in detta till c + 1.Rad- och kolumnindex i Aspose.Cells är nollbaserade. Cell C6 har radindex 5 och kolumnindex 2. Off-by-one-fel på det nedre högra ankaret är den vanligaste orsaken till bilder som ser ut att överlappa in i en intilliggande cell.
picture.placement är en uppräkning av typen PlacementType som styr hur bilden beter sig när användaren ändrar storlek på raden eller kolumnen under den. Det rekommenderade värdet för en encellsbild är PlacementType.MoveAndSize, vilket gör att bilden flyttas och storleksändras tillsammans med sin underliggande cell, vilket bevarar den exakta passformen.
Workbook (eller öppna en befintlig).Worksheet från workbook.worksheets[0].worksheet.pictures.add(5, 2, stream) för att lägga till en bild förankrad till cell C6. Fånga den returnerade Picture-referensen.upperLeftRow = 5, upperLeftColumn = 2, lowerRightRow = 6, lowerRightColumn = 3.picture.placement = PlacementType.MoveAndSize för att hålla bilden justerad med C6 när kolumnen eller raden ändras..xlsx-fil.
Följande kod demonstrerar hela metoden.const AsposeCells = require("aspose.cells");
const fs = require("fs");
const workbook = new AsposeCells.Workbook();
const worksheet = workbook.getWorksheets().get(0);
const fs_stream = fs.createReadStream("logo.png");
const picIndex = worksheet.getPictures().add(5, 2, fs_stream);
const picture = worksheet.getPictures().get(picIndex);
picture.setUpperLeftRow(5);
picture.setUpperLeftColumn(2);
picture.setLowerRightRow(6);
picture.setLowerRightColumn(3);
picture.setPlacement(AsposeCells.PlacementType.MoveAndSize);
workbook.save("output.xlsx", AsposeCells.SaveFormat.Xlsx);
Aspose.Cells exponerar också en enklare mekanism för cellbundna bilder: egenskapen cell.embeddedImage. Att tilldela bildbytes till den här egenskapen fäster bilden till själva cellen, som om den vore inline-innehåll.
cell.embeddedImage till det mest koncisa alternativet när ditt mål helt enkelt är “en bild som finns inuti den här cellen”.Workbook (eller öppna en befintlig).Worksheet från workbook.worksheets[0].fs.readFileSync).worksheet.cells["C6"] eller worksheet.cells[5, 2].embeddedImage-egenskap..xlsx-fil.
Följande kod demonstrerar hela metoden.var workbook = new AsposeCells.Workbook();
var worksheet = workbook.getWorksheets().get(0);
// Hämta målcellen C6
var cell = worksheet.getCells().get("C6");
// Läs bildfilen till en byte-array
var imageData = fs.readFileSync("logo.png");
// Bädda in bilden direkt i cellen
cell.setEmbeddedImage(imageData);
// Justera eventuellt radhöjd och kolumnbredd så att den inbäddade bilden syns bättre
worksheet.getCells().setColumnWidth(2, 30); // Kolumn C (index 2)
worksheet.getCells().setRowHeight(5, 100); // Rad 6 (index 5)
// Spara den resulterande arbetsboken som en .xlsx-fil
workbook.save("output.xlsx", AsposeCells.SaveFormat.Xlsx);
Båda metoderna producerar en bild som passar inuti en enda cell, men de skiljer sig åt i hur bilden lagras och hur den beter sig:
Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.