ole 下载excel - 海边星
【原创】 ole 下载excel
栏目:ABAP  作者:在海边看星星  阅读:(1290)

相关类:CL_GUI_FRONTEND_SERVICES


主代码

  DATA: BEGIN OF lt_line OCCURS 0,
          line(2200),
        END OF lt_line.
  DATA: excel         TYPE ole2_object,
        workbook      TYPE ole2_object,
        sheet         TYPE ole2_object,
        cell1         TYPE ole2_object,
        cell2         TYPE ole2_object,
        range         TYPE ole2_object,
        sheetname(30) TYPE c.
  DATA: l_row TYPE sy-tabix,
        l_col TYPE sy-tabix,
        l_rc  TYPE sy-tabix.
  CONSTANTS: l_sep TYPE c VALUE cl_abap_char_utilities=>horizontal_tab.
  FIELD-SYMBOLS: <fs_field> TYPE any.

  CREATE OBJECT excel 'EXCEL.APPLICATION'. "Create EXCEL OBJECT.
  IF sy-subrc NE 0.
    EXIT.
  ENDIF.

  SET PROPERTY OF excel 'Visible' = 0. "1/0 是否显示EXCEL

  CALL METHOD OF excel 'Workbooks' = workbook.

  CALL METHOD OF workbook 'Open'
    EXPORTING
      #1 = p_path. "打开上面下载路径下的excel文件

  CALL METHOD OF excel 'Sheets' = sheet
    EXPORTING
      #1 = 1.

  CALL METHOD OF sheet 'Select'.

  CALL METHOD OF sheet 'ACTIVATE'. "sheet 激活

*  SET PROPERTY OF sheet 'NAME' = sheetname. "设定sheet名称

  l_row = 3.
  l_col = 1.

  CALL METHOD OF sheet 'Cells' = cell1   "起始单元格
    EXPORTING
      #1 = l_row
      #2 = l_col.

  l_row = 2.
  CLEAR: lt_excel[],lt_excel,lt_line[],lt_line.
  LOOP AT gt_alv WHERE sel = 'X'.
    l_row += 1.

    MOVE-CORRESPONDING gt_alv TO lt_excel.

    DO 11 TIMES.
      ASSIGN COMPONENT sy-index OF STRUCTURE lt_excel TO <fs_field>.
      IF lt_line-line IS INITIAL.
        lt_line-line = <fs_field>.
      ELSE.
        lt_line-line = lt_line-line && l_sep && <fs_field>.
      ENDIF.
    ENDDO.

    APPEND lt_line.
    CLEAR lt_line.
  ENDLOOP.

  CALL METHOD cl_gui_frontend_services=>clipboard_export
    EXPORTING
      no_auth_check = 'X'
    IMPORTING
      data                 = lt_line[]
    CHANGING
      rc                   = l_rc
    EXCEPTIONS
      cntl_error           = 1
      error_no_gui         = 2
      not_supported_by_gui = 3
      no_authority         = 4
      OTHERS               = 5.

  CALL METHOD OF cell1 'Select'. "选中区域
  CALL METHOD OF sheet 'Paste'.   "粘贴


  "设置EXCEL中所插入的数据行边框线格式为黑色有边框
*  PERFORM borderrange USING excel bod.

  "保存excel数据
  GET PROPERTY OF excel 'ActiveSheet' = sheet. "激活工作簿
  GET PROPERTY OF excel 'ActiveWorkbook' = workbook. "激活工作区
  CALL METHOD OF workbook 'SAVE'.
  CALL METHOD OF workbook 'CLOSE'.  "关闭工作区
  CALL METHOD OF excel 'QUIT'.      "退出excel

  FREE OBJECT sheet.
  FREE OBJECT workbook.
  FREE OBJECT excel.


向excel中的指定行插入N行

FORM excel_row_insert  USING    po_sheet
                                p_row
                                p_line.
  DATA: lo_range   TYPE ole2_object,
        lo_borders TYPE ole2_object.

  DO p_line TIMES.

    CALL METHOD OF po_sheet 'Rows' = lo_range
      EXPORTING
        #1 = 6.

    CALL METHOD OF lo_range 'Copy'.
    "copy第6行插入一个新行
    CALL METHOD OF po_sheet 'Rows' = lo_range
      EXPORTING
        #1 = p_row.

    CALL METHOD OF lo_range 'Insert'.
    CALL METHOD OF lo_range 'ClearContents'. "是否需要清空Cell ENDDO.

  ENDDO.
ENDFORM.


向单个单元格填入内容

FORM fill_range  USING    excel
                          p_row
                          p_col
                          p_value.
  DATA: cell  TYPE ole2_object,
        l_row TYPE i,
        l_col TYPE i.

  l_row = p_row.
  l_col = p_col.

  CALL METHOD OF excel 'CELLS' = cell
    EXPORTING
      #1 = l_row
      #2 = l_col.

  SET PROPERTY OF cell 'VALUE' = p_value.
ENDFORM.


设置EXCEL中所插入的数据行边框线格式

FORM borderrange  USING    po_excel
                           p_range.
  DATA: lo_cell    TYPE ole2_object,
        lo_borders TYPE ole2_object.

  CALL METHOD OF po_excel 'RANGE' = lo_cell
    EXPORTING
      #1 = p_range.

  DO 4 TIMES .

    CALL METHOD OF lo_cell 'BORDERS' = lo_borders
      EXPORTING #1 = sy-index.

    SET PROPERTY OF lo_borders 'LineStyle' = '1'.

    SET PROPERTY OF lo_borders 'WEIGHT' = 2. "4=max

    SET PROPERTY OF lo_borders 'ColorIndex' = '1'.

  ENDDO.

  FREE OBJECT lo_borders.

  FREE OBJECT lo_cell.
ENDFORM.




我的评论
昵称
邮箱
域名
  记住 通知博主
验证码

  联系我们

微信扫一扫

 登录  打赏

  随机文章