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 rehberleri, panolar veya envanter listeleri olarak işlev gören elektronik tablolar tasarlarken yaygın 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, hücreye bağlı bir görüntü isteyebilirsiniz. Aspose.Cells bu senaryoyu iki tamamlayıcı şekilde destekler:
Picture ekleyin, placement özelliğini MoveAndSize olarak ayarlayın ve resmin tam olarak bir hücreyi kaplaması için bağlantı hücrelerini (upperLeftRow, upperLeftColumn, lowerRightRow, lowerRightColumn) ayarlayın.embeddedImage özelliğine atayın. Görüntü, hücrenin görüntüleme alanına sığacak şekilde otomatik olarak ölçeklenir ve hücreyle birlikte hareket eder.
Bu makalenin geri kalanı her iki yaklaşımı da ele alır, ilgili API’leri açıklar ve bunları kodda nasıl kullanacağınızı gösterir.Kayan resim, çalışma sayfası çizim katmanında bulunan bir Picture nesnesidir. Herhangi bir tek hücrenin parçası olmasa da bir hücre aralığına sabitlenir. 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ücreyi kapsar.
Kayan bir resmin tam olarak bir hücreyi kaplamasını sağlamak için şunları yapmanız gerekir:
worksheet.pictures.add(row, column, stream) kullanarak ekleyin; bu, yeni resmi verilen hücreye sabitler.picture.placement özelliğini PlacementType.MoveAndSize olarak ayarlayın.Resmin bağlantısı dört sıfır tabanlı dizin özelliği ile tanımlanır:
picture.upperLeftRow — resmin üst kenarının satır dizini.picture.upperLeftColumn — resmin sol kenarının sütun dizini.picture.lowerRightRow — resmin alt kenarının satır dizini. Resmin alt kenarının r satırının altına yerleşmesini sağlamak için bunu r + 1 olarak ayarlayın.picture.lowerRightColumn — resmin sağ kenarının sütun dizini. Resmin sağ kenarının c sütununun sağına yerleşmesini sağlamak için bunu c + 1 olarak ayarlayın.Aspose.Cells’teki satır ve sütun dizinleri sıfır tabanlıdır. C6 hücresinin satır dizini 5 ve sütun dizini 2’dir. Sağ alt bağlantı noktasındaki bir birimlik sapma hataları, resimlerin bitişik bir hücreye taşmış gibi görünmesinin en yaygın kaynağıdır.
picture.placement, 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ücreli bir resim için önerilen değer PlacementType.MoveAndSize‘dır; bu, resmin alttaki hücreyle birlikte hareket etmesine ve yeniden boyutlandırılmasına neden olarak tam sığmayı korur.
Workbook oluşturun (veya mevcut birini açın).Worksheet‘e workbook.worksheets[0] üzerinden erişin.worksheet.pictures.add(5, 2, stream) çağrısı yapın. Döndürülen Picture referansını yakalayın.upperLeftRow = 5, upperLeftColumn = 2, lowerRightRow = 6, lowerRightColumn = 3.picture.placement = PlacementType.MoveAndSize ayarlayın..xlsx dosyası olarak kaydedin.
Aşağıdaki kod, eksiksiz yaklaşımı gösterir.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 ayrıca hücreye bağlı görüntüler için daha basit bir mekanizma sunar: cell.embeddedImage özelliği. Görüntü baytlarını bu özelliğe atamak, görüntüyü sanki satır içi içerikmiş gibi hücrenin kendisine ekler.
cell.embeddedImage‘ı en özlü seçenek haline getirir.Workbook oluşturun (veya mevcut birini açın).Worksheet‘e workbook.worksheets[0] üzerinden erişin.fs.readFileSync) diskten bir Buffer veya bayt dizisine okuyun.worksheet.cells["C6"] veya worksheet.cells[5, 2] aracılığıyla.embeddedImage özelliğine atayın..xlsx dosyası olarak kaydedin.
Aşağıdaki kod, eksiksiz yaklaşımı gösterir.var workbook = new AsposeCells.Workbook();
var worksheet = workbook.getWorksheets().get(0);
// Get the target cell C6
var cell = worksheet.getCells().get("C6");
// Read the image file into a byte array
var imageData = fs.readFileSync("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", AsposeCells.SaveFormat.Xlsx);
Her iki yaklaşım da tek bir hücrenin içine sığan bir resim üretir, ancak resmin nasıl depolandığı ve nasıl davrandığı açısından farklılık gösterir:
Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.