Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.
Bir resmi tam olarak tek bir hücreye sığdırmak, görsel raporlar, ürün katalogları, çalışan dizinleri, panolar veya envanter listeleri gibi elektronik tablolar tasarlarken yaygın bir gereksinimdir. Bir 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, hücreye bağlı bir resim isteyebilirsiniz. Aspose.Cells bu senaryoyu iki tamamlayıcı şekilde destekler:
Picture ekleyin, Placement özelliğini MOVE_AND_SIZE olarak ayarlayın ve bağlantı hücrelerini (getUpperLeftRow, getUpperLeftColumn, getLowerRightRow, getLowerRightColumn) resmin tam olarak bir hücreyi kaplayacağı şekilde ayarlayın.getEmbeddedImage() ayarlayıcısına atayın. Görüntü, hücrenin görüntü alanına sığacak şekilde otomatik olarak ölçeklenir ve hücreyle birlikte hareket eder.
Bu makalenin geri kalanı her iki yaklaşımı adım adım açıklar, ilgili API’leri anlatır ve bunların kodda nasıl kullanılacağını gösterir.Kayan resim, çalışma sayfasının çizim katmanında bulunan bir Picture nesnesidir. Herhangi bir tek hücrenin parçası olmasa da, bir hücre aralığına bağlıdır. Resmin bağlantı 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ücreye yayılır.
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 yöntem yeni resmi verilen hücreye bağlar.Picture.setPlacement() değerini PlacementType.MOVE_AND_SIZE olarak ayarlayın.Resmin bağlantısı, sıfır tabanlı dört indeks özelliğiyle tanımlanır:
Picture.getUpperLeftRow() — resmin üst kenarının satır indeksi.Picture.getUpperLeftColumn() — resmin sol kenarının sütun indeksi.Picture.getLowerRightRow() — resmin alt kenarının satır indeksi. Resmin alt kenarının r satırının alt kısmında bitmesini sağlamak için bunu r + 1 olarak ayarlayın.Picture.getLowerRightColumn() — resmin sağ kenarının sütun indeksi. Resmin sağ kenarının c sütununun sağ kısmında bitmesini sağlamak için bunu c + 1 olarak ayarlayın.Aspose.Cells’deki satır ve sütun indisleri sıfır tabanlıdır. C6 hücresinin satır indeksi 5, sütun indeksi 2’dir. Sağ alt bağlantı noktasındaki bir-bir dışı hatalar, resimlerin bitişik bir hücreye taşmış gibi görünmesinin en yaygın kaynağıdır.
Picture.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 enum döndürür. Tek hücreli resim için önerilen değer PlacementType.MOVE_AND_SIZE‘dir; bu değer, resmin temel alınan hücreyle birlikte taşınmasına ve yeniden boyutlandırılmasına neden olarak tam sığmayı korur.
Workbook oluşturun (veya mevcut birini açın).Worksheet‘e workbook.getWorksheets().get(0) üzerinden erişin.InputStream‘e (örneğin bir FileInputStream) try-with-resources bloğu kullanarak açın; böylece akış düzgün ş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, tam yaklaşımı gösterir.import com.aspose.cells.*;
import java.io.FileInputStream;
Workbook workbook = new Workbook();
Worksheet worksheet = workbook.getWorksheets().get(0);
try (FileInputStream fs = new FileInputStream("logo.png"))
{
int picIndex = worksheet.getPictures().add(5, 2, fs);
Picture picture = worksheet.getPictures().get(picIndex);
picture.setUpperLeftRow(5);
picture.setUpperLeftColumn(2);
picture.setLowerRightRow(6);
picture.setLowerRightColumn(3);
picture.setPlacement(PlacementType.MOVE_AND_SIZE);
}
workbook.save("output.xlsx", SaveFormat.XLSX);
Aspose.Cells ayrıca hücreye bağlı görüntüler için daha basit bir mekanizma sunar: Cell.setEmbeddedImage(byte[]) yöntemi. Bu özelliğe görüntü baytları atamak, görüntüyü satır içi içerikmiş gibi hücrenin kendisine ekler.
setEmbeddedImage() yöntemini en kısa seçenek haline getirir.Workbook oluşturun (veya mevcut birini açın).Worksheet‘e workbook.getWorksheets().get(0) üzerinden erişin.byte[] dizisine okuyun (örneğin, java.nio.file‘dan Files.readAllBytes() aracılığıyla dosyayı okuyarak).worksheet.getCells().get("C6") veya worksheet.getCells().get(5, 2) aracılığıyla.cell.setEmbeddedImage(bytes) kullanarak hücreye atayın..xlsx dosyası olarak kaydedin.
Aşağıdaki kod, tam yaklaşımı gösterir.import com.aspose.cells.*;
import java.nio.file.Files;
import java.nio.file.Paths;
Workbook workbook = new Workbook();
Worksheet worksheet = workbook.getWorksheets().get(0);
// Get the target cell C6
Cell cell = worksheet.getCells().get("C6");
// Read the image file into a byte array
byte[] imageData = Files.readAllBytes(Paths.get("logo.png"));
// 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);
Her iki yaklaşım da tek bir hücreye sığan bir resim üretir, ancak resmin nasıl depolandığı ve nasıl davrandığı konusunda farklılık gösterir:
PictureCollection ile zaten çalışan kodla eski sürüm uyumluluğu gerektirdiğinizde.Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.