Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.
Камера Excel — это объект рабочего листа, который отображает живое изображение диапазона ячеек и располагается на слое рисунков как обычная картинка. Aspose.Cells поддерживает два режима создания: динамическое изображение, которое автоматически обновляется при каждом изменении исходных данных, и статическое изображение, представляющее собой однократный снимок диапазона. В этой статье рассматриваются оба подхода, чтобы вы могли выбрать тот, который подходит для вашего макета.
Камера Excel по сути представляет собой объект изображения, привязанный к определённой строке и столбцу на слое рисунков рабочего листа. В отличие от обычной вставленной картинки, камера связана с исходным диапазоном через формулу в стиле A1, например "A1:F10". При каждом изменении любой ячейки в этом диапазоне изображение камеры автоматически обновляется, отражая новое содержимое. Камера сохраняет полное форматирование исходной области — границы, цвета фона, шрифты и числовые форматы — так что всё, что видно внутри ячеек, отображается и на изображении камеры. Это делает камеру особенно полезной для информационных панелей, сводок, боковых панелей и макетов отчётов, где требуется видимый предварительный просмотр удалённой области без прокрутки или повторения данных. Следует учитывать два ограничения: необходимо вызвать update_selected_value() перед сохранением книги, и файл будет экспортирован в HTML или PDF, поскольку эти форматы полагаются на встроенные данные изображения, а не на динамический пересчёт.
Динамическая камера — наиболее распространённый подход и наиболее близкий аналог встроенного инструмента «Камера» в Excel. Он работает путём добавления картинки без начального содержимого изображения, а затем назначения ей formula, ссылающейся на исходный диапазон. После назначения формулы вызов update_selected_value() обновляет встроенные данные изображения, чтобы они были синхронизированы с отражаемыми ячейками. Камера не реализована через отдельный класс — она полностью построена на стандартном типе Picture.
Ключевые API:
PictureCollection.add(int upperLeftRow, int upperLeftColumn, Stream stream) — добавляет картинку, привязанную к указанной строке и столбцу. Передача None в параметр stream создаёт пустую картинку, выступающую в качестве заполнителя для динамической камеры. Метод возвращает индекс новой картинки.worksheet.pictures[index] — доступ по индексу для получения конкретного объекта Picture из коллекции.picture.formula — строковое свойство (get/set), содержащее ссылку в стиле A1 на исходный диапазон, который отражает камера, например "A1:F10".picture.update_selected_value() — метод без возвращаемого значения, который обновляет встроенные данные изображения на основе ячеек, на которые ссылается formula.update_selected_value() ДОЛЖЕН быть вызван перед сохранением, когда выходной формат — HTML или PDF; в противном случае экспортированный файл не будет содержать данные изображения, и камера отобразится пустой в итоговом выводе.
Следующий код создаёт книгу, добавляет пустую картинку, привязанную к строке 10 столбцу 6, связывает её с исходным диапазоном A1:F10 через свойство formula, обновляет встроенные данные изображения и сохраняет книгу.
from aspose.cells import Workbook, SaveFormat
workbook = Workbook()
worksheet = workbook.worksheets[0]
worksheet.name = "CameraDemo"
# Динамическая камера: добавить пустое изображение, связать его через формулу с A1:F10, затем обновить
pictures = worksheet.pictures
index = pictures.add(10, 6, None)
pictures[index].formula = "A1:F10"
pictures[index].update_selected_value()
workbook.save("output_dynamic.xlsx", SaveFormat.XLSX)
Статическая камера по сути представляет собой однократно отрисованный предварительный просмотр диапазона ячеек. Вместо поддержки динамической связи диапазон однократно отрисовывается в байты изображения, эти байты оборачиваются в BytesIO и добавляются как обычная картинка. Содержимое изображения фиксируется в момент создания и не обновляется автоматически при изменении исходных ячеек.
Ключевые API:
Cells.create_range(string address) — создаёт объект Range по адресу в стиле A1, например "A1:F10".Range.to_image(ImageOrPrintOptions options) — отрисовывает диапазон в байты изображения. Передача None использует параметры отрисовки по умолчанию; существуют перегрузки для более тонкого управления выводом.BytesIO(byte[] buffer) — оборачивает отрисованные байты изображения в BytesIO, который может быть передан в PictureCollection.add.PictureCollection.add(int upperLeftRow, int upperLeftColumn, Stream stream) — добавляет картинку, привязанную к указанной строке и столбцу; в этот раз передаётся BytesIO, полученный в результате отрисовки.
Следующий код создаёт книгу, формирует Range для A1:F10, отрисовывает его в байты изображения через Range.to_image(null), оборачивает байты в BytesIO, добавляет картинку, привязанную к строке 10 столбцу 6, и сохраняет книгу.from io import BytesIO
from aspose.cells import Workbook, SaveFormat
workbook = Workbook()
worksheet = workbook.worksheets[0]
worksheet.name = "CameraDemo"
# Статичная камера: создать диапазон, отрендерить в байты, обернуть в BytesIO, добавить как изображение
range_ = worksheet.cells.create_range("A1:F10")
pictures = worksheet.pictures
pictures.add(10, 6, BytesIO(range_.to_image(None)))
workbook.save("output_static.xlsx", SaveFormat.XLSX)
update_selected_value() и сохраняет поведение динамической связи на протяжении всего времени существования файла.picture.formula и update_selected_value(), так и статическую однократную камеру, построенную на Range.to_image и BytesIO. Выбирайте динамический подход, когда выходные данные должны оставаться синхронизированными с исходными ячейками, и статический подход, когда требуется лишь фиксированный визуальный снимок во время сборки.Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.