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 yayarak veya çalışma sayfasına gevşek bir şekilde yerleştirmek yerine, sahip olduğu hücreyle hizalı kalan, temiz ve hücreye bağlı bir resim 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ı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ücreyi kaplar.
Bir kayan resmin tam olarak bir hücreyi kaplamasını sağlamak için şunları yapmanız gerekir:
Worksheet.Pictures.Add(int row, int column, Vector<uint8_t> stream) kullanarak ekleyin.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 oturmasını 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 oturmasını 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 bağlantı noktasındaki bir-ofset 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 resim için önerilen değer PlacementType.MoveAndSize değeridir; 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] aracılığıyla erişin.Vector<uint8_t> bayt arabelleğine okuyun.worksheet.Pictures.Add(5, 2, imageData) çağrısını 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.#include "Aspose.Cells.h"
#include <fstream>
#include <vector>
#include <iterator>
using namespace Aspose::Cells;
int main() {
Aspose::Cells::Startup();
Workbook workbook;
Worksheet worksheet = workbook.GetWorksheets().Get(0);
std::ifstream fs("logo.png", std::ios::binary);
std::vector<uint8_t> stdData((std::istreambuf_iterator<char>(fs)),
std::istreambuf_iterator<char>());
fs.close();
Vector<uint8_t> imageData(reinterpret_cast<const uint8_t*>(stdData.data()),
static_cast<int32_t>(stdData.size()));
int picIndex = worksheet.GetPictures().Add(5, 2, imageData);
Picture picture = worksheet.GetPictures().Get(picIndex);
picture.SetUpperLeftRow(5);
picture.SetUpperLeftColumn(2);
picture.SetLowerRightRow(6);
picture.SetLowerRightColumn(3);
picture.SetPlacement(PlacementType::MoveAndSize);
workbook.Save(u"output.xlsx", SaveFormat::Xlsx);
Aspose::Cells::Cleanup();
return 0;
}
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ü satır içi içerikmiş gibi hücrenin kendisine ekler.
Cell.EmbeddedImage özelliğini en kısa seçenek haline getirir.Workbook oluşturun (veya mevcut birini açın).Worksheet‘e workbook.GetWorksheets().Get(0] aracılığıyla erişin.Vector<uint8_t> bayt dizisine okuyun.worksheet.GetCells().Get("C6"] veya worksheet.GetCells().Get(5, 2] aracılığıyla.EmbeddedImage özelliğine atayın..xlsx dosyası olarak kaydedin.
Aşağıdaki kod, eksiksiz yaklaşımı gösterir.#include "Aspose.Cells.h"
#include <vector>
#include <fstream>
#include <iterator>
using namespace Aspose::Cells;
int main() {
Aspose::Cells::Startup();
Workbook wb;
Worksheet worksheet = wb.GetWorksheets().Get(0);
Cell cell = worksheet.GetCells().Get(u"C6");
// Görüntü dosyasını bir bayt dizisine oku
std::ifstream file("logo.png", std::ios::binary);
std::vector<uint8_t> stdImageData((std::istreambuf_iterator<char>(file)), std::istreambuf_iterator<char>());
file.close();
// std::vector'ı pointer+size yapıcısını kullanarak Aspose::Cells::Vector'a dönüştür
Vector<uint8_t> imageData(stdImageData.data(), (int32_t)stdImageData.size());
// Görüntüyü doğrudan hücreye yerleştir
cell.SetEmbeddedImage(imageData);
// İsteğe bağlı olarak satır yüksekliğini ve sütun genişliğini ayarla; böylece yerleştirilmiş görüntü daha görünür olur
worksheet.GetCells().SetColumnWidth(2, 30); // C sütunu (2. indeks)
worksheet.GetCells().SetRowHeight(5, 100); // 6. satır (5. indeks)
// Sonuç çalışma kitabını .xlsx dosyası olarak kaydet
wb.Save(u"output.xlsx", SaveFormat::Xlsx);
Aspose::Cells::Cleanup();
return 0;
}
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ığı konusunda farklılık gösterir:
PictureCollection ile çalışan kodla eski sürüm uyumluluğuna ihtiyaç duyduğunuzda.Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.