代替Excel上载的方法
来源:互联网 发布:淘宝买的酒是真的吗 编辑:程序博客网 时间:2024/06/03 23:47
不要使用Excel文件做上传!
*----------------------------------------------------------------------*
* 剪贴板数据到内表,根据制表符分割
* 如果有数据类型错误,比如内表是数值型但是剪贴板里面是字母,
* 则弹出W消息,并忽略这条数据
*----------------------------------------------------------------------*
FORM cliptoitab TABLES itab.
DATA: htab TYPE cVALUE cl_abap_char_utilities=>horizontal_tab .
DATA: lt_clip TYPETABLE OF char2048 WITH HEADER LINE ,
lt_fld TYPE TABLE OF char2048 WITH HEADER LINE.
DATA: cxroot TYPE REFTO cx_root,
excmsgTYPE string.
FIELD-SYMBOLS:<fs_fld> ,
<fs_tab> .
ASSIGN itab TO<fs_tab> .
CALL METHODcl_gui_frontend_services=>clipboard_import
IMPORTING
data = lt_clip[]
EXCEPTIONS
cntl_error = 1
error_no_gui = 2
not_supported_by_gui = 3
OTHERS = 4.
IF sy-subrc <>0.
MESSAGE ID sy-msgidTYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1sy-msgv2 sy-msgv3 sy-msgv4 .
ELSE.
CALL METHODcl_gui_cfw=>flush .
LOOP AT lt_clip.
CLEAR lt_fld[].
SPLIT lt_clip AThtab INTO TABLE lt_fld.
LOOP AT lt_fld.
ASSIGNCOMPONENT sy-tabix OF STRUCTURE <fs_tab> TO <fs_fld>.
CHECK sy-subrc= 0.
TRY .
lt_fld =translate( val = lt_fld from = |\r| to = '' ).
lt_fld =translate( val = lt_fld from = |\n| to = '' ).
lt_fld =translate( val = lt_fld from = |"| to = '' ).
<fs_fld> = lt_fld.
CATCH cx_root INTO cxroot.
excmsg =cxroot->get_text( ).
ENDTRY.
ENDLOOP.
APPEND itab .
CLEAR itab.
ENDLOOP.
IF excmsg IS NOTINITIAL.
MESSAGE w000(oo)WITH '数据转换有错误发生,已经忽略'.
ENDIF.
ENDIF.
ENDFORM.
使用:
先在Excel,或者WORD表格,或者文本文件复制数据。总之只要保证数据是Tab分隔符就可以了。
然后在在程序执行PERFORM cliptoitab.就可以了。
- 代替Excel上载的方法
- ALSM_EXCEL_TO_INTERNAL_TABLE上载Excel文件的一个函数
- 榔头的代替方法
- 代替iframe的方法
- 使用ASP实现文件上载(上传)的各种方法
- 在浏览器里直接查看office ppt word excel的一个代替方法
- 文件上载的表单
- 代替游标循环的方法
- js代替Trim()的方法
- setbackgrounddrawable过时的代替方法
- Js 代替eval的方法
- jsp实现文件的上载
- Qt中在QLabel上载入图片后在上面画矩形框的方法
- 用 WebClient.UploadData 方法 上载文件数据
- 用 WebClient.UploadData 方法 上载文件数据
- 用 WebClient.UploadData 方法 上载文件数据
- 用WebClient.UploadData 方法 上载文件数据
- 空间数据库之矢量数据上载方法
- jquery 源码学习
- apt-get remove 用法详解
- 神经网络
- IAR Warning[Pe223]: function 'assert_param' declared implicitly 解决方法
- mybatis配置文件中小于大于号的处理
- 代替Excel上载的方法
- 轮播图jq
- SQL Server 扩展属性
- ==与equal区别
- 设计模式之--简单工厂模式
- 设计模式的应用场景(10)--桥模式
- github上传步骤
- getDimension,getDimensionPixelOffset和getDimensionPixelSize区别
- Python、R、Java、 C++ 等:从业界反馈看机器学习语言趋势