Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.
Точное вписывание изображения в одну ячейку — распространённое требование при разработке электронных таблиц, которые служат визуальными отчётами, каталогами продукции, справочниками сотрудников, панелями мониторинга или складскими списками. Вместо того чтобы растягивать изображение на множество ячеек или свободно размещать его на рабочем листе, может потребоваться чистое изображение, привязанное к ячейке, которое остаётся выровненным с ячейкой-владельцем. Aspose.Cells поддерживает этот сценарий двумя взаимодополняющими способами:
Picture на рабочий лист, задайте для placement значение MoveAndSize и настройте ячейки привязки (upperLeftRow, upperLeftColumn, lowerRightRow, lowerRightColumn) так, чтобы изображение покрывало ровно одну ячейку.embeddedImage ячейки. Изображение автоматически масштабируется по отображаемой области ячейки и перемещается вместе с ячейкой.
Далее в статье рассматриваются оба подхода, поясняются соответствующие API и демонстрируется их использование в коде.Плавающее изображение — это объект Picture, который существует на слое рисования рабочего листа. Хотя он не принадлежит какой-либо одной ячейке, он привязан к диапазону ячеек. Ячейки привязки изображения — его левый верхний и правый нижний углы — определяют его визуальные границы на рабочем листе. По умолчанию только что добавленное изображение охватывает несколько ячеек.
Чтобы плавающее изображение покрывало ровно одну ячейку, необходимо:
worksheet.pictures.add(row, column, stream), что привязывает новое изображение к указанной ячейке.picture.placement в значение PlacementType.MoveAndSize, чтобы изображение перемещалось и изменяло размер вместе с базовой ячейкой, когда пользователь меняет ширину столбца или высоту строки.Привязка изображения определяется четырьмя свойствами с индексами, начинающимися с нуля:
picture.upperLeftRow — индекс строки верхней границы изображения.picture.upperLeftColumn — индекс столбца левой границы изображения.picture.lowerRightRow — индекс строки нижней границы изображения. Чтобы нижняя граница изображения располагалась внизу строки r, задайте значение r + 1.picture.lowerRightColumn — индекс столбца правой границы изображения. Чтобы правая граница изображения располагалась справа от столбца c, задайте значение c + 1.Индексы строк и столбцов в Aspose.Cells начинаются с нуля. Ячейка C6 имеет индекс строки 5 и индекс столбца 2. Ошибки смещения на единицу в привязке нижнего правого угла — самая частая причина появления изображений, которые, как кажется, заходят на соседнюю ячейку.
picture.placement — это перечисление типа PlacementType, которое управляет поведением изображения при изменении пользователем размера строки или столбца под ним. Рекомендуемое значение для изображения в одной ячейке — PlacementType.MoveAndSize, при котором изображение перемещается и изменяет размер вместе со своей базовой ячейкой, сохраняя точное вписывание.
Workbook (или откройте существующий).Worksheet через workbook.worksheets[0].worksheet.pictures.add(5, 2, stream), чтобы добавить изображение, привязанное к ячейке C6. Сохраните возвращённую ссылку на Picture.upperLeftRow = 5, upperLeftColumn = 2, lowerRightRow = 6, lowerRightColumn = 3.picture.placement = PlacementType.MoveAndSize, чтобы изображение оставалось выровненным по C6 при изменении ширины столбца или высоты строки..xlsx.
Следующий код демонстрирует весь подход целиком.const AsposeCells = require("aspose.cells");
const fs = require("fs");
const workbook = new AsposeCells.Workbook();
const worksheet = workbook.getWorksheets().get(0);
const fs_stream = fs.createReadStream("logo.png");
const picIndex = worksheet.getPictures().add(5, 2, fs_stream);
const 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 также предоставляет более простой механизм для изображений, привязанных к ячейкам: свойство cell.embeddedImage. Присвоение этому свойству байтов изображения прикрепляет изображение к самой ячейке, как если бы оно было встроенным содержимым.
cell.embeddedImage — самый лаконичный вариант, когда цель — просто «изображение, которое живёт внутри этой ячейки».Workbook (или откройте существующий).Worksheet через workbook.worksheets[0].fs.readFileSync).worksheet.cells["C6"], либо через worksheet.cells[5, 2].embeddedImage ячейки..xlsx.
Следующий код демонстрирует весь подход целиком.var workbook = new AsposeCells.Workbook();
var worksheet = workbook.getWorksheets().get(0);
// Получить целевую ячейку C6
var cell = worksheet.getCells().get("C6");
// Прочитать файл изображения в массив байтов
var imageData = fs.readFileSync("logo.png");
// Встроить изображение непосредственно в ячейку
cell.setEmbeddedImage(imageData);
// При необходимости настроить высоту строки и ширину столбца, чтобы встроенное изображение было лучше видно
worksheet.getCells().setColumnWidth(2, 30); // Столбец C (индекс 2)
worksheet.getCells().setRowHeight(5, 100); // Строка 6 (индекс 5)
// Сохранить полученную книгу как файл .xlsx
workbook.save("output.xlsx", AsposeCells.SaveFormat.Xlsx);
Оба подхода дают изображение, которое помещается внутри одной ячейки, но различаются по способу хранения и поведению:
Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.