Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.
Aspose.Cells erbjuder två olika sätt att koppla en bild till en enda cell. En flytande bild är en form på kalkylbladets ritningslager som visuellt överlagrar ett cellintervall, medan en inbäddad bild lagras inuti själva cellen och automatiskt skalas för att passa cellens visningsområde. Välj det tillvägagångssätt som bäst passar dina layoutkrav.
Att anpassa en bild exakt till en enda cell är ett vanligt krav när man utformar kalkylblad som fungerar som visuella rapporter, produktkataloger, personalkataloger, instrumentpaneler 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 cellen som äger den. Aspose.Cells stöder det här scenariot på två kompletterande sätt:
Picture i kalkylbladet, ställ in dess placement till MOVE_AND_SIZE och justera dess ankarceller (upper_left_row, upper_left_column, lower_right_row, lower_right_column) så att bilden täcker exakt en cell.embedded_image-egenskap. Bilden skalas automatiskt för att passa cellens visningsområde och följer med cellen.
Resten av den här artikeln går igenom båda tillvägagångssätten, förklarar de relevanta API:erna och visar hur de används i kod.En flytande bild är ett Picture-objekt som finns på kalkylbladets ritningslager. Även om den inte är en del av någon enskild cell är den förankrad i 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 behöver du:
Worksheet.pictures.add(row, column, stream), vilket förankrar den nya bilden i den givna cellen.Picture.placement till PlacementType.MOVE_AND_SIZE så att bilden flyttas och storleksändras tillsammans med den underliggande cellen när användaren ändrar kolumnbredden eller radhöjden.Bildens ankare definieras av fyra nollbaserade indexegenskaper:
Picture.upper_left_row — radindexet för bildens övre kant.Picture.upper_left_column — kolumnindexet för bildens vänstra kant.Picture.lower_right_row — radindexet för bildens nedre kant. För att bildens nedre kant ska hamna längst ner på rad r, ställ in detta på r + 1.Picture.lower_right_column — kolumnindexet 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 på 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 att bilder verkar ö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 encellbild är PlacementType.MOVE_AND_SIZE, vilket gör att bilden flyttas och storleksändras tillsammans med sin underliggande cell och bevarar den exakta passningen.
Workbook (eller öppna en befintlig).Worksheet från workbook.worksheets[0].BytesIO-objekt) med hjälp av ett with-block så att strömmen kasseras korrekt.worksheet.pictures.add(5, 2, stream) för att lägga till en bild förankrad i cell C6. Fånga den returnerade Picture-referensen.upper_left_row = 5, upper_left_column = 2, lower_right_row = 6, lower_right_column = 3.picture.placement = PlacementType.MOVE_AND_SIZE för att hålla bilden justerad med C6 när kolumnen eller raden ändras i storlek..xlsx-fil.
Följande kod demonstrerar det fullständiga tillvägagångssättet.import aspose.cells as ac
workbook = ac.Workbook()
worksheet = workbook.worksheets[0]
with open("logo.png", "rb") as fs:
pic_index = worksheet.pictures.add(5, 2, fs)
picture = worksheet.pictures[pic_index]
picture.upper_left_row = 5
picture.upper_left_column = 2
picture.lower_right_row = 6
picture.lower_right_column = 3
picture.placement = ac.PlacementType.MOVE_AND_SIZE
workbook.save("output.xlsx", ac.SaveFormat.XLSX)
Aspose.Cells erbjuder också en enklare mekanism för cellbundna bilder: egenskapen Cell.embedded_image. Genom att tilldela bildbytes till den här egenskapen bifogas bilden till själva cellen, som om den vore inline-innehåll.
Cell.embedded_image till det mest koncisa alternativet när ditt mål helt enkelt är “en bild som lever inuti den här cellen”.Workbook (eller öppna en befintlig).Worksheet från workbook.worksheets[0].bytes-objekt (till exempel genom att öppna filen i binärt läge och anropa .read()).worksheet.cells["C6"] eller worksheet.cells[5, 2].embedded_image-egenskap..xlsx-fil.
Följande kod demonstrerar det fullständiga tillvägagångssättet.import aspose.cells as ac
workbook = ac.Workbook()
worksheet = workbook.worksheets[0]
# Get the target cell C6
cell = worksheet.cells["C6"]
# Read the image file into a byte array
with open("logo.png", "rb") as f:
imageData = f.read()
# Embed the image directly into the cell
cell.embedded_image = imageData
# Optionally adjust row height and column width so the embedded image is more visible
worksheet.cells.set_column_width(2, 30) # Column C (index 2)
worksheet.cells.set_row_height(5, 100) # Row 6 (index 5)
# Save the resulting workbook as an .xlsx file
workbook.save("output.xlsx", ac.SaveFormat.XLSX)
Båda tillvägagångssätten producerar en bild som passar inuti en enda cell, men de skiljer sig åt i hur bilden lagras och hur den beter sig:
pictures-samlingar.Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.