Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.
Bir resmi tek bir hücreye tam olarak sığdırmak, görsel raporlar, ürün katalogları, çalışan rehberleri, panolar veya envanter listeleri olarak işlev gören elektronik tablolar tasarlarken sık 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, kendisine sahip olan hücreyle hizalı kalan temiz, hücreye bağlı bir görsel 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 çapa hücrelerini (UpperLeftRow, UpperLeftColumn, LowerRightRow, LowerRightColumn) ayarlayın.EmbeddedImage özelliğine atayın. Görsel, 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 kodda nasıl kullanılacağını 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 çapalanmıştır. 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 yöntem yeni resmi verilen hücreye çapalar.picture.setPlacement(PlacementType.MOVE_AND_SIZE) ayarlayın.Resmin çapası dört sıfır tabanlı dizin özelliği tarafından tanımlanır:
picture.setUpperLeftRow(int) — resmin üst kenarının satır dizini.picture.setUpperLeftColumn(int) — resmin sol kenarının sütun dizini.picture.setLowerRightRow(int) — 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.setLowerRightColumn(int) — 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’deki 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 çapasındaki off-by-one hataları, resimlerin bitişik 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 enum’dur. Tek hücreli resim için önerilen değer, resmin alttaki hücreyle birlikte hareket etmesini ve yeniden boyutlandırılmasını sağlayarak tam sığmayı koruyan PlacementType.MoveAndSize‘tır.
Workbook oluşturun (veya var olanı açın).Worksheet‘e workbook.getWorksheets().get(0) üzerinden erişin.InputStream‘e açın (örneğin, FileInputStream kullanarak) 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.UpperLeftRow = 5, UpperLeftColumn = 2, LowerRightRow = 6, LowerRightColumn = 3.picture.setPlacement(PlacementType.MOVE_AND_SIZE) ayarlayın..xlsx dosyası olarak kaydedin.
Aşağıdaki kod tüm yaklaşımı gösterir.const AsposeCells = require("aspose.cells-node");
var workbook = new AsposeCells.Workbook();
var worksheet = workbook.getWorksheets().get(0);
var picIndex = worksheet.getPictures().add(5, 2, "logo.png");
var 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örseller için daha basit bir mekanizma sunar: Cell.EmbeddedImage özelliği. Görüntü baytlarını bu özelliğe atamak, görüntüyü satır içi içerikmiş gibi hücrenin kendisine ekler.
Cell.EmbeddedImage‘ı en kısa seçenek haline getirir.Workbook oluşturun (veya var olanı açın).Worksheet‘e workbook.getWorksheets().get(0) üzerinden erişin.java.nio.file.Files üzerinden Files.readAllBytes kullanarak).worksheet.getCells().get("C6") veya worksheet.getCells().get(5, 2) aracılığıyla.cell.setEmbeddedImage(bytes) aracılığıyla hücrenin EmbeddedImage özelliğine atayın..xlsx dosyası olarak kaydedin.
Aşağıdaki kod tüm yaklaşımı gösterir.const AsposeCells = require("aspose.cells-node");
const fs = require("fs");
var workbook = new AsposeCells.Workbook();
var worksheet = workbook.getWorksheets().get(0);
// Hedef hücre C6'yı al
var cell = worksheet.getCells().get("C6");
// Görüntü dosyasını bir bayt dizisine oku
var imageData = fs.readFileSync("logo.png");
// Görüntüyü doğrudan hücreye göm
cell.setEmbeddedImage(imageData);
// Gömülü görüntünün daha görünür olması için isteğe bağlı olarak satır yüksekliğini ve sütun genişliğini ayarla
worksheet.getCells().setColumnWidth(2, 30); // Sütun C (indeks 2)
worksheet.getCells().setRowHeight(5, 100); // Satır 6 (indeks 5)
// Ortaya çıkan çalışma kitabını .xlsx dosyası olarak kaydet
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 saklandığı ve nasıl davrandığı konusunda farklılık gösterir:
PictureCollection ile ç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.