Вставка изображения в ячейку

Введение

Точное вписывание изображения в одну ячейку — распространённое требование при разработке электронных таблиц, которые служат визуальными отчётами, каталогами продукции, справочниками сотрудников, панелями мониторинга или списками инвентаря. Вместо того чтобы растягивать изображение на множество ячеек или размещать его произвольно на рабочем листе, может потребоваться чистое, привязанное к ячейке изображение, которое остаётся выровненным с ячейкой-владельцем. Aspose.Cells поддерживает этот сценарий двумя взаимодополняющими способами:

  • Подход 1 — Размещение плавающего изображения над ячейкой. Добавьте Picture на рабочий лист, установите его Placement в MoveAndSize и настройте ячейки привязки (UpperLeftRow, UpperLeftColumn, LowerRightRow, LowerRightColumn) так, чтобы изображение покрывало ровно одну ячейку.
  • Подход 2 — Встраивание изображения непосредственно в ячейку. Присвойте байты изображения свойству EmbeddedImage ячейки. Изображение автоматически масштабируется по области отображения ячейки и перемещается вместе с ячейкой. Остальная часть этой статьи описывает оба подхода, поясняет соответствующие API и показывает, как использовать их в коде.

Подход 1: размещение изображения над ячейкой

Плавающее изображение — это объект Picture, который находится на слое рисования рабочего листа. Хотя оно не является частью какой-либо отдельной ячейки, оно привязано к диапазону ячеек. Ячейки привязки изображения — его верхний левый и нижний правый углы — определяют его визуальные границы на рабочем листе. По умолчанию только что добавленное изображение охватывает несколько ячеек. Чтобы плавающее изображение покрывало ровно одну ячейку, необходимо:

  1. Добавить изображение с помощью worksheet.getPictures().add(int row, int column, InputStream stream), что привязывает новое изображение к заданной ячейке.
  2. Установить четыре свойства привязки так, чтобы ограничивающий прямоугольник изображения совпадал с целевой ячейкой.
  3. Установить picture.setPlacement(PlacementType.MOVE_AND_SIZE), чтобы изображение перемещалось и изменяло размер вместе с базовой ячейкой при изменении пользователем ширины столбца или высоты строки.

Привязка изображения к одной ячейке

Привязка изображения определяется четырьмя индексируемыми с нуля свойствами:

  • picture.setUpperLeftRow(int) — индекс строки верхнего края изображения.
  • picture.setUpperLeftColumn(int) — индекс столбца левого края изображения.
  • picture.setLowerRightRow(int) — индекс строки нижнего края изображения. Чтобы нижний край изображения находился у нижней границы строки r, установите это значение равным r + 1.
  • picture.setLowerRightColumn(int) — индекс столбца правого края изображения. Чтобы правый край изображения находился у правой границы столбца c, установите это значение равным c + 1.