OLE操作EXCEL
最近知道了OLE这个概念, 打算学习学习
新建excel, 改变字体颜色, 填充单元格颜色; 下面两段代码效果一样
代码1
PARAMETERS: pr_xls(64) TYPE c DEFAULT 'D:\ZEROTEST.XLS'.INCLUDE ole2incl.
DATA: excel TYPE ole2_object,workbook TYPE ole2_object,sheet TYPE ole2_object,cell TYPE ole2_object,row TYPE ole2_object,font TYPE 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 saved
SET PROPERTY OF sheet 'Name' = 'Sheet1'.* Select cell and modify font color
CALL 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 color
CALL 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 objects
FREE 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,workbook TYPE ole2_object,sheet TYPE ole2_object,cell TYPE ole2_object,font TYPE ole2_object,int TYPE ole2_object.PARAMETERS p_file TYPE string DEFAULT 'D:\ZEROTEST.XLS'.* Run Excel
CREATE OBJECT excel 'EXCEL.APPLICATION'.* get reference to workbook list in application
* it is empty right now
CALL METHOD OF excel 'WORKBOOKS' = workbook.
CALL METHOD OF workbook 'ADD'.
* get refer to active workbook
GET PROPERTY OF excel 'ACTIVEWORKBOOK' = workbook.* Select cell and modify font color
CALL 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 color
CALL METHOD OF excel 'CELLS' = cellEXPORTING #1 = 2 #2 = 4.
CALL METHOD OF cell 'INTERIOR' = int.
SET PROPERTY OF int 'COLORINDEX' = '4'.* save workbook
CALL METHOD OF workbook 'SAVEAS'EXPORTING#1 = p_file.* quit excel
CALL METHOD OF excel 'QUIT'.* Free all objects
FREE 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: excel TYPE ole2_object,workbook TYPE ole2_object,sheet TYPE ole2_object,cell TYPE 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 objects
FREE 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: excel TYPE ole2_object,workbook TYPE ole2_object,sheet TYPE ole2_object,cell TYPE 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 objects
FREE OBJECT cell.
FREE OBJECT workbook.
FREE OBJECT excel.
excel-handle = -1.
FREE OBJECT row.
OLE操作EXCEL相关推荐
- OLE 操作Excel 详解(转)
使用Excel模板进行报表的开发. 今年搞的Excel比较多,总结了一下,相信常用的操作包含的差不多了. 可以首先定义一个无内容的Excel报表模板文件. 通过Tcode SMW0 上传至SAP数据库 ...
- java ole excel_用OLE操作Excel
ExcelApp . PG( " workbooks " ) . FN( " Add " , " C:\\Temp\\result.xlt " ...
- BCB用OLE操作Excel(目前最全的资料)
本文档部分资料来自互联网,大部分是ccrun(老妖)在Excel中通过录制宏-->察看宏代码-->转为CB代码而来.本文档不断更新中.欢迎大家关注. 要在应用程序中控制Excel的运行,首 ...
- VC/MFC使用OLE操作 EXCEL
1.VC插入sheet页到指定位置 插入sheet的函数用 sheets.Add(Before, After,Count,Type) 四个参数含义如下: 四个const VARIANT: ...
- python3打包成exe把openpyxl和pandas_Python openpyxl、pandas操作Excel方法简介与具体实例...
本篇重点讲解windows系统下 Python3.5中第三方excel操作库-openpyxl: 其实Python第三方库有很多可以操作Excel,如:xlrd,xlwt,xlwings甚至注明的数据 ...
- C++ builder 操作Excel方法(据网上资料整理)
c++ builder 操作Excel方法,下面是从网上找到的一些不错的方法,学习一下: 1 用OLE操作Excel(目前最全的资料)(04.2.19更新) 2 3 本文档部分资料来自互联网,大部分是 ...
- Perl通过WIN32 OLE来操作EXCEL
最近要用Perl(通过Win32::OLE)来操作EXCEL,在网上没找到类似的内容,好不容易在一本书上找到点入门知识,再加上自己捣鼓了一通,总算有点眉目,在此做个备份,供大家和我一起参考 ^_^ # ...
- ASP.NET通过OLE DB操作Excel
ASP.NET 操作Excel目前有比较多的方法,常用的有三种:COM组件,OLE DB,和NOPI插件. #1 COM组件 优点: (1)能读取各种版本的Excel,包括2003,2007,2010 ...
- MFC中使用OLE/COM操作EXCEL的方法
使用OLE的方法操作EXCEL,首先计算机必须安装excel,这样才会有接口暴露出来.本次使用大神封装好的类. excel作为OLE/COM库插件,定义好了各类交互接口,而且这些接口是跨语言的,可以导 ...
最新文章
- 互联网协议 — OSPF 开放式最短路径优先协议
- Program type already present: android.support.v4.app.BackStackRecord$Op
- 牛逼哄哄的SLAM技术即将颠覆哪些领域
- Laravel API记录
- JavaScript实现截留雨水问题的蛮力方法的算法(附完整源码)
- cmw500综合测试仪使用_高端示波器是德MSOX4154A示波器-产品使用操作说明书【二手示波器吧】...
- Anbox 和 LXC 代码规模
- js怎么把按钮往下移_Vue.js 实现计算器
- Sublime中查找重复行的正则表达式
- 192.168.8.1手机登陆_手机怎么登陆192.168.2.1入口?
- AI学习笔记(十三)CNN之人脸检测
- 全球抵押销售点(POS)软件行业调研及趋势分析报告
- 用html5写个炫酷的3d电子相册
- linux虚拟串口控制器驱动开发及代码实现(uart driver)
- 22讲MySQL有哪些“饮鸩止渴”提高性能的方法
- 彻底理解nth-child和nth-of-type的区别
- 提升企业网站用户体验 你不可不知的秘诀
- icafe 同步到主干
- 黄仁勋没有回应,英伟达没有新品
- 解决Kali linux安装后无法使用键盘输入