ABAP EXCEL 转 PDF , EXCEL OLE2

DATA: application TYPE ole2_object,
workbook TYPE ole2_object,
sheet TYPE ole2_object.
IF iv_pdf IS NOT INITIAL.
CREATE OBJECT application ‘EXCEL.APPLICATION’.
CALL METHOD OF application ‘WORKBOOKS’ = workbook.
CALL METHOD OF workbook ‘OPEN’
EXPORTING
#1 = output_path_xlsx.
CALL METHOD OF application ‘WORKSHEETS’ = sheet
EXPORTING
#1 = 1. "Sheet1
CALL METHOD OF sheet ‘ACTIVATE’.

  output_path_pdf = output_path_xlsx.
  REPLACE '.xlsx' WITH '.pdf' INTO output_path_pdf.
  REPLACE '.XLSX' WITH '.pdf' INTO output_path_pdf.
  CALL METHOD OF sheet 'ExportAsFixedFormat'
    EXPORTING
      #1 = 0
      #2 = output_path_pdf.


  CALL METHOD OF workbook 'CLOSE'.
  CALL METHOD OF application 'QUIT'.
  FREE OBJECT: application,workbook,sheet.

  CALL METHOD cl_gui_frontend_services=>file_exist
    EXPORTING
      file                 = output_path_pdf
    RECEIVING
      result               = DATA(l_res)
    EXCEPTIONS
      cntl_error           = 1
      error_no_gui         = 2
      wrong_parameter      = 3
      not_supported_by_gui = 4
      OTHERS               = 5.
  IF sy-subrc <> 0 OR l_res = space.
    MESSAGE |PDF另存失败| TYPE 'E'.
  ELSE.
    MESSAGE |PDF另存为{ output_path_pdf }| TYPE 'S'.
  ENDIF.


  CALL METHOD cl_gui_frontend_services=>file_delete
    EXPORTING
      filename             = output_path_xlsx
    CHANGING
      rc                   = l_dummy_rc
    EXCEPTIONS
      file_delete_failed   = 1
      cntl_error           = 2
      error_no_gui         = 3
      file_not_found       = 4
      access_denied        = 5
      unknown_error        = 6
      not_supported_by_gui = 7
      wrong_parameter      = 8
      OTHERS               = 9.
  IF sy-subrc <> 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
          WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  ENDIF.
ENDIF.

ENDMETHOD.

合并ALV 单元格
**PERFORM FRM_MERGED USING ZP2 11 LV 11. **

FORM FRM_MERGED USING X1 Y1 X2 Y2.
DATA:GS_CELLS TYPE OLE2_OBJECT,
GS_CELL1 TYPE OLE2_OBJECT,
GS_CELL2 TYPE OLE2_OBJECT,
GS_CELL3 TYPE OLE2_OBJECT.
*–SELECTING CELL AREA TO BE MERGED.
CALL METHOD OF EXCEL ‘CELLS’ = GS_CELL1
EXPORTING
#1 = X1
#2 = Y1.
CALL METHOD OF EXCEL ‘CELLS’ = GS_CELL2
EXPORTING
#1 = X2
#2 = Y2.

  • CALL METHOD OF EXCEL ‘CELLS’ = GS_CELL3
  • EXPORTING
  •  #1 = X3
    
  •  #2 = Y3.
    

**ZQJ 20200327DEL
CALL METHOD OF EXCEL ‘RANGE’ = GS_CELLS
EXPORTING
#1 = GS_CELL1
#2 = GS_CELL2.

  •  #3 = GS_CELL3.
    

**ZQJ 20200327DEL
CALL METHOD OF GS_CELLS ‘SELECT’.
*–MERGING
CALL METHOD OF GS_CELLS ‘MERGE’ .
ENDFORM.

** EXCEL INSERT 行 **
FORM FRM_ROW_INSERT USING I_SHEET I_INDEX I_COPIEDROW.
DATA: L_ROW TYPE OLE2_OBJECT. "row object

  • get template row 9
    CALL METHOD OF I_SHEET ‘Rows’ = L_ROW EXPORTING #1 = I_COPIEDROW.
  • copy row 9
    CALL METHOD OF L_ROW ‘Copy’.
  • create new row refer to row 9
    CALL METHOD OF I_SHEET ‘Rows’ = L_ROW EXPORTING #1 = I_INDEX.
  • insert new row
    CALL METHOD OF L_ROW ‘Insert’.
  • clear new row contents
    CALL METHOD OF L_ROW ‘ClearContents’.
    ENDFORM.
  • 8
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ABAP中处理Excel文件的常见方式有三种:OLE、DOI和直接操作Excel文件。其中,OLE和DOI使用方便,但是不能脱离GUI使用;直接操作Excel文件方式适用性更强,常用在Web端接口或者邮件发送。其中,ABAP2XLSX是直接操作Excel文件的一种代表性方式。\[2\] 在ABAP中,可以使用CREATE OBJECT语句创建Excel对象,并通过调用相应的方法和设置属性来实现对Excel文件的操作。例如,可以使用CREATE OBJECT excel_obj 'excel.APPLICATION'创建Excel对象,然后调用相应的方法和设置属性来打开Excel文件、添加数据等操作。\[1\] 在处理Excel文件时,可以使用FILL_CELL方法来填充单元格。该方法接受行号、列号、是否加粗、填充值等参数,并通过调用相应的方法和设置属性来实现填充操作。\[3\] 总之,ABAP中可以使用不同的方式来处理Excel文件,具体选择哪种方式取决于项目需求和使用场景。 #### 引用[.reference_title] - *1* *3* [三步搞定ABAP DOI操作EXCEL](https://blog.csdn.net/RichardYang2020/article/details/108317625)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [ABAP Excel处理-内表导出为Excel文件](https://blog.csdn.net/xiefireworks/article/details/124742464)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值