第一篇:OLE對(duì)EXCEL操作總結(jié)
方法用例
*&-------* *& 本程序總結(jié)了常用的ABAP對(duì)EXCEL的操作,包括如下子例程 *& 方法名 方法說明 *&(1)create_excel 創(chuàng)建excel *&(2)insert_row 插入行 *&(3)fill_cell 填充單元格 *&(4)columnwidth 調(diào)整列寬 *&(5)create_sheet 創(chuàng)建sheet *&(6)copy_sheet_all sheet復(fù)制 *&(7)copy_sheet_area sheet區(qū)域復(fù)制 *&(8)copy_cells 復(fù)制單元格
*&(9)range_borders 邊框粗細(xì) *&(10)row_color 行顏色 *&(11)preview_excel 預(yù)覽 *&(12)free_object 釋放對(duì)象 *&(13)close_excel 關(guān)閉excel *&(14)download_excel_fromserver 從服務(wù)器下載excel模板(進(jìn)入模板事務(wù)代碼SMW0)
*&(15)open_excel_hide 隱蔽打開excel *&(16)open_excel 打開excel *&(17)open_excel_sheet 打開指定的excel的sheet *&(18)open_excel_by_sheet 打開sheet *&(19)select_range 選擇范圍 *&(20)clear_data 清除數(shù)據(jù) *&(21)merge_cells 合并單元格 *&(22)process_indcator 進(jìn)度指示 *&(23)delete_row 刪除行 *&(24)add_comment 添加注釋 *&(25)hide_columns 隱藏列 *&(26)delete_columns 刪除列 *&(27)hide_row 隱藏行 * 保護(hù)工作區(qū) lock_unlock_excel :未完成 * 保護(hù)整個(gè)工作表 lock_sheet : 未完成
*& 本示例程序作為ABAP對(duì)EXCEL操作的參考,可以根據(jù)需要做適當(dāng)?shù)恼{(diào)整 *&-------* REPORT zdealexcel.TYPE-POOLS ole2.TABLES sscrfields.DEFINE m_message.case sy-subrc.when '0'.when others.message e000(zmeg)with sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.endcase.END-OF-DEFINITION.DATA: application TYPE ole2_object, “excel object workbook TYPE ole2_object, ”excel workbook objcet sheet TYPE ole2_object, “workbook sheet object columns TYPE ole2_object, ”sheet col objcet rows TYPE ole2_object, “sheet row objcet range TYPE ole2_object, ”range range1 TYPE ole2_object, “range1 font TYPE ole2_object, ”font cell TYPE ole2_object, “cell cell1 TYPE ole2_object, ”cell1 sheet1 TYPE ole2_object, “workbook sheet object borders TYPE ole2_object.”borders
DATA: index TYPE i VALUE 0.*定義模板下載到本地保存的全名稱
DATA: p_down_file LIKE sapb-sappfad.“定義模板下載到本地保存的全名稱
*演示excel操作
SELECTION-SCREEN BEGIN OF LINE.SELECTION-SCREEN: PUSHBUTTON 01(12)but0 USER-COMMAND cli0, PUSHBUTTON 20(15)but2 USER-COMMAND cli2.SELECTION-SCREEN END OF LINE.*導(dǎo)入數(shù)據(jù)塊
SELECTION-SCREEN BEGIN OF BLOCK status2 WITH FRAME TITLE text-f02.SELECTION-SCREEN BEGIN OF LINE.SELECTION-SCREEN COMMENT 1(20)text-002.PARAMETERS: p_file LIKE rlgrap-filename.SELECTION-SCREEN END OF LINE.SELECTION-SCREEN END OF BLOCK status2.*導(dǎo)出數(shù)據(jù)塊
SELECTION-SCREEN BEGIN OF BLOCK status3 WITH FRAME TITLE text-f03.SELECTION-SCREEN BEGIN OF LINE.SELECTION-SCREEN COMMENT 1(20)text-003.PARAMETERS: p_down LIKE rlgrap-filename.SELECTION-SCREEN: PUSHBUTTON 75(20)but1 USER-COMMAND cli1.SELECTION-SCREEN END OF LINE.SELECTION-SCREEN END OF BLOCK status3.INITIALIZATION.CREATE OBJECT application 'excel.APPLICATION'.but0 = '演示excel操作'.”初始化導(dǎo)出button顯示名稱 but1 = '導(dǎo)出'.“初始化導(dǎo)出button顯示名稱 but2 = '從模板導(dǎo)出excel'.”從模板導(dǎo)出excel
*-------------------------設(shè)置文件上載-------------------------AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.CALL FUNCTION 'WS_FILENAME_GET' EXPORTING def_path = p_file mask = ',*.*.' mode = 'O' title = text-f01 IMPORTING filename = p_file EXCEPTIONS inv_winsys = 1 no_batch = 2 selection_cancel = 3 selection_error = 4 OTHERS = 5.CHECK sy-subrc = 0 AND NOT p_file IS INITIAL.*-------------------------設(shè)置文件下載-------------------------AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_down.CALL FUNCTION 'WS_FILENAME_GET' EXPORTING def_path = p_down mask = ',*.xls,*.xls.' mode = 'S' title = text-f02 IMPORTING filename = p_down EXCEPTIONS inv_winsys = 1 no_batch = 2 selection_cancel = 3 selection_error = 4 OTHERS = 5.CHECK sy-subrc = 0 AND NOT p_down IS INITIAL.* AT SELECTION-SCREEN.IF sscrfields-ucomm EQ 'CLI1'.IF p_down IS INITIAL.MESSAGE e804(zdev).ELSE.p_down_file = p_down.PERFORM download_excel_fromserver USING 'ZHRI0004' p_down_file.“下載模板到本地
MESSAGE i600(zdev)WITH '模板導(dǎo)出成功'.ENDIF.ELSEIF sscrfields-ucomm EQ 'ONLI'.IF p_file IS INITIAL.MESSAGE e803(zdev).ENDIF.ELSEIF sscrfields-ucomm EQ 'CLI0'.PERFORM demo_forms.ELSEIF sscrfields-ucomm EQ 'CLI2'.PERFORM demo_forms_server USING p_file.ENDIF.START-OF-SELECTION.PERFORM open_excel_hide USING p_file.PERFORM close_excel.PERFORM open_excel USING p_file.PERFORM close_excel.PERFORM open_excel_sheet USING 'sheet2' p_file.DO 10 TIMES.PERFORM insert_row USING 1.PERFORM fill_cell USING 1 1 0 'e'.PERFORM fill_cell USING 1 2 0 'f'.PERFORM fill_cell USING 1 3 0 'g'.index = index + 1.ENDDO.PERFORM close_excel.PERFORM free_object.*&-------* *& Form demo_forms_server *&-------* * 從SMW0下載excel模板
*--------* *-->P_FILE excel本地路徑
*--------* FORM demo_forms_server USING p_file.p_down_file = p_file.PERFORM process_indcator USING '程序正在下載模板' 0.PERFORM download_excel_fromserver USING 'ZHRI0004' p_down_file.PERFORM process_indcator USING '程序正在初始化OLE控件' 0.PERFORM process_indcator USING '程序正在打開excel文檔' 0.PERFORM open_excel_sheet USING '處分處罰信息批導(dǎo)入' p_file.DO 10 TIMES.PERFORM insert_row USING 5.PERFORM fill_cell USING 5 1 0 'e'.PERFORM fill_cell USING 5 2 0 'f'.PERFORM fill_cell USING 5 3 0 'g'.index = index + 1.ENDDO.PERFORM clear_data USING 1 6 2 7.PERFORM merge_cells USING 1 6 2 7.PERFORM add_comment USING 8 1 'OK'.PERFORM close_excel.PERFORM free_object.ENDFORM.”demo_forms_server
*&-------* *& Form demo_forms *&-------* * 演示用form *--------* FORM demo_forms.PERFORM create_excel.DO 10 TIMES.PERFORM insert_row USING 1.PERFORM fill_cell USING 1 1 0 'a'.PERFORM fill_cell USING 1 2 0 'b'.PERFORM fill_cell USING 1 3 0 'c'.index = index + 1.ENDDO.PERFORM columnwidth USING 'A:C' ''.PERFORM create_sheet.PERFORM create_sheet.PERFORM copy_sheet_all.PERFORM copy_sheet_area.PERFORM copy_cells.PERFORM range_borders.PERFORM row_color USING 1.PERFORM preview_excel.PERFORM del_sheet USING 'sheet2'.PERFORM free_object.ENDFORM.“demo_forms
*&-------* *&(1)Form create_excel *&-------* * 創(chuàng)建excel *--------* FORM create_excel.IF sy-subrc <> 0.MESSAGE 'EXCEL ERROR' TYPE 'S' DISPLAY LIKE 'E'.STOP.ENDIF.CALL METHOD OF application 'WORKBOOKS' = workbook.SET PROPERTY OF application 'VISIBLE' = 1.SET PROPERTY OF application 'SHEETSINNEWWORKBOOK' = 1.CALL METHOD OF workbook 'ADD' = sheet.CALL METHOD OF sheet 'ACTIVE'.ENDFORM.”create_excel
*&-------* *&(2)Form insert_row *&-------* * 根據(jù)行號(hào)插入一行
*--------* *-->I_ROW 行號(hào)
*--------* FORM insert_row USING i_row.CALL METHOD OF application 'ROWS' = rows EXPORTING #1 = i_row.CALL METHOD OF rows 'INSERT'.ENDFORM.“insert_row
*&-------* *&(3)Form fill_cell *&-------* * 填充單元格
*--------* *-->I_ROW 行號(hào) *-->I_COL 列號(hào) *-->BOLD 是否加粗 *-->P_VALUE 值
*--------* FORM fill_cell USING i_row i_col bold p_value.CALL METHOD OF application 'CELLS' = cell EXPORTING #1 = i_row #2 = i_col.SET PROPERTY OF cell 'VALUE' = p_value.SET PROPERTY OF cell 'HORIZONTALALIGNMENT' = 2.GET PROPERTY OF cell 'FONT' = font.SET PROPERTY OF font 'BOLD' = bold.SET PROPERTY OF font 'COLORINDEX' = 41.CALL METHOD OF cell 'BORDERS' = borders EXPORTING #1 = '2'.SET PROPERTY OF borders 'LINESTYLE' = '0'.SET PROPERTY OF borders 'WEIGHT' = 0.ENDFORM.”fill_cell
*&-------* *&(4)Form columnwidth *&-------* * 設(shè)置列寬為自動(dòng)或是固定值
*--------* *-->COLNUM 列號(hào),可以為單個(gè)列或是多個(gè)列 *-->WIDTH 列寬值
*--------* FORM columnwidth USING colnum width.CALL METHOD OF application 'COLUMNS' = columns EXPORTING #1 = colnum.IF width = ''.CALL METHOD OF columns 'AutoFit'.ELSE.SET PROPERTY OF columns 'COLUMNWIDTH' = width.ENDIF.ENDFORM.“columnwidth
*&-------* *&(5)Form create_sheet *&-------* * 創(chuàng)建sheet *--------* FORM create_sheet.CALL METHOD OF application 'sheets' = sheet.CALL METHOD OF sheet 'ADD'.ENDFORM.”create_sheet
*&-------* *&(6)Form copy_sheet_all *&-------* * 復(fù)制sheet全部?jī)?nèi)容到另一個(gè)sheet *--------* FORM copy_sheet_all.CALL METHOD OF application 'Sheets' = sheet EXPORTING #1 = 'Sheet1'.CALL METHOD OF sheet 'Cells' = cell.CALL METHOD OF cell 'copy'.CALL METHOD OF application 'Sheets' = sheet EXPORTING #1 = 'Sheet3'.CALL METHOD OF application 'Range' = range EXPORTING #1 = 'A1'.CALL METHOD OF range 'PasteSpecial'.ENDFORM.“copy_sheet_all
*&-------* *&(7)Form copy_sheet_area *&-------* * 復(fù)制sheet部分內(nèi)容到另一個(gè)sheet *--------* FORM copy_sheet_area.CALL METHOD OF application 'Sheets' = sheet EXPORTING #1 = 'Sheet1'.CALL METHOD OF sheet 'Range' = range EXPORTING #1 = 'A1' #2 = 'B10'.CALL METHOD OF range 'copy'.CALL METHOD OF application 'Sheets' = sheet1 EXPORTING #1 = 'Sheet2'.CALL METHOD OF sheet1 'Range' = range1 EXPORTING #1 = 'A1' #2 = 'B10'.CALL METHOD OF range1 'PasteSpecial'.ENDFORM.”copy_sheet_area
*&-------* *&(8)Form copy_cells *&-------* * 在一個(gè)sheet內(nèi)復(fù)制單元格
*--------* FORM copy_cells.CALL METHOD OF application 'Sheets' = sheet EXPORTING #1 = 'Sheet1'.CALL METHOD OF sheet 'Range' = range EXPORTING #1 = 'A1' #2 = 'B10'.CALL METHOD OF range 'copy'.CALL METHOD OF sheet 'Range' = range1 EXPORTING #1 = 'A12' #2 = 'B22'.CALL METHOD OF range1 'PasteSpecial'.ENDFORM.“copy_cells
*&-------* *&(9)Form range_borders *&-------* * 指定range加邊框
*--------* FORM range_borders.CALL METHOD OF application 'Range' = range EXPORTING #1 = 'A1' #2 = 'B10'.CALL METHOD OF range 'BORDERS' = borders.SET PROPERTY OF borders 'LINESTYLE' = 1.SET PROPERTY OF borders 'WEIGHT' = 10.ENDFORM.”range_borders
*&-------* *&(10)Form row_color *&-------* * 設(shè)定行背景色
*--------* *-->I_ROW 行號(hào)
*--------* FORM row_color USING i_row.CALL METHOD OF application 'ROWS' = rows EXPORTING #1 = i_row.GET PROPERTY OF rows 'Interior' = font.SET PROPERTY OF font 'ColorIndex' = '10'.ENDFORM.“row_color *&-------* *&(11)Form preview_excel *&-------* * 預(yù)覽excel *--------* FORM preview_excel.SET PROPERTY OF application 'VISIBLE' = 1.CALL METHOD OF sheet 'PRINTPREVIEW'.* m_message.ENDFORM.”preview_excel
*&-------* *&(12)Form free_object *&-------* * 釋放object *--------* FORM free_object.FREE OBJECT font.FREE OBJECT range.FREE OBJECT range1.FREE OBJECT columns.FREE OBJECT rows.FREE OBJECT cell.FREE OBJECT cell1.FREE OBJECT sheet1.FREE OBJECT sheet.FREE OBJECT workbook.FREE OBJECT application.ENDFORM.“free_object
*&-------* *&(13)Form close_excel *&-------* * 關(guān)閉excel并保存
*--------* FORM close_excel.CALL METHOD OF workbook 'Save'.CALL METHOD OF workbook 'Close' EXPORTING #1 = 0.CALL METHOD OF application 'Quit'.ENDFORM.”close_excel
*&-------* *&(14)Form download_excel_fromserver *&-------* * 從服務(wù)器下載excel模板
*--------* *-->P_OBJID 模板名稱 *-->P_DEST 存檔路徑
*--------* FORM download_excel_fromserver USING p_objid LIKE 004km.cnment *&-------* * 添加注釋
*--------* *-->I_ROW 行號(hào) *-->I_COL 列號(hào) *-->P_TEXT 注釋內(nèi)容
*--------* FORM add_comment USING i_row i_col p_text.CALL METHOD OF application 'Cells' = cell EXPORTING #1 = i_row #2 = i_col.CALL METHOD OF cell 'AddComment' = cell1.CALL METHOD OF cell1 'Text' EXPORTING #1 = p_text.CALL METHOD OF cell1 'Shape' = font.SET PROPERTY OF font 'Width' = '20'.SET PROPERTY OF font 'Height' = '20'.ENDFORM.“add_comment
*&-------* *&(25)Form hide_columns *&-------* * 隱藏列
*--------* *-->COLNUM 輸入列號(hào)
*--------* FORM hide_columns USING colnum.CALL METHOD OF application 'COLUMNS' = columns EXPORTING #1 = colnum.SET PROPERTY OF columns 'Hidden' = 'true'.ENDFORM.”hide_columns
*&-------* *&(26)Form delete_columns *&-------* * 刪除列
*--------* *-->COLNUM 輸入列號(hào)
*--------* FORM delete_columns USING colnum.CALL METHOD OF application 'COLUMNS' = columns EXPORTING #1 = colnum.CALL METHOD OF columns 'DELETE'.ENDFORM.“delete_columns
*&-------* *&(27)Form hide_row *&-------* * 隱藏行
*--------* *-->I_ROW 輸入行號(hào)
*--------* FORM hide_row USING i_row.CALL METHOD OF application 'ROWS' = rows EXPORTING #1 = i_row.SET PROPERTY OF rows 'Hidden' = 'true'.ENDFORM.”hide_row 2 注意事項(xiàng) 2.1 Sheet名稱
Sheet名為中文時(shí),在調(diào)用sheet對(duì)象時(shí)往往會(huì)調(diào)用不到,用英文字母不存在該問題。2.2 釋放對(duì)象
程序結(jié)束時(shí)需要釋放對(duì)象,否則Excel有可能無法關(guān)閉。釋放對(duì)象代碼如下: FORM free_object.FREE OBJECT font.FREE OBJECT range.FREE OBJECT range1.FREE OBJECT columns.FREE OBJECT rows.FREE OBJECT cell.FREE OBJECT cell1.FREE OBJECT sheet1.FREE OBJECT sheet.FREE OBJECT workbook.FREE OBJECT application.ENDFORM.
第二篇:SAP ABAP OLE操作EXCEL小結(jié)
ABAP直接操作EXCEL實(shí)現(xiàn)數(shù)據(jù)處理。這里是用OLE實(shí)現(xiàn)操作EXCEL的?,F(xiàn)在還有 DOI操作EXCEL等方法。以后用到再做介紹。此處不是直接生成EXCEL文件,而是從 服務(wù)器已經(jīng)上傳的EXCEL模板中下載模板然后打開修改實(shí)現(xiàn)數(shù)據(jù)保存。也可以直接創(chuàng)建 新的EXCEL文件往里面?zhèn)鬟f數(shù)據(jù)并設(shè)置格式。這里不做介紹。
1.采用模板文件實(shí)現(xiàn)。上傳EXCEL模板 T-code:SMW0
注意選擇的是binary data(對(duì)于EXCEL模版上傳)如果是HTML上傳,對(duì)于存于004km.cntl_error = 1 error_no_gui = 2 not_supported_by_gui = 3 OTHERS = 4.IF lc_fullpath = ''.MESSAGE '不能打開excel' TYPE 'E'.ENDIF.IF sy-subrc = 0.p_dest = lc_fullpath.* concatenate p_objid '.XLS' into ls_objnam.CONDENSE ls_objnam NO-GAPS.SELECT SINGLE relid objid FROM wwwdata INTO CORRESPONDING FIELDS OF lo_objdata WHERE srtf2 = 0 AND relid = 'MI' AND objid = p_objid.“先嘗試取一下,接著檢查是否取到制定模版問件 *檢查表wwwdata中是否存在所指定的模板文件
IF sy-subrc NE 0 OR lo_objdata-objid EQ space.“如果不存在,則給出錯(cuò)誤提示
CONCATENATE '模板文件' ls_objnam '不存在' INTO ls_errtxt.MESSAGE ls_errtxt TYPE 'I'.ENDIF.ls_destination = p_dest.”保存路徑
*如果存在,調(diào)用DOWNLOAD_WEB_OBJECT 函數(shù)下載模板到路徑下
CALL FUNCTION 'DOWNLOAD_WEB_OBJECT' EXPORTING key = lo_objdata destination = ls_destination IMPORTING rc = li_rc.IF li_rc NE 0.CONCATENATE '模板文件:' ls_objnam '下載失敗' INTO ls_errtxt.MESSAGE ls_errtxt TYPE 'E'.ENDIF.fname = ls_destination.ENDIF.ENDFORM.“fm_excel
3.下載完模板后,打開模板文件,填入數(shù)據(jù) DATA: EXCEL TYPE ole2_object, WORKBOOK TYPE ole2_object, SHEET TYPE ole2_object.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 = fname..”打開上面下載路徑下的excel文件
CALL METHOD OF excel 'Sheets' = sheet EXPORTING #1 = 1.CALL METHOD OF sheet 'Select'.CALL METHOD OF sheet 'ACTIVATE'.“sheet 激活 DATA SHEETNAME TYPE STRING.SHEETNAME = 'TESTTESTTEST'.SET PROPERTY OF sheet 'NAME' = sheetname.“設(shè)定sheet名稱 *此處假設(shè)內(nèi)表itab 中已經(jīng)存在需要寫入excel中的數(shù)據(jù) *并且假如從模板的第7行開始插入數(shù)據(jù) DATA ITAB LIKE STANDARD TABLE OF SFLIGHT.DATA WA LIKE SFLIGHT.DATA: TAB TYPE I,BOD(5)TYPE C.SELECT * INTO TABLE ITAB FROM SFLIGHT UP TO 8 ROWS.LOOP AT itab INTO wa.tab = sy-tabix + 6.*在excel中插入一行
PERFORM excel_row_insert USING sheet tab 1.*填充所插入行的每個(gè)單元格的數(shù)據(jù)
PERFORM fill_range USING tab 1 wa-t01.PERFORM fill_range USING tab 2 wa-t02.PERFORM fill_range USING tab 3 wa-t03.PERFORM fill_range USING tab 4 wa-t04.PERFORM fill_range USING tab 5 wa-t05.PERFORM fill_range USING tab 6 wa-t06.ENDLOOP.*設(shè)置EXCEL中所插入的數(shù)據(jù)行邊框線格式為黑色有邊框
bod = tab.CONDENSE bod NO-GAPS.CONCATENATE 'A6:F' bod INTO bod.PERFORM borderrange USING excel bod.PERFORM sub_excel_save.“保存excel數(shù)據(jù)
*&-------* *& Form sub_excel_save *&-------* * text *--------* FORM sub_excel_save.GET PROPERTY OF excel 'ActiveSheet' = sheet.“獲取活動(dòng)SHEET FREE OBJECT sheet.FREE OBJECT workbook.GET PROPERTY OF excel 'ActiveWorkbook' = workbook.CALL METHOD OF workbook 'SAVE'.SET PROPERTY OF excel 'Visible' = 1.”是否顯示EXCEL 此處顯示不退出 * SET PROPERTY OF excel 'Visible' = 1.* CALL METHOD OF workbook 'CLOSE'.* CALL METHOD OF excel 'QUIT'.注釋部分為不顯示直接退出 FREE OBJECT sheet.FREE OBJECT workbook.FREE OBJECT excel.ENDFORM.“save_book
*&-------* *& 向excel中的指定行插入N行
*&-------* FORM excel_row_insert USING lcobj_sheet lc_row lc_count.DATA lc_range TYPE ole2_object.DATA h_borders TYPE ole2_object.DO lc_count TIMES.CALL METHOD OF lcobj_sheet 'Rows' = lc_range EXPORTING #1 = 6.CALL METHOD OF lc_range 'Copy'.“COPY第6行插入一個(gè)新行
CALL METHOD OF lcobj_sheet 'Rows' = lc_range EXPORTING #1 = lc_row.CALL METHOD OF lc_range 'Insert'.CALL METHOD OF lc_range 'ClearContents'.”是否需要清空Cell ENDDO.ENDFORM.“excel_row_insert *&-------* *& Form fill_range *&-------* * text 填充EXCEL 單元格
*--------* *-->VALUE(F_ROW)text *-->VALUE(F_COL)text *-->VALUE(F_VALUE)text *--------* FORM fill_range USING value(f_row)value(f_col)value(f_value).DATA: row TYPE i, col TYPE i.row = f_row.col = f_col.CALL METHOD OF excel 'CELLS' = cell EXPORTING #1 = row #2 = col.SET PROPERTY OF cell 'VALUE' = f_value.ENDFORM.”fill_range *&-------* *& Form borderrange *&-------* * text:設(shè)置EXCEL中所插入的數(shù)據(jù)行邊框線格式 *--------* *-->LCOBJ_EXCEL text *-->RANGE text *--------* FORM borderrange USING lcobj_excel range.DATA: lc_cell TYPE ole2_object , lc_borders TYPE ole2_object.CALL METHOD OF lcobj_excel 'RANGE' = lc_cell EXPORTING #1 = range.DO 4 TIMES.CALL METHOD OF lc_cell 'BORDERS' = lc_borders EXPORTING #1 = sy-index.SET PROPERTY OF lc_borders 'LineStyle' = '1'.SET PROPERTY OF lc_borders 'WEIGHT' = 2.“4=max SET PROPERTY OF lc_borders 'ColorIndex' = '1'.ENDDO.FREE OBJECT lc_borders.FREE OBJECT lc_cell.ENDFORM.”borderrange
暫時(shí)只用到了這么多,還有ABAP設(shè)置EXCEL字體,對(duì)齊方式等功能。什么時(shí)候用到了再 做研究。希望對(duì)大家有所幫助。
第三篇:ABAP使用OLE方法總結(jié)
SAP ABAP OLE 操作EXCEL小結(jié)
ABAP直接操作EXCEL實(shí)現(xiàn)數(shù)據(jù)處理。這里是用OLE實(shí)現(xiàn)操作EXCEL的?,F(xiàn)在還有
DOI操作EXCEL等方法。以后用到再做介紹。此處不是直接生成EXCEL文件,而是從
服務(wù)器已經(jīng)上傳的EXCEL模板中下載模板然后打開修改實(shí)現(xiàn)數(shù)據(jù)保存。也可以直接創(chuàng)建
新的EXCEL文件往里面?zhèn)鬟f數(shù)據(jù)并設(shè)置格式。這里不做介紹。
1.采用模板文件實(shí)現(xiàn)。上傳EXCEL模板
T-code:SMW0 WebRFC 的二進(jìn)制數(shù)據(jù) 包:MI
點(diǎn)擊
模板數(shù)據(jù)保存在系統(tǒng)表004km.cntl_error = 1 error_no_gui = 2 not_supported_by_gui = 3 OTHERS = 4.IF lc_fullpath = “".MESSAGE ”不能打開excel“ TYPE ”E“.ENDIF.IF sy-subrc = 0.p_dest = lc_fullpath.* concatenate p_objid ”.XLS“ into ls_objnam.CONDENSE ls_objnam NO-GAPS.SELECT SINGLE relid objid FROM wwwdata INTO CORRESPONDING FIELDS OF lo_objdata WHERE srtf2 = 0 AND relid = ”MI“ AND objid = p_objid.*檢查表wwwdata中是否存在所指定的模板文件
IF sy-subrc NE 0 OR lo_objdata-objid EQ space.“如果不存在,則給出錯(cuò)誤提示
CONCATENATE ”模板文件“ ls_objnam ”不存在“ INTO ls_errtxt.MESSAGE ls_errtxt TYPE ”I“.ENDIF.ls_destination = p_dest.”保存路徑
*如果存在,調(diào)用DOWNLOAD_WEB_OBJECT 函數(shù)下載模板到路徑下
CALL FUNCTION ”DOWNLOAD_WEB_OBJECT“ EXPORTING key = lo_objdata destination = ls_destination IMPORTING rc = li_rc.IF li_rc NE 0.CONCATENATE ”模板文件:“ ls_objnam ”下載失敗“ INTO ls_errtxt.MESSAGE ls_errtxt TYPE ”E“.ENDIF.fname = ls_destination.ENDIF.ENDFORM.”fm_excel
3.下載完模板后,打開模板文件,填入數(shù)據(jù)
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 = fname..“打開上面下載路徑下的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.“設(shè)定sheet名稱
*此處假設(shè)內(nèi)表itab 中已經(jīng)存在需要寫入excel中的數(shù)據(jù)
*并且假如從模板的第7行開始插入數(shù)據(jù)
LOOP AT itab INTO wa.tab = wa-tabix + 6.*在excel中插入一行
PERFORM excel_row_insert USING sheet tab 1.*填充所插入行的每個(gè)單元格的數(shù)據(jù)
PERFORM fill_range USING tab 1 wa-t01.PERFORM fill_range USING tab 2 wa-t02.PERFORM fill_range USING tab 3 wa-t03.PERFORM fill_range USING tab 4 wa-t04.PERFORM fill_range USING tab 5 wa-t05.PERFORM fill_range USING tab 6 wa-t06.ENDLOOP.*設(shè)置EXCEL中所插入的數(shù)據(jù)行邊框線格式為黑色有邊框
bod = tab.CONDENSE bod NO-GAPS.CONCATENATE ”A6:F“ bod INTO bod.PERFORM borderrange USING excel bod.PERFORM sub_excel_save.”保存excel數(shù)據(jù)
*&-------* *& Form sub_excel_save *&-------* * text *--------* FORM sub_excel_save.GET PROPERTY OF excel “ActiveSheet” = sheet.“獲取活動(dòng)SHEET
FREE OBJECT sheet.FREE OBJECT workbook.GET PROPERTY OF excel “ActiveWorkbook” = workbook.CALL METHOD OF workbook “SAVE”.SET PROPERTY OF excel “Visible” = 1.“是否顯示EXCEL 此處顯示不退出
* SET PROPERTY OF excel ”Visible“ = 1.* CALL METHOD OF workbook ”CLOSE“.* CALL METHOD OF excel ”QUIT“.注釋部分為不顯示直接退出
FREE OBJECT sheet.FREE OBJECT workbook.FREE OBJECT excel.ENDFORM.”save_book
*&-------* *& 向excel中的指定行插入N行
*&-------* FORM excel_row_insert USING lcobj_sheet lc_row lc_count.DATA lc_range TYPE ole2_object.DATA h_borders TYPE ole2_object.DO lc_count TIMES.CALL METHOD OF lcobj_sheet “Rows” = lc_range EXPORTING #1 = 6.CALL METHOD OF lc_range “Copy”.“COPY第6行插入一個(gè)新行
CALL METHOD OF lcobj_sheet “Rows” = lc_range EXPORTING #1 = lc_row.CALL METHOD OF lc_range “Insert”.CALL METHOD OF lc_range “ClearContents”.“是否需要清空Cell ENDDO.ENDFORM.”excel_row_insert
*&-------* *& Form fill_range *&-------* * text 填充EXCEL 單元格
*--------* *-->VALUE(F_ROW)text *-->VALUE(F_COL)text *-->VALUE(F_VALUE)text *--------* FORM fill_range USING value(f_row)value(f_col)value(f_value).DATA: row TYPE i, col TYPE i.row = f_row.col = f_col.CALL METHOD OF excel “CELLS” = cell EXPORTING #1 = row #2 = col.SET PROPERTY OF cell “VALUE” = f_value.ENDFORM.“fill_range
*&-------* *& Form borderrange *&-------* * text:設(shè)置EXCEL中所插入的數(shù)據(jù)行邊框線格式
*--------* *-->LCOBJ_EXCEL text *-->RANGE text *--------* FORM borderrange USING lcobj_excel range.DATA: lc_cell TYPE ole2_object , lc_borders TYPE ole2_object.CALL METHOD OF lcobj_excel ”RANGE“ = lc_cell EXPORTING #1 = range.DO 4 TIMES.CALL METHOD OF lc_cell ”BORDERS“ = lc_borders
EXPORTING #1 = sy-index.SET PROPERTY OF lc_borders ”LineStyle“ = ”1“.SET PROPERTY OF lc_borders ”WEIGHT“ = 2.”4=max SET PROPERTY OF lc_borders “ColorIndex” = “1”.ENDDO.FREE OBJECT lc_borders.FREE OBJECT lc_cell.ENDFORM."borderrange
暫時(shí)只用到了這么多,還有ABAP設(shè)置EXCEL字體,對(duì)齊方式等功能。什么時(shí)候用到了再
做研究。希望對(duì)大家有所幫助。
第四篇:操作總結(jié)
一:選股
基本面+行業(yè)+政策扶持+股價(jià)+形態(tài)
主要注意事項(xiàng):
1:選擇有資金關(guān)注的股
2:籌碼集中度高的股
3:均線排列形態(tài)良好
4:指標(biāo)多頭或則將要多頭
二:操作
操作上要注意大盤是否適合操作來決定,減少操作的隨意性,考慮到交易成本,高頻操作是否合適。
主要以中線持股,中短結(jié)合,波段操作,盤中有機(jī)會(huì)可以適當(dāng)T+0,降低持股成本。
盤中熱點(diǎn)盤塊個(gè)股啟動(dòng)時(shí),可以利用短線資金適當(dāng)參與,要參與龍頭股,給機(jī)會(huì)就參與,不給機(jī)會(huì)就放棄,堅(jiān)決不追高。
注意板快輪動(dòng)。
止損和止贏(浮動(dòng))
三金叉買入法,五線順上第一陽買入,討飯線持股法,平臺(tái)突破買入法。
三:復(fù)盤
對(duì)當(dāng)天領(lǐng)漲板塊和領(lǐng)跌板塊重點(diǎn)分析,特別是龍頭股。形態(tài)好的個(gè)股 在底部啟動(dòng)的要重點(diǎn)關(guān)注,如果有成交量放出,就可以放入自選股。
信息的收集和解讀,找出相關(guān)個(gè)股,編譯成自己的股票資料冊(cè)。
四:指標(biāo)類
MACDVOLKDJOBV
五:細(xì)節(jié)問題
K線組合形態(tài),MACD強(qiáng)勢(shì),KDJ形態(tài),OBV背離,量?jī)r(jià)配合。盤感,經(jīng)典分時(shí)和經(jīng)典K線組合。
做自己熟悉的個(gè)股,股性是否活躍,市場(chǎng)的認(rèn)可度等因素結(jié)合起來,做到手中有股,心中無股,心態(tài)和行動(dòng)要知行合一,不貪婪,不恐懼,紀(jì)律是在股市生存的第一原則。
第五篇:數(shù)控車床對(duì)刀操作
《數(shù)控車床對(duì)刀操作》說課稿
各位評(píng)委老師好:
今天我說課的題目是《數(shù)控車床對(duì)刀操作》,下面我將從教材,教法,學(xué)法,教學(xué)過程等幾個(gè)方面來說這節(jié)課。
一、說教材
1、教材內(nèi)容:
《數(shù)控車床加工工藝與編程操作》這門課程是以培養(yǎng)和提高學(xué)生在數(shù)控加工過程中的工藝分析能力以及能夠?qū)χ械葟?fù)雜程度零件進(jìn)行手工編程為目的進(jìn)行編寫的。數(shù)控車床對(duì)刀操作章節(jié)是學(xué)習(xí)本門課程的重點(diǎn)內(nèi)容,要求學(xué)生能夠熟練掌握對(duì)刀的基本概念,對(duì)刀的基本方法,學(xué)會(huì)試切對(duì)刀的基本操作要領(lǐng)。
前面我們學(xué)習(xí)的華中世紀(jì)星數(shù)控車床操作面板組成部分的內(nèi)容,已熟悉各按鍵的作用。能夠熟練應(yīng)用,本節(jié)課在此基礎(chǔ)上講述對(duì)刀的基本概念,對(duì)刀的基本方法及試切對(duì)刀的基本操作要領(lǐng)。將為后期實(shí)訓(xùn)課題奠定基礎(chǔ)。因此,學(xué)習(xí)并熟練掌握對(duì)刀的基本方法及試切對(duì)刀的基本操作要領(lǐng)是十分重要的。
2、教學(xué)目標(biāo)
結(jié)合本課特點(diǎn)和學(xué)生的實(shí)際情況,我將本課的教學(xué)目標(biāo)確定如下:
1)知識(shí)目標(biāo)
對(duì)刀的基本概念,對(duì)刀的基本方法,試切對(duì)刀的方法要領(lǐng)。2)能力目標(biāo)
熟練試切對(duì)刀的方法要領(lǐng),能正確測(cè)量并設(shè)置刀偏值。培養(yǎng)學(xué)生運(yùn)用所學(xué)知識(shí)解決問題的能力。提高學(xué)生動(dòng)手操作能力。
3)情感目標(biāo)
通過引導(dǎo)學(xué)生參與解決問題的過程,使學(xué)生體驗(yàn)成功的感受,激發(fā)學(xué)生的學(xué)習(xí)熱情,增強(qiáng)學(xué)生自信心。通過動(dòng)手操作,讓學(xué)生懂得實(shí)踐出真知的真理。
3、教學(xué)重難點(diǎn)
根據(jù)教學(xué)目標(biāo)及在以往的教學(xué)過程中,學(xué)生普遍反映存在以下的問題:
1、對(duì)數(shù)控機(jī)床的操作面板不熟悉,記不住刀偏表位置,不知道從何下手;
2、有的同學(xué)試切之后不知道該往哪個(gè)方向退刀,出現(xiàn)對(duì)刀坐標(biāo)值錯(cuò)誤的情況。針對(duì)這些情況,指定以下重難點(diǎn):
教學(xué)重點(diǎn):
1、掌握對(duì)刀的基本概念
2、掌握試切法對(duì)刀的基本方法 教學(xué)難點(diǎn):試切法對(duì)刀的過程及其基本方法
在教學(xué)過程中,將通過理論講述和教學(xué)演示的方法突出重點(diǎn),通過教學(xué)演示的方法突破難點(diǎn)。
二、教法分析
考慮到我所帶班級(jí)學(xué)生的特點(diǎn),基礎(chǔ)知識(shí)薄弱,缺乏良好的學(xué)習(xí)習(xí)慣等因素。我在本節(jié)課教學(xué)中,主要采用了啟發(fā)提問法、演示法、小組討論法等多種教學(xué)方法。現(xiàn)場(chǎng)實(shí)踐操作;教師針對(duì)數(shù)控機(jī)床的操作面板進(jìn)行講解,留給學(xué)生足夠的時(shí)間來熟悉、操作機(jī)床,由學(xué)生進(jìn)行現(xiàn)場(chǎng)實(shí)踐操作,以培養(yǎng)學(xué)生的實(shí)踐動(dòng)手能力。在實(shí)習(xí)時(shí)遇到問題引導(dǎo)他們開動(dòng)腦筋,積極思考,鼓勵(lì)同學(xué)們之間展開激烈的討論,可以加深學(xué)生對(duì)數(shù)控加工的理解和提高學(xué)習(xí)的興趣。
三、說學(xué)法
在教學(xué)過程中,必須使學(xué)生認(rèn)識(shí)到自己的主體作用。在設(shè)計(jì)學(xué)習(xí)方法時(shí),我結(jié)合目前中職生認(rèn)識(shí)事物的特點(diǎn),本課指導(dǎo)學(xué)生采用自主學(xué)習(xí)和協(xié)作學(xué)習(xí)等方法,幫助學(xué)生在不斷探索,不斷交流、不斷評(píng)價(jià)中自然達(dá)成學(xué)習(xí)目標(biāo),轉(zhuǎn)變學(xué)習(xí)方式,提高學(xué)習(xí)能力。自主學(xué)習(xí)意在于培養(yǎng)學(xué)生自主探究的能力,例如:要求學(xué)生自行總結(jié)對(duì)刀的規(guī)律性,2
經(jīng)常會(huì)出現(xiàn)的問題,小組成員之間互相交流,便于學(xué)生記憶。啟發(fā)學(xué)生自主學(xué)習(xí),自主探究。協(xié)作學(xué)習(xí)意在培養(yǎng)學(xué)生的合作交流能力以及團(tuán)隊(duì)合作的意識(shí),例如:學(xué)生反映對(duì)刀操作步驟繁瑣,將學(xué)生分為5人一組,自由選擇尺寸進(jìn)行對(duì)刀,分組討論,寫出經(jīng)常易錯(cuò)誤的地方,然后自由討論并實(shí)踐操作的方式將問題解決,老師加以解釋。從中發(fā)現(xiàn)問題加深學(xué)生的印象。
四、教學(xué)過程
1、復(fù)習(xí)舊課,導(dǎo)入新課(采用啟發(fā)提問和演示觀察法)
通過觀察實(shí)訓(xùn)車間數(shù)控車床,提出問題:
1)華中世紀(jì)星數(shù)控車床面板由哪幾部分組成?學(xué)生回答。2)各部分有什么功能?學(xué)生回答。
此時(shí)我則提問對(duì)刀操作怎么完成呢?這樣,自然而然,就引出所要講授的新內(nèi)容----數(shù)控車床對(duì)刀操作(采用“啟發(fā)提問和觀察法”導(dǎo)入新課,不僅可以復(fù)習(xí)前面的內(nèi)容而且還抓住學(xué)生對(duì)新知識(shí)的好奇心理,充分調(diào)動(dòng)學(xué)生的注意力。)
2、講授新課(演示法和分組討論法)這節(jié)課講解三部分內(nèi)容。第一部分教師講解(講解法)通過理論講解讓同學(xué)們對(duì)數(shù)控對(duì)刀的概念,對(duì)刀的方法,對(duì)刀的必要性有一定的了解。
第二部分教師邊示范邊講解(演示法)
指導(dǎo)教師在機(jī)床操作面板上面對(duì)數(shù)控對(duì)刀的整個(gè)過程進(jìn)行操作,讓同學(xué)們對(duì)于對(duì)刀有個(gè)直觀的了解,并記下對(duì)刀所要求的操作步驟有哪些,會(huì)出現(xiàn)的問題有哪些。第三部分應(yīng)用練習(xí)(小組討論法)
將學(xué)生分為八組(學(xué)生分組時(shí),好、中、差搭配),各組進(jìn)行比賽。通過對(duì)刀訓(xùn)練,主要是檢驗(yàn)學(xué)生對(duì)本節(jié)課知識(shí)的掌握程度。我在 3
此期間,可做巡回指導(dǎo)。練習(xí)完成之后我則給予評(píng)價(jià)和總結(jié),這樣學(xué)生的成就感便得到了肯定。本節(jié)課我安排在數(shù)控車間,采用了機(jī)床實(shí)際操作與電腦仿真同時(shí)進(jìn)行的方法。目的是為了增強(qiáng)學(xué)生的感性認(rèn)識(shí)、加深對(duì)知識(shí)的理解和記憶、激發(fā)學(xué)生的學(xué)習(xí)興趣、培養(yǎng)學(xué)生實(shí)踐操作的能力。
3、小結(jié):
總結(jié)本節(jié)課的重點(diǎn)和難點(diǎn),評(píng)價(jià)學(xué)生對(duì)知識(shí)的掌握情況,并指出在編程及操作中應(yīng)該注意的問題。
利用幾分鐘時(shí)間總結(jié)本節(jié)課的內(nèi)容,再次強(qiáng)調(diào)本課的重難點(diǎn),要求學(xué)生課后一定要花時(shí)間消化,復(fù)習(xí),對(duì)于需要記憶的一定要記憶并指出操作中一定要注意的問題。同時(shí)留出問題:內(nèi)孔對(duì)刀怎么對(duì)?刀具怎么安裝,操作過程中要注意哪些問題?要求學(xué)生課后思考,為下節(jié)課做好鋪墊。4.布置作業(yè)
要求學(xué)生編寫一段簡(jiǎn)單的零件加工程序,要求程序書寫一定要規(guī)范,并且要將自己寫的程序輸入機(jī)床,對(duì)刀之后進(jìn)行加工。
五、板書設(shè)計(jì)
1、對(duì)刀的基本概念
2、刀具的裝夾
3、對(duì)刀的基本方法
4、外圓刀試切法對(duì)刀示范講解
5、機(jī)床的清潔與保養(yǎng)
六、教學(xué)反思
本節(jié)課內(nèi)容,我在數(shù)控10(1)班已上過,在教學(xué)的過程中,我發(fā)現(xiàn)對(duì)刀步驟學(xué)生有點(diǎn)暈,有的同學(xué)試切之后不知道該往哪個(gè)方向退刀。其次,在上課環(huán)節(jié)中,給學(xué)生反復(fù)練習(xí)的時(shí)間有點(diǎn)少。