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