最近知道了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相关推荐

  1. OLE 操作Excel 详解(转)

    使用Excel模板进行报表的开发. 今年搞的Excel比较多,总结了一下,相信常用的操作包含的差不多了. 可以首先定义一个无内容的Excel报表模板文件. 通过Tcode SMW0 上传至SAP数据库 ...

  2. java ole excel_用OLE操作Excel

    ExcelApp . PG( " workbooks " ) . FN( " Add " , " C:\\Temp\\result.xlt " ...

  3. BCB用OLE操作Excel(目前最全的资料)

    本文档部分资料来自互联网,大部分是ccrun(老妖)在Excel中通过录制宏-->察看宏代码-->转为CB代码而来.本文档不断更新中.欢迎大家关注. 要在应用程序中控制Excel的运行,首 ...

  4. VC/MFC使用OLE操作 EXCEL

    1.VC插入sheet页到指定位置 插入sheet的函数用 sheets.Add(Before, After,Count,Type) 四个参数含义如下: 四个const   VARIANT:      ...

  5. python3打包成exe把openpyxl和pandas_Python openpyxl、pandas操作Excel方法简介与具体实例...

    本篇重点讲解windows系统下 Python3.5中第三方excel操作库-openpyxl: 其实Python第三方库有很多可以操作Excel,如:xlrd,xlwt,xlwings甚至注明的数据 ...

  6. C++ builder 操作Excel方法(据网上资料整理)

    c++ builder 操作Excel方法,下面是从网上找到的一些不错的方法,学习一下: 1 用OLE操作Excel(目前最全的资料)(04.2.19更新) 2 3 本文档部分资料来自互联网,大部分是 ...

  7. Perl通过WIN32 OLE来操作EXCEL

    最近要用Perl(通过Win32::OLE)来操作EXCEL,在网上没找到类似的内容,好不容易在一本书上找到点入门知识,再加上自己捣鼓了一通,总算有点眉目,在此做个备份,供大家和我一起参考 ^_^ # ...

  8. ASP.NET通过OLE DB操作Excel

    ASP.NET 操作Excel目前有比较多的方法,常用的有三种:COM组件,OLE DB,和NOPI插件. #1 COM组件 优点: (1)能读取各种版本的Excel,包括2003,2007,2010 ...

  9. MFC中使用OLE/COM操作EXCEL的方法

    使用OLE的方法操作EXCEL,首先计算机必须安装excel,这样才会有接口暴露出来.本次使用大神封装好的类. excel作为OLE/COM库插件,定义好了各类交互接口,而且这些接口是跨语言的,可以导 ...

最新文章

  1. 互联网协议 — OSPF 开放式最短路径优先协议
  2. Program type already present: android.support.v4.app.BackStackRecord$Op
  3. 牛逼哄哄的SLAM技术即将颠覆哪些领域
  4. Laravel API记录
  5. JavaScript实现截留雨水问题的蛮力方法的算法(附完整源码)
  6. cmw500综合测试仪使用_高端示波器是德MSOX4154A示波器-产品使用操作说明书【二手示波器吧】...
  7. Anbox 和 LXC 代码规模
  8. js怎么把按钮往下移_Vue.js 实现计算器
  9. Sublime中查找重复行的正则表达式
  10. 192.168.8.1手机登陆_手机怎么登陆192.168.2.1入口?
  11. AI学习笔记(十三)CNN之人脸检测
  12. 全球抵押销售点(POS)软件行业调研及趋势分析报告
  13. 用html5写个炫酷的3d电子相册
  14. linux虚拟串口控制器驱动开发及代码实现(uart driver)
  15. 22讲MySQL有哪些“饮鸩止渴”提高性能的方法
  16. 彻底理解nth-child和nth-of-type的区别
  17. 提升企业网站用户体验 你不可不知的秘诀
  18. icafe 同步到主干
  19. 黄仁勋没有回应,英伟达没有新品
  20. 解决Kali linux安装后无法使用键盘输入

热门文章

  1. #数论#洛谷 3951 JZOJ 5473 小凯的疑惑
  2. drm单个framebuffer显示
  3. MySQL - 查询数据库里所有表名和字段名
  4. WIN10 JDK下载及安装说明
  5. __name__的基本用法
  6. 【银河麒麟V10U盘只读解决方案】
  7. keil5 c语言运行
  8. 09丨数据采集:如何用八爪鱼采集微博上的“DG”评论
  9. excel与access结合运用_当excel不够用时,如何利用Access进行数据分析?
  10. 读书笔记-精准努力-思考时间和精力的分配