相关类: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.
上一篇: ALV 菜单隐藏按钮...
下一篇: ABAP 汇率处理...