失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > OLE操作EXCEL

OLE操作EXCEL

时间:2022-03-01 10:03:04

相关推荐

OLE操作EXCEL

最近知道了OLE这个概念, 打算学习学习

新建excel, 改变字体颜色, 填充单元格颜色; 下面两段代码效果一样

代码1

PARAMETERS: pr_xls(64) TYPE c DEFAULT 'D:\ZEROTEST.XLS'.INCLUDE ole2incl.DATA: excelTYPE ole2_object,workbook TYPE ole2_object,sheetTYPE ole2_object,cellTYPE ole2_object,row TYPE ole2_object,fontTYPE ole2_object,int TYPE ole2_object.DATA: lv_rc TYPE c.CREATE OBJECT excel 'EXCEL.APPLICATION'.GET PROPERTY OF excel 'WORKBOOKS' = workbook.CALL METHOD OF workbook 'ADD'.CALL METHOD OF excel 'Worksheets' = sheetEXPORTING #1 = 1.CALL METHOD OF sheet 'Activate'. " should be active otherwise can't be savedSET PROPERTY OF sheet 'Name' = 'Sheet1'.* Select cell and modify font colorCALL METHOD OF sheet 'CELLS' = cellEXPORTING #1 = 2 #2 = 3.CALL METHOD OF cell 'FONT' = font.SET PROPERTY OF font 'SIZE' = '24'.SET PROPERTY OF cell 'VALUE' = 'zero' .SET PROPERTY OF font 'COLORINDEX' = '4'.FREE OBJECT CELL.* Fill the cell colorCALL METHOD OF sheet 'CELLS' = cellEXPORTING #1 = 2 #2 = 4.CALL METHOD OF cell 'INTERIOR' = int.SET PROPERTY OF int 'ColorIndex' = '4'.* release and exit Excel.CALL METHOD OF sheet 'SAVEAS'EXPORTING#1 = pr_xls.CALL METHOD OF excel 'QUIT'.* Free all objectsFREE OBJECT font.FREE OBJECT cell.FREE OBJECT sheet.FREE OBJECT workbook.FREE OBJECT excel.excel-handle = -1.FREE OBJECT row.

代码2

INCLUDE ole2incl.DATA: excel TYPE ole2_object,workbookTYPE ole2_object,sheet TYPE ole2_object,cellTYPE ole2_object,fontTYPE ole2_object,int TYPE ole2_object.PARAMETERS p_file TYPE string DEFAULT 'D:\ZEROTEST.XLS'.* Run ExcelCREATE OBJECT excel 'EXCEL.APPLICATION'.* get reference to workbook list in application* it is empty right nowCALL METHOD OF excel 'WORKBOOKS' = workbook.CALL METHOD OF workbook 'ADD'.* get refer to active workbookGET PROPERTY OF excel 'ACTIVEWORKBOOK' = workbook.* Select cell and modify font colorCALL METHOD OF excel 'CELLS' = cellEXPORTING #1 = 2 #2 = 3.CALL METHOD OF cell 'FONT' = font.SET PROPERTY OF font 'SIZE' = '24'.SET PROPERTY OF cell 'VALUE' = 'zero' .SET PROPERTY OF font 'COLORINDEX' = '4'.FREE OBJECT CELL.* Fill the cell colorCALL METHOD OF excel 'CELLS' = cellEXPORTING #1 = 2 #2 = 4.CALL METHOD OF cell 'INTERIOR' = int.SET PROPERTY OF int 'COLORINDEX' = '4'.* save workbookCALL METHOD OF workbook 'SAVEAS'EXPORTING#1 = p_file.* quit excelCALL METHOD OF excel 'QUIT'.* Free all objectsFREE OBJECT font.FREE OBJECT cell.FREE OBJECT workbook.FREE OBJECT excel.excel-handle = -1.

打开excel, insert行, 填写数据

PARAMETERS: pr_xls(64) TYPE c DEFAULT 'D:\ZEROTEST.XLS'.INCLUDE ole2incl.TYPES: BEGIN OF ty_person,name(8) TYPE c,location(2) TYPE c,END OF ty_person.DATA: excelTYPE ole2_object,workbook TYPE ole2_object,sheetTYPE ole2_object,cellTYPE ole2_object,row TYPE ole2_object.DATA: lt_person TYPE STANDARD TABLE OF ty_person,lw_person TYPE ty_person.CLEAR lw_person.lw_person-name = 'Palm'.lw_person-location = '31F'.APPEND lw_person TO lt_person.CLEAR lw_person.lw_person-name = 'Luke'.lw_person-location = '13F'.APPEND lw_person TO lt_person.CLEAR lw_person.lw_person-name = 'Zero'.lw_person-location = '14F'.APPEND lw_person TO lt_person.* Create an Excel object and start Excel.CREATE OBJECT excel 'EXCEL.APPLICATION'.IF sy-subrc <> 0.MESSAGE 'The excel object can''t be created' TYPE 'I'.ENDIF.* Create an Excel workbook Object.CALL METHOD OF excel 'WORKBOOKS' = workbook .* Transfer the header line to Excel.CALL METHOD OF workbook 'OPEN' EXPORTING #1 = pr_xls.CALL METHOD OF excel 'RANGE' = cell EXPORTING #1 = 'A1'.SET PROPERTY OF cell 'VALUE' = 'Name' .CALL METHOD OF excel 'RANGE' = cell EXPORTING #1 = 'B1'.SET PROPERTY OF cell 'VALUE' = 'Location' .LOOP AT lt_person INTO lw_person.CALL METHOD OF excel 'ROWS' = row EXPORTING #1 = '2' .CALL METHOD OF row 'INSERT'.CALL METHOD OF excel 'RANGE' = cell EXPORTING #1 = 'A2' .SET PROPERTY OF cell 'VALUE' = lw_person-name.CALL METHOD OF excel 'RANGE' = cell EXPORTING #1 = 'B2' .SET PROPERTY OF cell 'VALUE' = lw_person-location.ENDLOOP.* release and exit Excel.CALL METHOD OF excel 'SAVE'.CALL METHOD OF excel 'QUIT'.* Free all objectsFREE OBJECT cell.FREE OBJECT workbook.FREE OBJECT excel.excel-handle = -1.FREE OBJECT row.

当我写完这段代码后, 发现弹出一个框a file named 'resume.xlw' already exists.对Workbook的save会同时保存工作区, 默认保存在My document里, 第二次运行这个程序,对话框就会弹出来, 而对于Active workbook的save就不会保存工作区.

这个是excel的工作区(workspace), 它的作用是保存Excel编辑的布局,比如我打开了两个Excel文件, zero1.xls和zero2.xls, 我可以把布局保存成下图这样. 下次我们打开文件'resume.xlw', 就会自动打开这两个文件并且恢复这个布局.

下面是解决方法, 改了两行代码

PARAMETERS: pr_xls(64) TYPE c DEFAULT 'D:\ZEROTEST.XLS'.INCLUDE ole2incl.TYPES: BEGIN OF ty_person,name(8) TYPE c,location(2) TYPE c,END OF ty_person.DATA: excelTYPE ole2_object,workbook TYPE ole2_object,sheetTYPE ole2_object,cellTYPE ole2_object,row TYPE ole2_object.DATA: lt_person TYPE STANDARD TABLE OF ty_person,lw_person TYPE ty_person.CLEAR lw_person.lw_person-name = 'Palm'.lw_person-location = '31F'.APPEND lw_person TO lt_person.CLEAR lw_person.lw_person-name = 'Luke'.lw_person-location = '13F'.APPEND lw_person TO lt_person.CLEAR lw_person.lw_person-name = 'Zero'.lw_person-location = '14F'.APPEND lw_person TO lt_person.* Create an Excel object and start Excel.CREATE OBJECT excel 'EXCEL.APPLICATION'.IF sy-subrc <> 0.MESSAGE 'The excel object can''t be created' TYPE 'I'.ENDIF.* Create an Excel workbook Object.CALL METHOD OF excel 'WORKBOOKS' = workbook .* Transfer the header line to Excel.CALL METHOD OF workbook 'OPEN' EXPORTING #1 = pr_xls.CALL METHOD OF excel 'RANGE' = cell EXPORTING #1 = 'A1'.SET PROPERTY OF cell 'VALUE' = 'Name' .CALL METHOD OF excel 'RANGE' = cell EXPORTING #1 = 'B1'.SET PROPERTY OF cell 'VALUE' = 'Location' .LOOP AT lt_person INTO lw_person.CALL METHOD OF excel 'ROWS' = row EXPORTING #1 = '2' .CALL METHOD OF row 'INSERT'.CALL METHOD OF excel 'RANGE' = cell EXPORTING #1 = 'A2' .SET PROPERTY OF cell 'VALUE' = lw_person-name.CALL METHOD OF excel 'RANGE' = cell EXPORTING #1 = 'B2' .SET PROPERTY OF cell 'VALUE' = lw_person-location.ENDLOOP.GET PROPERTY OF excel 'ACTIVEWORKBOOK' = workbook.* release and exit Excel.CALL METHOD OF workbook 'SAVE'.CALL METHOD OF excel 'QUIT'.* Free all objectsFREE OBJECT cell.FREE OBJECT workbook.FREE OBJECT excel.excel-handle = -1.FREE OBJECT row.

如果觉得《OLE操作EXCEL》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。