Вставка изображения в документ Excel

22 0

Предисловие

Данный материал является продолжением статьи Вставка изображения в документ Word. В связи с некоторыми особенностями данной разработки хотелось бы начать с описания самых крупных трудностей, повлиявших на конечный результат.

Расположение изображения относительно листа

Сложность заключается в том, что четких границ страницы в документе Excel не существует. Если мы не задаем область печати, то она будет определяться по содержимому. Если количество используемых ячеек настолько велико, что не умещается на странице выбранного формата, то количество страниц автоматически увеличивается или, если документ настроен иначе, то лист начинает менять масштаб. В такой ситуации координаты для размещения изображения не помогут нам в точном определении его положения на странице, а такие свойства страницы как левая граница и верхняя граница (left, top) отсутствуют в принципе.

Если указать область печати, то работать со страницей становится проще. Однако же, если область печати не совпадает по пропорциям с выбранным форматом страницы, то изображение, помещенное в нижний правый угол области печати, может оказаться, например, посередине самой страницы.

Работа с подложками

В документе Word подложкой фактически является содержимое колонтитула. Расположить изображение или WordArt в колонтитуле по координатам было также легко, как и на основном листе. В документе Excel колонтитулы совсем другие. Вставить графический объект в колонтитул можно только с помощью действий, которые можно найти на вкладке «Конструктор» панели инструментов, что затрудняет дальнейшее программное форматирование изображения.

Так как на панели инструментов «Конструктор» нет возможности вставить объект WordArt, то в разработке данной возможности также не будет.

В документе Excel есть шесть слотов для заполнения колонтитула, что не позволяет расположить вставляемое изображение в центре документа. Вследствие чего приходилось «двигать» изображение из верхнего колонтитула с помощью вставок новых строк. Потому, в документах с разным форматом, центр может сместиться.

Справочник

Будем использовать справочник, описанный в материале Вставка изображения в документ Word.

Список изменений справочника:

  • добавился новый реквизит-признак «Тип документа», который может принимать значения «Word» и «Excel». При выборе одного из значений мы открываем одни настройки и закрываем другие, в соответствии с возможностями документа. А так же определяем тип документа, для которого будет проводиться вставка графического объекта;
  • добавился новый реквизит-признак «Общая подложка», который может принимать значения «Да» и «Нет». Пока что доступен только для документов типа «Excel». Если указать значение «Да», то вставляемое изображение отобразится на всех страницах документа. Если указать «Нет», то изображение добавится только для первой страницы.

Представление «Picture»

Почти весь имеющийся функционал карточки доступен при вставке изображения в документ Excel. Исключениями являются:

  • тип обтекания текстом;
  • сторона обтекания текстом.

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

  • способ расположения (Единственный доступный способ, это выравнивание);
  • поворот в градусах;
  • ширина и высота (Размер автоматически становится фиксированным);
  • тип обтекания текстом;
  • сторона обтекания текстом.

Примеры использования:

Представление «WordArt»

Как уже говорилось, вставлять объект «WordArt» в подложку в документе «Excel» невозможно. Поэтому нам доступна только обычная вставка. Но и в обычном режиме есть свои ограничения.

Недоступен для изменения реквизит «Размерность текста». Данный реквизит использовался в документах типа «Word» для того, чтобы определить, как мы будем задавать размер текста. Размером его контейнера, или шрифтом? В Excel, при программной вставке объекта «WordArt», даже если мы зададим гигантский размер контейнера, но не зададим шрифт, то текста мы так и не увидим. Поэтому доступен только шрифт.

Примеры использования:

Функции

Функция «DIO_InsertGraphicObjectToExcelDocument» работает аналогично функции «DIO_InsertGraphicObjectToWordDocument». Чтобы функции и справочник нормально работали, должны быть заполнены константы «DIO_WordDocumentExample» и «DIO_ExcelDocumentExample». В этих константах  хранятся ИД документов Word и Excel соответственно. Эти документы могут иметь любой формат, но лучше оформить их так, чтобы при нажатии кнопки «Предпросмотр» справочника «Графические объекты для вставки в документ» можно было бы наглядно увидеть результат вставки.

Итог

Существует определенный баг при работе с файлами, имеющих расширение «xlsx», если на клиентской машине установлен 2013 офис. При вставке графического объекта, сбрасываются настроенные области печати, вследствие чего графический объект некорректно располагается при выравнивании по границам документа. При наличии такого бага лучше использовать отступ в сантиметрах.

Разработка выполнена в системе DIRECTUM 5.0.

В состав разработки входят:

  • константы;
  • словари локализации;
  • справочник;
  • функции.

Полная разработка, позволяющая вставлять графические объекты в документы Word и Excel:

DIO_InsertObject.zip (68,35 Кб)

Пока комментариев нет.

Авторизуйтесь, чтобы написать комментарий