EXCEL数据导入到内表中的处理

    CALL FUNCTION 'ZALSM_EXCEL_TO_INTERNAL_TABLE'
      EXPORTING
        filename    = p_upload
        i_begin_col = 2
        i_begin_row = 7
        i_end_col   = 50
        i_end_row   = 3000
        sheet_name  = '财务视图'
      TABLES
        intern      = lt_tab[].

    LOOP AT lt_tab.
      CONDENSE lt_tab-value.
      ASSIGN COMPONENT lt_tab-col OF STRUCTURE gs_upload_fi TO <fs>.         "动态方法将值传到相应的内表
      IF <fs> IS ASSIGNED.
        MOVE lt_tab-value TO <fs>.
        UNASSIGN <fs>.
      ENDIF.
      AT END OF row.
        APPEND gs_upload_fi TO gt_upload_fi.
        CLEAR gs_upload_fi.
      ENDAT.
    ENDLOOP. 

有几个提醒的地方:

 一、首先我们要建一个与EXCEL列一模一样的结构,比如上面的gs_upload_fi.

二、上面我把标准的函数拷贝了一个自定义的出来,为的是能够读取多个SHEET页,这里面

     

 

  * open file in Excel
  if APPLICATION-HEADER = SPACE or APPLICATION-HANDLE = -1.
    create object APPLICATION 'Excel.Application'.
    M_MESSAGE.
  endif.
  call method of APPLICATION 'Workbooks' = WORKBOOK.
  M_MESSAGE.
  call method of WORKBOOK 'Open'
    exporting
      #1 = FILENAME.
  M_MESSAGE.

*->BEGIN OF ADD-ON BY EY_SGQ
**  set property of application 'Visible' = 1.
**  m_message.
  if SHEET_NAME = SPACE."用默认模式
    get property of  APPLICATION 'ACTIVESHEET' = WORKSHEET.
    M_MESSAGE.
  else.
*-->可以实现读取多个sheet
    call method of APPLICATION 'WORKSHEETS' = WORKSHEET
      exporting
        #1 = SHEET_NAME.

    call method of WORKSHEET 'Activate'.
    M_MESSAGE.
  endif.
*---END OF------------------------------------------------


* mark whole spread sheet
  call method of WORKSHEET 'Cells' = H_CELL
    exporting
      #1 = I_BEGIN_ROW
      #2 = I_BEGIN_COL.
  M_MESSAGE.
  call method of WORKSHEET 'Cells' = H_CELL1
    exporting
      #1 = I_END_ROW
      #2 = I_END_COL.
  M_MESSAGE.

注意在主程序里添加代码如上,BEGIN OF ADD ON 中间就是需要添加的代码

三、字段符号一定要UNASIGN,因为在AT END OF语句的影响下,会发生有的字符变成*****而无法写入的情况。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值