ABAP读取Excel方法大全

前言

ABAP读取Excel文件可以使用多种方式实现,OLE是最常用的技术,但速度及兼容性较差;也可以使用DOI接口读取,最新的技术则通过XML技术进行解析,采用最新的面向对象编程,容易理解,且兼容性较好。

方法

标准函数

函数名 说明
TEXT_CONVERT_XLS_TO_SAP 基于OLE,需要内表结构与Exce列顺序一致
ALSM_EXCEL_TO_INTERNAL_TABL 基于OLE,按单元读取出来,最长只支持50个字符
UPLOAD_XLS_FILE_2_ITAB (尚未验证,谨慎使用)基于DOI,需要内表结构与Exce列顺序一致

标准方法改造
通过改造标准函数ALSM_EXCEL_TO_INTERNAL_TABL,实现读取更大长度的内容,以及读取指定索引或名称的多个sheet,源代码如下,粘贴至SE24或即可全局使用
结构定义
在这里插入图片描述ABAP代码

class ZCL_MDG_IF_TOOLS definition
  public
  final
  create public .

public section.
  type-pools OLE2 .

  types:
  types TY_D_ITABVALUE type ZSMDG_ALSMEX_TABLINE-VALUE .
  types TY_ITAB type ZSMDG_ALSMEX_TABLINE .
  types:
    ty_t_itab type table of zsmdg_alsmex_tabline .
  types:
    begin of ty_s_senderline,
        line(4096) type c,
      end of ty_s_senderline .
  types TY_SENDER type TY_S_SENDERLINE .
  types:
    ty_t_sender type table of ty_s_senderline .
  constants GC_ESC type C value '"' ##NO_TEXT.

  class-methods READ_EXCEL_MULTIPLE_SHEETS
    importing
      !FILENAME type RLGRAP-FILENAME
      !I_BEGIN_COL type I default 1
      !I_BEGIN_ROW type I default 2
      !I_END_COL type I default 99
      !I_END_ROW type I default 100000
      !SHEET_INDEX type I optional
      !SHEET_NAME type ALSMEX_TABLINE-VALUE optional
    exporting
      !INTERN type ZMDG_ALSMEX_TABLINE_T
    exceptions
      INCONSISTENT_PARAMETERS
      UPLOAD_OLE .
 
  protected section.

    class-methods line_to_cell_esc_sep
      changing
        !i_string       type any
        !i_sic_int      type i
        !i_separator    type c
        !i_intern_value type ty_d_itabvalue .
    class-methods line_to_cell_separat
      changing
        !i_line      type any
        !i_row       type sy-tabix
        !ch_cell_col type kcd_ex_col
        !i_separator type c
        !i_fdpos     type sy-fdpos
        !i_intern    type ty_t_itab .

    class-methods separated_to_intern_convert
      changing
        !i_tab       type ty_t_sender
        !i_separator type c
        !i_intern    type ty_t_itab .
  private section.

ENDCLASS.



CLASS ZCL_MDG_IF_TOOLS IMPLEMENTATION.
* <SIGNATURE>---------------------------------------------------------------------------------------+
* | Static Protected Method ZCL_MDG_IF_TOOLS=>LINE_TO_CELL_ESC_SEP
* +-------------------------------------------------------------------------------------------------+
* | [<-->] I_STRING                       TYPE        ANY
* | [<-->] I_SIC_INT                      TYPE        I
* | [<-->] I_SEPARATOR                    TYPE        C
* | [<-->] I_INTERN_VALUE                 TYPE        TY_D_ITABVALUE
* +--------------------------------------------------------------------------------------</SIGNATURE>
  method line_to_cell_esc_sep.
    data: l_int         type i,
          l_cell_end(2).
    field-symbols: <l_cell> type any.
    l_cell_end = gc_esc
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值