SAP ABAP EXCEL导出多个SHEET页签

ABAP导出数据到EXCEL指定页签 。

通过如下方法指定SHEET页签。

  CALL METHOD OF
      gv_book
      'Sheets' = gv_sheet
    EXPORTING
      #1       = 2." Sheet页签序号
*--设置excel可见
  CALL METHOD OF
      gv_excel
      'Worksheets' = gv_sheet
    EXPORTING
      #1           = 2.
  CALL METHOD OF
    gv_sheet
    'Activate'.

DATA: gv_excel   TYPE ole2_object,
      gv_sheet   TYPE ole2_object,
      gv_book    TYPE ole2_object,
      gv_rows    TYPE ole2_object,
      gv_range   TYPE ole2_object,       "range
      gv_borders TYPE ole2_object,      "borders
      gv_cell    TYPE ole2_object.


FORM frm_download_to_excel .
*选择文件。
  DATA: l_name     LIKE  wwwdatatab,
        l_mine     LIKE  w3mime OCCURS 10,
        l_title    TYPE  string,
        l_filename TYPE  string,
        l_path     TYPE  string,
        l_fullpath TYPE  string.

  l_name-relid    =   'MI'.
  l_name-objid    =   'ZPPR00060'.
  l_name-text     =   sy-title.
  l_title         = '员工批量报工.XLS'.     "另存为显示名称

  CALL FUNCTION 'WWWDATA_IMPORT'
    EXPORTING
      key               = l_name
    TABLES
      mime              = l_mine
    EXCEPTIONS
      wrong_object_type = 1
      import_error      = 2
      OTHERS            = 3.
  CALL METHOD cl_gui_frontend_services=>file_save_dialog
    EXPORTING
      window_title         = l_title
      default_extension    = 'xls'
      default_file_name    = l_title
      file_filter          = '*.xls,*.xlsx' "另存为显示的文件扩展名
    CHANGING
      filename             = l_filename
      path                 = l_path
      fullpath             = l_fullpath
    EXCEPTIONS
      cntl_error           = 1
      error_no_gui         = 2
      not_supported_by_gui = 3
      OTHERS               = 4.

  IF sy-subrc <> 0.
    STOP.
  ENDIF.

  IF l_filename = ''.
*    MESSAGE E000(ZP) WITH '操作取消'.
  ENDIF.
*模板下载
  CALL FUNCTION 'GUI_DOWNLOAD'
    EXPORTING
      filename = l_fullpath
      filetype = 'BIN'
    TABLES
      data_tab = l_mine.
*  PERFORM frm_progress_indicator USING TEXT-002.
*--打开excel模板
  PERFORM frm_open_excel USING l_fullpath.
*--向excel写入人员信息
  PERFORM frm_write_excel_person_sheet."向EXCEL中写入数据
*写入订单工序信息
  PERFORM frm_write_excel_aufnr_sheet."向EXCEL中写入数据
*设置单元格边框。
  PERFORM frm_range_borders.
  SET PROPERTY OF gv_excel 'Visible' = 1.
*保存数据并释放对象。
  PERFORM frm_save_excel USING l_fullpath.
ENDFORM.

FORM frm_open_excel USING pa_path.
*创建应用程序对象
  CREATE OBJECT gv_excel 'Excel.Application'.
*创建工作簿
  CALL METHOD OF
    gv_excel
      'Workbooks' = gv_book.
*打开指定路径的工作簿。
  CALL METHOD OF
      gv_book
      'Open' = gv_book
    EXPORTING
      #1     = pa_path.

**获取指定SHEET页
**  CALL METHOD OF
**      gv_book
**      'Sheets' = gv_sheet
**    EXPORTING
**      #1       = 1.
**--设置excel可见
*  CALL METHOD OF
*      gv_excel
*      'Worksheets' = gv_sheet
*    EXPORTING
*      #1           = 1.
*  CALL METHOD OF
*    gv_sheet
*    'Activate'.

ENDFORM. " FRM_OPEN_EXCEL


FORM frm_write_excel_person_sheet.
  DATA:lw_person_tab LIKE typ_person.
*获取人员信息SHEET页签
  DATA:l_num TYPE int4.
  CALL METHOD OF
      gv_book
      'Sheets' = gv_sheet
    EXPORTING
      #1       = 2.
*--设置excel可见
  CALL METHOD OF
      gv_excel
      'Worksheets' = gv_sheet
    EXPORTING
      #1           = 2.
  CALL METHOD OF
    gv_sheet
    'Activate'.

  l_num = 2.
  LOOP AT gt_person_tab INTO lw_person_tab.
*向EXCEL中写数据。
    PERFORM frm_write_cell USING l_num  1   lw_person_tab-pernr  .
    PERFORM frm_write_cell USING l_num  2   lw_person_tab-name  ."
    PERFORM frm_write_cell USING l_num  3   lw_person_tab-orang_desc .
    l_num = l_num + 1.
  ENDLOOP.
ENDFORM.

FORM frm_write_excel_aufnr_sheet .
  DATA:lw_person_tab LIKE typ_person.
  DATA:lw_aufnr_tab LIKE  typ_aufnr.
  DATA:lw_result_tab LIKE typ_aufnr.
*获取人员信息SHEET页签
  DATA:l_num TYPE int4.
  CALL METHOD OF
      gv_book
      'Sheets' = gv_sheet
    EXPORTING
      #1       = 3.
*--设置excel可见
  CALL METHOD OF
      gv_excel
      'Worksheets' = gv_sheet
    EXPORTING
      #1           = 3.
  CALL METHOD OF
    gv_sheet
    'Activate'.

  l_num = 2.
  LOOP AT gt_result_tab INTO lw_result_tab WHERE checkbox EQ 'X'.
    LOOP AT gt_aufnr_tab INTO lw_aufnr_tab WHERE aufnr EQ lw_result_tab-aufnr.
*    生产订单  开始日期  结束日期  订单数量  工序编号  工序描述
*向EXCEL中写数据。
      PERFORM frm_write_cell USING l_num  1   lw_aufnr_tab-aufnr  .
      PERFORM frm_write_cell USING l_num  2   lw_aufnr_tab-gstrp   ."
      PERFORM frm_write_cell USING l_num  3   lw_aufnr_tab-gltrp .
      PERFORM frm_write_cell USING l_num  4   lw_aufnr_tab-psmng .
      PERFORM frm_write_cell USING l_num  5   lw_aufnr_tab-charg .
      PERFORM frm_write_cell USING l_num  6   lw_aufnr_tab-vornr .
      PERFORM frm_write_cell USING l_num  7   lw_aufnr_tab-description .
      PERFORM frm_write_cell USING l_num  8   lw_aufnr_tab-matnr .
      PERFORM frm_write_cell USING l_num  9   lw_aufnr_tab-maktx .
      l_num =  l_num + 1.
    ENDLOOP.
  ENDLOOP.
ENDFORM.

FORM frm_save_excel USING pa_fullpath.
  SET PROPERTY OF gv_excel 'DisplayAlerts' = 0.
*  CALL METHOD OF
*    gv_book
*    'SAVE'
*    EXPORTING
*      #1 = pa_fullpath.
  CALL METHOD OF
    gv_book
    'SAVE'.
  CALL METHOD OF
    gv_book
      'Exit' = gv_book.
  CALL METHOD OF gv_book 'Close'
    EXPORTING
      #1 = 0.

*退出应用程序
  CALL METHOD OF gv_excel 'QUIT'.
*释放用到的对象
  FREE OBJECT gv_cell.
  FREE OBJECT gv_range.
  FREE OBJECT gv_borders.
  FREE OBJECT gv_rows. "not used
  FREE OBJECT gv_sheet.
  FREE OBJECT gv_book.
  FREE OBJECT gv_excel.
ENDFORM. " FRM_SAVE_EXCEL


FORM frm_write_cell USING pa_row
                               pa_col
                               pa_val.
  CALL METHOD OF
      gv_excel
      'Cells' = gv_cell
    EXPORTING
      #1      = pa_row
      #2      = pa_col.
  SET PROPERTY OF gv_cell 'Value' = pa_val.
ENDFORM. "FRM_WRITE_CELL

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值