读取EXCEL数据到内表并输出

调用函数: ALSM_EXCEL_TO_INTERNAL_TABLE

*&---------------------------------------------------------------------*
*& Report  ZCMH0009

*&
*&---------------------------------------------------------------------*
*& 读取EXCEL 的数据 到内表
*&
*&---------------------------------------------------------------------*

REPORT ZCMH0009 .

INCLUDE OLE2INCL . "定义OLE变量


DATA : BEGIN OF IEXCEL OCCURS 0 .
INCLUDE STRUCTURE ALSMEX_TABLINE .
DATA : END OF IEXCEL .

DATA : XLS LIKE RLGRAP - FILENAME VALUE 'C:\sap_usr02.xls' .

CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'
EXPORTING
FILENAME = XLS
I_BEGIN_COL = 1
I_BEGIN_ROW = 1
I_END_COL = 100 " 读取多少列
I_END_ROW = 100 "读取多少行
TABLES
INTERN = IEXCEL
EXCEPTIONS
INCONSISTENT_PARAMETERS = 1
UPLOAD_OLE = 2
OTHERS = 3 .

"读取后内表保存的结构为:第一行记录第一个单元的行值 列值 单元格内容 比如 0001 0001 第一个单元格内容

WRITE : / .

IF sy - subrc <> 0 .

WRITE : / XLS , '读入错误!' .

ELSE .

LOOP AT IEXCEL .

WRITE IEXCEL - VALUE ( 20 ) . "取前20个字符

AT END OF ROW . "每行行尾输出空行
WRITE : / .
ENDAT .

ENDLOOP .

ENDIF .

ABAP 读取 Excel 文件可以使用多种方式实现,OLE是最常用的技术,但速度及兼容性较差;也可以使用DOI接口 读取 ,最新的技术则通过XML技术进行解析,采用最新的面向对象编程,容易理解,且兼容性较好。 SAP 提供了标准的 读取 EXCEL 的函数(ALSM_ EXCEL _TO_INTERNAL_TABLE),但是此标准函数无法满足对同一 EXCEL 进行不同SHEET的 数据 读取 ,一下方法就是教你如何通过修改程序来实现ALSM_ EXCEL _TO_INTERNAL_TABLE 读取 多个SHEET; 直接复制粘贴激活直接用-几乎可以实现任意扁平结构的 Excel 转到 内表 . 首先,需要你在SE11中创建一个和你 Excel 中的字段相同的结构,然后把这个结构名字以字符串的形式传给方法. 使用标准类 CL_FDT_XL_SPREADSHEET, 读取 xlsx格式文件流 数据 ,该类在note。2468709 – 标准类 CL_FDT_XL_SPREADSHEET 的使用 中说明不建议常规使用,可能有问题。使用 ABAP 2XLSX中的类zcl_ excel _reader_2007。适用于通过接口传输的exce文件 数据 读取 读取 数据 ,需要在系统中安装。