ABAP存取Excel相关技术的思考

ABAP存取Excel有OLE,DOI,XML好几种技术啊,试了好多次,发现前两者总是出很多bug,决心以后只用基于Open XML技术的API和函数了。
类CL_FDT_XL_SPREADSHEET基于XML技术实现,示例代码如下;当然,SAP官方是不推荐单独使用这个类的,只限制用于BRF+相关功能,但是目前俺没遇到大问题;
比较推荐技术是使用开源仓库ABAP2XLSX,GITHUB上可以找到,一直都有人更新和维护,写入功能也相当强大。

点击箭头查看ABAP FDT类读取本机Excel代码
DATA(lv_xlsx_data) = cl_openxml_helper=>load_local_file( excel_path ).
  DATA(lo_xlsx_ref) = NEW cl_fdt_xl_spreadsheet(
        document_name     = excel_path
        xdocument         = lv_xlsx_data ).
  lo_xlsx_ref->if_fdt_doc_spreadsheet~get_worksheet_names(
  IMPORTING
  worksheet_names = DATA(lt_worksheets) ).

  DATA:lr_sheet_data TYPE REF TO data.
  FIELD-SYMBOLS:<ft_sheet_data> TYPE INDEX TABLE.
  LOOP AT lt_worksheets REFERENCE INTO DATA(lr_worksheet).
    DATA(lv_sheet_index) = sy-tabix.
    lr_sheet_data = lo_xlsx_ref->if_fdt_doc_spreadsheet~get_itab_from_worksheet(
    worksheet_name = lr_worksheet->*
    ).
    IF  <ft_sheet_data> IS ASSIGNED.
      UNASSIGN <ft_sheet_data>.
    ENDIF.
    ASSIGN lr_sheet_data->* TO <ft_sheet_data>.
    EXIT.
  ENDLOOP.
posted @ 2023-12-19 16:16  长沙铁道学院-康帅傅  阅读(193)  评论(0)    收藏  举报