FavoriteLoading
0

Webdynpro中Excel文件上载功能完美实例-CL_FDT_XL_SPREADSHEET

[隐藏]

下面介绍一下如何在webdynpro中上载excel文件。
网上查了一下,大多数的帖子是用函数HR_KR_XSTRING_TO_STRING上载,但是经过测试,很遗憾这个函数并不能上载真正意义上扩展名为.xlsx的excel,xstring转换成string后是乱码,有人说这个FM只对CSV格式文件有效,懒得再去实验,因为发现SAP还提供了一个类CL_FDT_XL_SPREADSHEET,可以完美实现Excel OpenXML的上载。

Excel OpenXML就是它。。。

下面一步一步讲解一下。

1,创建Webdynpro组件

2,插入FILE_UPLOAD元素

在视图MAIN中插入一个file_upload标准元素,这个使用来指定上载文件路径的element,

创建完发现upload_file元素property中data的值红了,看来需要binding一下,这个data就是保存excel上载后字符串的,

为了binding,需要在view的context中创建属性(attribute),

首先创建一个节点(Node),目的是分门别类,方便管理。

然后在刚创建好的FILE节点下创建attribute,

输入属性名字File_data以及类型Xstring,

然后再创建一个属性file_name用来绑定excel文件路径的,调用CL_FDT_XL_SPREADSHEET时会用到。

属性创建完了,回到视图main中,在file_upload的property中,开始binding data,

然后再把fileName也绑了,结果如下:

3,插入按钮元素

在file_upload之后再插入一个button,这个按钮用来触发上载file_upload中指定的excel文件的代码,

输入button上显示的文本Upload,

4,onAction代码

点击onAction"创建"图标创建action,然后再进入到代码编辑中,

加入代码,上载excel,完整代码如下:

5,测试

创建webdynpro应用程序,

加一个断点,

运行webdynpro应用程序Ytest_upload

输入上载excel,然后点击upload按钮,

 

文件内容,

断点停下后,内表中的内容:

6,其他

如果在 CREATE OBJECT lo_excel时报错,可以先检查一下excel文件是否是openxml格式,方法入下:

将excel文件加上.zip后缀,然后用压缩工具打开,

在_rels文件夹中,打开.rels文件,

查看是否有下面的type,没有则不能使用类CL_FDT_XL_SPREADSHEET

有的office软件用的不是openxml会显示成下面这样,

type是以package开头的,而不是officeDocument

类中代码:

以上。