Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.
Aspose.Cells, bir görüntüyü tek bir hücreyle ilişkilendirmek için iki farklı yol sunar. Kayan resim, çalışma sayfası çizim katmanında bir hücre aralığının üzerine görsel olarak yerleştirilen bir şekildir; gömülü görüntü ise hücrenin kendisinin içinde saklanır ve hücrenin görüntüleme alanına otomatik olarak ölçeklenir. Düzen gereksinimlerinize en uygun yaklaşımı seçin.
Bir resmi tam olarak tek bir hücreye sığdırmak, görsel raporlar, ürün katalogları, çalışan dizinleri, panolar veya envanter listeleri olarak işlev gören elektronik tablolar tasarlanırken sıkça karşılaşılan bir gereksinimdir. Görüntüyü birçok hücreye yaymak veya çalışma sayfasına gevşek bir şekilde yerleştirmek yerine, sahibi olan hücreyle hizalı kalan, temiz ve hücreye bağlı bir görüntü isteyebilirsiniz. Aspose.Cells bu senaryoyu iki tamamlayıcı şekilde destekler:
Picture ekleyin, setPlacement özelliğini MOVE_AND_SIZE olarak ayarlayın ve resmin tam olarak bir hücreyi kaplaması için çapa hücrelerini (setUpperLeftRow, setUpperLeftColumn, setLowerRightRow, setLowerRightColumn) ayarlayın.setEmbeddedImage özelliğine görüntü baytlarını atayın. Görüntü, hücrenin görüntüleme alanına sığacak şekilde otomatik olarak ölçeklenir ve hücreyle birlikte taşınır.
Bu makalenin geri kalanı her iki yaklaşımı da adım adım açıklar, ilgili API’leri tanımlar ve bunların kodda nasıl kullanılacağını gösterir.Kayan resim, çalışma sayfası çizim katmanında yaşayan bir Picture nesnesidir. Herhangi bir tek hücrenin parçası olmasa da bir hücre aralığına tutturulur. Resmin çapa hücreleri — sol üst ve sağ alt köşeleri — çalışma sayfasındaki görsel kapsamını belirler. Varsayılan olarak, yeni eklenen bir resim birkaç hücreyi kaplar.
Kayan bir resmin tam olarak bir hücreyi kaplamasını sağlamak için şunları yapmanız gerekir:
Worksheet.getPictures().add(int row, int column, InputStream stream) kullanarak ekleyin; bu yeni resmi belirtilen hücreye tutturur.Picture.setPlacement özelliğini PlacementType.MOVE_AND_SIZE olarak ayarlayın.Resmin çapası dört sıfır tabanlı indis özelliğiyle tanımlanır:
setUpperLeftRow — resmin üst kenarının satır indisi.setUpperLeftColumn — resmin sol kenarının sütun indisi.setLowerRightRow — resmin alt kenarının satır indisi. Resmin alt kenarının r satırının altına oturması için bunu r + 1 olarak ayarlayın.setLowerRightColumn — resmin sağ kenarının sütun indisi. Resmin sağ kenarının c sütununun sağına oturması için bunu c + 1 olarak ayarlayın.Aspose.Cells’te satır ve sütun indisleri sıfır tabanlıdır. C6 hücresinin satır indisi 5, sütun indisi 2’dir. Sağ alt çapadaki bir-bir kayma hataları, resimlerin bitişik hücreye taşmış gibi görünmesinin en yaygın nedenidir.
getPlacement, kullanıcı alttaki satır veya sütunu yeniden boyutlandırdığında resmin nasıl davranacağını kontrol eden PlacementType türünde bir numaralandırmadır. Tek hücrelik bir resim için önerilen değer PlacementType.MOVE_AND_SIZE‘dır; bu, resmin alttaki hücreyle birlikte hareket etmesini ve yeniden boyutlandırılmasını sağlayarak tam sığmayı korur.
Workbook oluşturun (veya mevcut birini açın).Worksheet‘e workbook.getWorksheets().get(0) üzerinden erişin.InputStream olarak (tipik olarak FileInputStream) açın, böylece akış düzgün bir şekilde kapatılır.worksheet.getPictures().add(5, 2, stream) çağırın. Döndürülen Picture referansını yakalayın.setUpperLeftRow(5), setUpperLeftColumn(2), setLowerRightRow(6), setLowerRightColumn(3).picture.setPlacement(PlacementType.MOVE_AND_SIZE) ayarlayın..xlsx dosyası olarak kaydedin.
Aşağıdaki kod tüm yaklaşımı göstermektedir.Aspose.Cells ayrıca hücreye bağlı görüntüler için daha basit bir mekanizma sunar: Cell.setEmbeddedImage özelliği. Bu özelliğe görüntü baytlarını atamak, görüntüyü sanki satır içi içerikmiş gibi hücrenin kendisine ekler.
Cell.setEmbeddedImage‘ı en kısa seçenek haline getirir.Workbook oluşturun (veya mevcut birini açın).workbook.getWorksheets().get(0) üzerinden hedef Worksheet‘e erişin.byte[] dizisine okuyun (örneğin java.nio.file.Files‘tan bir Files.readAllBytes çağrısı kullanarak).worksheet.getCells().get("C6") veya worksheet.getCells().get(5, 2) aracılığıyla.setEmbeddedImage özelliğine atayın..xlsx dosyası olarak kaydedin.
Aşağıdaki kod tüm yaklaşımı göstermektedir.Her iki yaklaşım da tek bir hücrenin içine sığan bir resim üretir, ancak resmin nasıl saklandığı ve nasıl davrandığı konusunda farklılık gösterir:
PictureCollection ile çalışan kodla eski sürüm uyumluluğuna ihtiyaç duyduğunuzda.import jpype
import asposecells
jpype.startJVM()
from asposecells.api import Workbook
from asposecells.api import Workbook, SaveFormat, PlacementType
workbook = Workbook()
worksheet = workbook.getWorksheets().get(0)
FileInputStream = jpype.JClass("java.io.FileInputStream")
fs = FileInputStream("logo.png")
try:
picIndex = worksheet.getPictures().add(5, 2, fs)
picture = worksheet.getPictures().get(picIndex)
picture.setUpperLeftRow(5)
picture.setUpperLeftColumn(2)
picture.setLowerRightRow(6)
picture.setLowerRightColumn(3)
picture.setPlacement(PlacementType.MoveAndSize)
finally:
fs.close()
workbook.save("output.xlsx", SaveFormat.Xlsx)
jpype.shutdownJVM()
import jpype
import asposecells
jpype.startJVM()
from asposecells.api import Workbook, SaveFormat
workbook = Workbook()
worksheet = workbook.getWorksheets().get(0)
# Get the target cell C6
cell = worksheet.getCells().get("C6")
# Read the image file into a byte array
imageData = open("logo.png", "rb").read()
# Embed the image directly into the cell
cell.setEmbeddedImage(imageData)
# Optionally adjust row height and column width so the embedded image is more visible
worksheet.getCells().setColumnWidth(2, 30) # Column C (index 2)
worksheet.getCells().setRowHeight(5, 100) # Row 6 (index 5)
# Save the resulting workbook as an .xlsx file
workbook.save("output.xlsx", SaveFormat.Xlsx)
jpype.shutdownJVM()
Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.