对于比较复杂的格式的EXCEL,不方便自己用程序来写格式,此时可以用OLE将EXCEL模板传到系统当中去,
然后从系统中下载该模板后再填充需要的数据保存即可实现要想的EXCEL.
上传excel文件时首先需要维护MIME类型,否则不能上传,上传完之后可在表wwwdata看到数据行
T_CODE: SMW0
新增: excel *.xls
常见的MIME类型
超文本标记语言文本 .html text/html
xml文档 .xml text/xml
XHTML文档 .xhtml application/xhtml+xml
普通文本 .txt text/plain
RTF文本 .rtf application/rtf
PDF文档 .pdfapplication/pdf
MicrosoftWord文件 .word application/msword
PNG图像 .png image/png
GIF图形 .gif image/gif
JPEG图形 .jpeg,.jpg image/jpeg
au声音文件 .au audio/basic
MIDI音乐文件 mid,.midi audio/midi,audio/x-midi
RealAudio音乐文件 .ra, .ram audio/x-pn-realaudio
MPEG文件 .mpg,.mpeg video/mpeg
AVI文件 .avi video/x-msvideo
GZIP文件 .gzapplication/x-gzip
TAR文件 .tar application/x-tar
在smw0,选择二进制数据
选择包MI
创建对象,创建对象时,名称需要以Z开头
以下程序实现下载服务器上的模板文件到本地
DATA:rc TYPE i,
filetable TYPE TABLE OF file_table WITH HEADER LINE,
g_file TYPE rlgrap-filename,
gs_data LIKE wwwdatatab.
PARAMETERS:p_file TYPE string.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.
CALL METHOD cl_gui_frontend_services=>file_open_dialog
EXPORTING
default_filename = p_file
CHANGING
rc = rc
file_table = filetable[].
READ TABLE filetable INDEX 1.
IF sy-subrc EQ 0 .
p_file = filetable-filename.
ENDIF.
START-OF-SELECTION.
g_file = p_file.
SELECT SINGLE relid objid
FROM wwwdata
INTO CORRESPONDING FIELDS OF gs_data
WHERE srtf2 = 0
AND relid = 'MI'
AND objid = 'ZEXCEL'.
IF sy-subrc NE 0 OR gs_data-objid EQ space.
MESSAGE '模板不存在!' TYPE 'I'.
ENDIF.
CALL FUNCTION 'DOWNLOAD_WEB_OBJECT'
EXPORTING
key = gs_data
destination = g_file
IMPORTING
rc = rc.
IF rc NE 0.
MESSAGE '模板下载失败' TYPE 'E'.
ENDIF.
然后即可用OLE编程方式(见OLE示例)从服务器上下载下来的excel文件进行操作,实现EXCEL数据的导入。
EG:将第四行第五列填充为'TITLE'. 引号中的内容不区分大小写
CREATE OBJECT excel 'EXCEL.APPLICATION'.
SET PROPERTY OF excel 'Visible' = 1.
CALL METHOD OF excel 'WORKBOOkS' = workbook.
CALL METHOD OF workbook 'OPEN' = workbook "读取EXCEL对象到WORKBOOK
EXPORTING
#1 = g_file. "excel文件地址名
CALL METHOD OF workbook 'WORKSHEETS' = sheet"读取EXCEL中名为'1'的SHEET到对象SHEET
EXPORTING
#1 = '1'. "这个1是EXCEL中SHEET的名字
CALL METHOD of sheet 'Activate'. "激活当前SHEET.
CALL METHOD OF excel 'Cells' = cell "读取单元格
EXPORTING
#1 = 4 "第四行第五列
#2 = 5.
SET PROPERTY OF cell 'Value' = 'TITLE' .