Infoga en bild i en cell

Introduktion

Att passa in en bild exakt i en enda cell är ett vanligt krav när man utformar kalkylblad som fungerar som visuella rapporter, produktkataloger, personalkataloger, 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 inriktad med cellen som äger den. Aspose.Cells stöder detta scenario på två kompletterande sätt:

  • Metod 1 — Placera en flytande bild över en cell. Lägg till en Picture i kalkylbladet, ange dess Placement till MoveAndSize, och justera dess ankarceller (UpperLeftRow, UpperLeftColumn, LowerRightRow, LowerRightColumn) så att bilden täcker exakt en cell.
  • Metod 2 — Bädda in en bild direkt i en cell. Tilldela bildbytes till cellens 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 de relevanta API:erna och visar hur man använder dem i kod.

Metod 1: Placera en bild över en cell

En flytande bild är ett Picture-objekt som finns på kalkylbladets ritlager. Även om det inte är en del av någon enskild cell är det förankrat till ett cellintervall. Bildens ankarceller — dess övre vänstra och nedre högra hörn — avgör dess visuella omfattning 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 måste du:

  1. Lägg till bilden med worksheet.getPictures().add(int row, int column, InputStream stream), vilket förankrar den nya bilden till den angivna cellen.
  2. Ange de fyra ankaregenskaperna så att bildens begränsningsrektangel sammanfaller med målcellen.
  3. Ange picture.setPlacement(PlacementType.MOVE_AND_SIZE) så att bilden flyttas och storleksändras med den underliggande cellen när användaren ändrar kolumnbredden eller radhöjden.

Förankra bilden till en enskild cell

Bildens ankare definieras av fyra nollbaserade indexegenskaper:

  • picture.setUpperLeftRow(int) — radindexet för bildens övre kant.
  • picture.setUpperLeftColumn(int) — kolumnindexet för bildens vänstra kant.
  • picture.setLowerRightRow(int) — radindexet för bildens nedre kant. För att få bildens nedre kant att sitta vid botten av rad r, ange detta till r + 1.
  • picture.setLowerRightColumn(int) — kolumnindexet för bildens högra kant. För att få bildens högra kant att sitta vid höger om kolumn c, ange detta till c + 1.