Posted: Thu Feb 26, 2009 11:58 am Post subject: Динамическая вставка картинки в excel
Здравствуйте!
Поставили такую задачу:
В выходную форму Excel динамически вставлять подпись отвественного лица в виде картинки. Причем отвественный может меняться, поэтому нужно иметь возможность загружать картинку с подписью в хранилище картинок прямо в продуктиве.
Поэтому возник ряд вопросов:
- На чем организовать хранилище картинок? Хотелось бы использовать SAP Web Repositary (smw0), но он не дает сохранять только в DEV, но не в PROD
- Как динамически вставить картинку в EXCEL?
Age: 180 Joined: 04 Oct 2007 Posts: 1218 Location: Санкт-Петербург
Posted: Thu Feb 26, 2009 4:38 pm Post subject:
Могу предложить другой способ.
- Закачивать картинку как файл FM GUI_UPLOAD во внутреннюю таблицу и сохранять в бинарном виде в пользовательской таблице в DB.
- Перед использованием скачивать из базы и сохранять на компьютер клиента FM GUI_DOWNLOAD под уникальным именем.
В шаблон экселя вставить картинку. Через OLE получить объект картинки и вставить из локального файла.
Код примерный:
Code:
CALL METHOD OF m_worksheet 'Pictures' = m_pictures.
*Add new Picture
CALL METHOD OF m_pictures 'Insert' = m_picture
EXPORTING #1 = 'C:\Temp\my_pict.bmp'.
IF NOT m_picture IS INITIAL.
*Set name of picture
SEPARATED BY c_underline.
SET PROPERTY OF m_picture:
'Name' = 'Signature',
'Placement' = xlmoveandsize.
ENDIF.
Age: 180 Joined: 04 Oct 2007 Posts: 1218 Location: Санкт-Петербург
Posted: Fri Feb 27, 2009 11:56 am Post subject:
В шаблоне экселя выделяете несколько ячеек, в позиции которых хотите вставить картинку и именуете их 'PICTURE'. Далее позиционируете созданную картинку в нужные размеры кодом:
Code:
TYPES: BEGIN OF ty_range,
name TYPE soi_range_item-name,
object TYPE ole2_object,
top TYPE i,
left TYPE i,
height TYPE i,
width TYPE i,
row TYPE i,
column TYPE i,
rows_count TYPE i.
TYPES: END OF ty_range.
DATA: ls_picture TYPE ty_range.
DATA: l_rows TYPE ole2_object.
DATA: l_border TYPE ole2_object.
GET PROPERTY OF ls_picture-object:
'Top' = ls_picture-top no flush,
'Left' = ls_picture-left no flush,
'Height' = ls_picture-height no flush,
'Width' = ls_picture-width no flush,
'Row' = ls_picture-row no flush,
'Column' = ls_picture-column no flush.
CALL METHOD OF ls_picture-object 'Rows' = l_rows.
IF NOT l_rows IS INITIAL.
GET PROPERTY OF l_rows 'Count' = ls_picture-rows_count.
ENDIF.
* format picture
IF NOT m_picture IS INITIAL.
ADD 1 TO ls_picture-top.
SET PROPERTY OF m_picture:
'Top' = ls_picture-top no flush,
'Left' = ls_picture-left no flush,
'Width' = ls_picture-width no flush,
'Height' = ls_picture-height no flush.
*set border style
GET PROPERTY OF m_picture 'Border' = l_border.
IF NOT l_border IS INITIAL.
SET PROPERTY OF l_border 'LineStyle' = xlcontinuous.
ENDIF.
ENDIF.
ENDIF.
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum You cannot attach files in this forum You can download files in this forum
All product names are trademarks of their respective companies. SAPNET.RU websites are in no way affiliated with SAP AG. SAP, SAP R/3, R/3 software, mySAP, ABAP, BAPI, xApps, SAP NetWeaver and any other are registered trademarks of SAP AG. Every effort is made to ensure content integrity. Use information on this site at your own risk.