Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.
Aspose.Cells предоставляет два различных способа связать изображение с одной ячейкой. Плавающее изображение — это фигура на слое рисунков рабочего листа, которая визуально накладывается на диапазон ячеек, тогда как встроенное изображение хранится внутри самой ячейки и автоматически масштабируется под область отображения ячейки. Выберите подход, который лучше всего соответствует вашим требованиям к компоновке.
Точное размещение изображения в одной ячейке — распространённое требование при проектировании электронных таблиц, которые служат визуальными отчётами, каталогами продукции, справочниками сотрудников, панелями мониторинга или списками инвентаря. Вместо того чтобы растягивать изображение на множество ячеек или размещать его свободно на рабочем листе, может потребоваться чистое изображение, привязанное к ячейке, которое остаётся выровненным с ячейкой, которой оно принадлежит. Aspose.Cells поддерживает этот сценарий двумя взаимодополняющими способами:
Picture на рабочий лист, установите его placement в MOVE_AND_SIZE и настройте координаты привязки (upper_left_row, upper_left_column, lower_right_row, lower_right_column) так, чтобы изображение покрывало ровно одну ячейку.embedded_image ячейки. Изображение автоматически масштабируется, чтобы соответствовать области отображения ячейки, и перемещается вместе с ячейкой.
В остальной части этой статьи рассматриваются оба подхода, объясняются соответствующие API и демонстрируется их использование в коде.Плавающее изображение — это объект Picture, который находится на слое рисунков рабочего листа. Хотя он не принадлежит какой-либо одной ячейке, он привязан к диапазону ячеек. Якорные ячейки изображения — его верхний левый и нижний правый углы — определяют его визуальные границы на рабочем листе. По умолчанию только что добавленное изображение охватывает несколько ячеек.
Чтобы плавающее изображение покрывало ровно одну ячейку, необходимо:
Worksheet.pictures.add(row, column, stream), которая привязывает новое изображение к указанной ячейке.Picture.placement в PlacementType.MOVE_AND_SIZE, чтобы изображение перемещалось и изменяло размер вместе с базовой ячейкой, когда пользователь изменяет ширину столбца или высоту строки.Привязка изображения определяется четырьмя свойствами индексов (начиная с нуля):
Picture.upper_left_row — индекс строки верхнего края изображения.Picture.upper_left_column — индекс столбца левого края изображения.Picture.lower_right_row — индекс строки нижнего края изображения. Чтобы нижний край изображения оказался на уровне нижней границы строки r, задайте значение r + 1.Picture.lower_right_column — индекс столбца правого края изображения. Чтобы правый край изображения оказался на уровне правой границы столбца c, задайте значение c + 1.Индексы строк и столбцов в Aspose.Cells начинаются с нуля. Ячейка C6 имеет индекс строки 5 и индекс столбца 2. Ошибки смещения на единицу в нижней правой привязке — наиболее частая причина появления изображений, накладывающихся на соседнюю ячейку.
Picture.placement — это перечисление типа PlacementType, которое управляет поведением изображения при изменении пользователем размеров строки или столбца под ним. Рекомендуемое значение для изображения в одной ячейке — PlacementType.MOVE_AND_SIZE, при котором изображение перемещается и изменяет размер вместе с базовой ячейкой, сохраняя точное соответствие.
Workbook (или откройте существующую).Worksheet через workbook.worksheets[0].BytesIO) с помощью блока with, чтобы поток был корректно освобождён.worksheet.pictures.add(5, 2, stream), чтобы добавить изображение, привязанное к ячейке C6. Получите возвращаемую ссылку на Picture.upper_left_row = 5, upper_left_column = 2, lower_right_row = 6, lower_right_column = 3.picture.placement = PlacementType.MOVE_AND_SIZE, чтобы изображение оставалось выровненным с C6 при изменении ширины столбца или высоты строки..xlsx.
Следующий код демонстрирует полный подход.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)
Aspose.Cells также предоставляет более простой механизм для изображений, привязанных к ячейкам: свойство Cell.embedded_image. Присвоение байтов изображения этому свойству прикрепляет изображение к самой ячейке, как если бы оно было встроенным содержимым.
Cell.embedded_image наиболее лаконичным вариантом, когда ваша цель — просто «изображение, которое находится внутри этой ячейки».Workbook (или откройте существующую).Worksheet через workbook.worksheets[0].bytes (например, открыв файл в двоичном режиме и вызвав .read()).worksheet.cells["C6"], либо через worksheet.cells[5, 2].bytes свойству embedded_image ячейки..xlsx.
Следующий код демонстрирует полный подход.import aspose.cells as ac
workbook = ac.Workbook()
worksheet = workbook.worksheets[0]
# Get the target cell C6
cell = worksheet.cells["C6"]
# Read the image file into a byte array
with open("logo.png", "rb") as f:
imageData = f.read()
# Embed the image directly into the cell
cell.embedded_image = imageData
# Optionally adjust row height and column width so the embedded image is more visible
worksheet.cells.set_column_width(2, 30) # Column C (index 2)
worksheet.cells.set_row_height(5, 100) # Row 6 (index 5)
# Save the resulting workbook as an .xlsx file
workbook.save("output.xlsx", ac.SaveFormat.XLSX)
Оба подхода создают изображение, которое помещается внутри одной ячейки, но они различаются по способу хранения и поведению:
pictures.Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.