Bir Hücreye Resim Ekleme
Giriş
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 tasarlarken yaygın bir gereksinimdir. Bir resmi 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 resim isteyebilirsiniz.
Aspose.Cells bu senaryoyu birbirini tamamlayan iki şekilde destekler:
- Yaklaşım 1 — Hücrenin üzerine kayan bir resim yerleştirin. Çalışma sayfasına bir
Pictureekleyin,placementözelliğiniMOVE_AND_SIZEolarak ayarlayın ve resmin tam olarak bir hücreyi kaplaması için sabitleme hücrelerini (upper_left_row,upper_left_column,lower_right_row,lower_right_column) ayarlayın. - Yaklaşım 2 — Resmi doğrudan bir hücreye gömün. Görüntü baytlarını hücrenin
embedded_imageözelliğine atayın. Resim, 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 inceler, ilgili API’leri açıklar ve bunların kodda nasıl kullanılacağını gösterir.
Yaklaşım 1: Hücrenin Üzerine Bir Resim Yerleştirme
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 sabitlenmiştir. Resmin sabitleme 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 resmi tam olarak tek bir hücreyi kaplayacak şekilde ayarlamak için şunları yapmanız gerekir:
- Resmi
Worksheet.pictures.add(row, column, stream)kullanarak ekleyin; bu, yeni resmi belirtilen hücreye sabitler. - Resmin sınırlayıcı dikdörtgeni hedef hücreyle çakışacak şekilde dört sabitleme özelliğini ayarlayın.
- Kullanıcı sütun genişliğini veya satır yüksekliğini değiştirdiğinde resmin alttaki hücreyle birlikte taşınması ve yeniden boyutlandırılması için
Picture.placementözelliğiniPlacementType.MOVE_AND_SIZEolarak ayarlayın.
Resmi Tek Bir Hücreye Sabitleme
Resmin sabitleme noktası dört sıfır tabanlı dizin özelliği ile tanımlanır:
Picture.upper_left_row— resmin üst kenarının satır dizini.Picture.upper_left_column— resmin sol kenarının sütun dizini.Picture.lower_right_row— resmin alt kenarının satır dizini. Resmin alt kenarınırsatırının altına yerleştirmek için bunur + 1olarak ayarlayın.Picture.lower_right_column— resmin sağ kenarının sütun dizini. Resmin sağ kenarınıcsütununun sağına yerleştirmek için bunuc + 1olarak ayarlayın.
Örneğin, resmi tam olarak C6 hücresine (satır dizini 5, sütun dizini 2) sığdırmak için upper_left_row = 5, upper_left_column = 2, lower_right_row = 6 ve lower_right_column = 3 ayarlayın.
Yerleşim Davranışını Kontrol Etme
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 bir resim için önerilen değer PlacementType.MOVE_AND_SIZE‘dır; bu, resmin alttaki hücreyle birlikte taşınmasını ve yeniden boyutlandırılmasını sağlayarak tam sığmayı korur.
Adım Adım Talimatlar
- Yeni bir
Workbookoluşturun (veya var olan birini açın). - Hedef
Worksheet‘eworkbook.worksheets[0]üzerinden erişin. - Görüntü dosyasını diskten bir dosya akışına (veya
BytesIOnesnesine) açın, akışın düzgün şekilde kapatılması için birwithbloğu kullanın. worksheet.pictures.add(5, 2, stream)çağrısını yaparak resmi C6 hücresine sabitlenmiş şekilde ekleyin. DöndürülenPicturereferansını yakalayın.- Dört sabitleme koordinatını, resmin yalnızca C6 hücresini kaplayacağı şekilde ayarlayın:
upper_left_row = 5,upper_left_column = 2,lower_right_row = 6,lower_right_column = 3. - Sütun veya satır yeniden boyutlandırıldığında resmin C6 ile hizalı kalmasını sağlamak için
picture.placement = PlacementType.MOVE_AND_SIZEayarlayın. - İsteğe bağlı olarak, yalnızca C6 hücresinin resmi içerdiğini göstermek için çevreleyen hücrelere örnek metin ekleyin.
- Çalışma kitabını diskte
.xlsxdosyası olarak kaydedin.
Aşağıdaki kod, eksiksiz yaklaşımı gösterir.
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)
Yaklaşım 2: Resmi Doğrudan Bir Hücreye Gömme
Aspose.Cells ayrıca hücreye bağlı resimler için daha basit bir mekanizma sunar: Cell.embedded_image özelliği. Görüntü baytlarını bu özelliğe atamak, resmi hücrenin kendisine, satır içi içerikmiş gibi ekler.
Gömülü Resimler Nasıl Çalışır
- Resim, çizim katmanındaki bir şekil olarak değil, hücre içeriğinin bir parçası olarak saklanır.
- Resim, hücrenin işlenmiş sınırlarına sığacak şekilde otomatik olarak ölçeklenir. Sabitleme koordinatları veya yerleşim ayarları gerekmez.
- Hücre, formüller tarafından referans verilebilen, bir satırın parçası olarak sıralanabilen veya diğer hücre düzeyindeki işlemlerde kullanılabilen gerçek bir adrese sahip gerçek bir hücre olarak kalır.
Bu, amacınız yalnızca “bu hücrenin içinde yaşayan bir resim” olduğunda Cell.embedded_image‘ı en kısa seçenek haline getirir.
Adım Adım Talimatlar
- Yeni bir
Workbookoluşturun (veya var olan birini açın). - Hedef
Worksheet‘eworkbook.worksheets[0]üzerinden erişin. - Görüntü dosyasını diskten bir
bytesnesnesine okuyun (örneğin, dosyayı ikili modda açıp.read()çağırarak). - Hedef hücreye bir referans alın —
worksheet.cells["C6"]veyaworksheet.cells[5, 2]aracılığıyla. - Bytes nesnesini hücrenin
embedded_imageözelliğine atayın. - İsteğe bağlı olarak, gömülü resme daha belirgin bir görünüm kazandırmak için hedef satırın ve sütunun satır yüksekliğini ve sütun genişliğini ayarlayın.
- Çalışma kitabını diskte
.xlsxdosyası olarak kaydedin.
Aşağıdaki kod, eksiksiz yaklaşımı gösterir.
import aspose.cells as ac
workbook = ac.Workbook()
worksheet = workbook.worksheets[0]
# Hedef hücre C6'yı al
cell = worksheet.cells["C6"]
# Görüntü dosyasını bir bayt dizisine oku
with open("logo.png", "rb") as f:
imageData = f.read()
# Görüntüyü doğrudan hücreye yerleştir
cell.embedded_image = imageData
# Yerleştirilen 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.cells.set_column_width(2, 30) # Sütun C (indeks 2)
worksheet.cells.set_row_height(5, 100) # Satır 6 (indeks 5)
# Elde edilen çalışma kitabını .xlsx dosyası olarak kaydet
workbook.save("output.xlsx", ac.SaveFormat.XLSX)
Doğru Yaklaşımı Seçme
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ığı açısından farklılık gösterir:
-
Şu durumlarda kayan resim kullanın (Yaklaşım 1):
- Yerleşim, katmanlama veya diğer çizim nesneleriyle hizalama üzerinde daha ayrıntılı kontrole ihtiyaç duyduğunuzda.
- Resmin, seçilebilen, yeniden sıralanabilen veya diğer şekillerle gruplanabilen bir şekil olarak davranmasını istediğinizde.
- Zaten
pictureskoleksiyonlarıyla çalışan kodla eski sürüm uyumluluğuna ihtiyaç duyduğunuzda. - Sabitleme koordinatlarını çalışma sayfası düzenine göre dinamik olarak hesaplamanız gerektiğinde.
-
Şu durumlarda gömülü resim kullanın (Yaklaşım 2):
- Bir hücreye mümkün olan en basit resim eklemeyi istediğinizde.
- Resim, diğer hücre içerikleri gibi hücreyle birlikte taşınmalıdır.
- Resmi bir şekil olarak düzenlemeniz gerekmiyorsa.
İlgili Makaleler
- Hücreye Resim Nasıl Yerleştirilir
- Görüntü Köprüleri Ekleme
- URL’den Bir Web Resmini Excel Çalışma Sayfasına Yükleme
- Konum, Boyut ve Tasarımcı Grafiğini Değiştirme