对象参照类 OLE2_OBJECT(OLE所有对象都是参照它)
创建EXCEL 以及追加新的SHEET页
IF U_FLG IS NOT INITIAL.
* 新创建EXCEL文件对象
CREATE OBJECT EXCEL 'EXCEL.APPLICATION'.
IF sy-subrc <> 0.
MESSAGE '没有检测到Excel软件,无法完成打印。请正确安装Excel。' TYPE 'E' .
ENDIF.
SET PROPERTY OF EXCEL 'VISIBLE' = 0. "不显示窗口
* 获取工作簿对象
GET PROPERTY OF EXCEL 'WORKBOOKS' = workbook.
GET PROPERTY OF WORKBOOK 'Application' = APPLICATION. "获取exec了工作页对象
* 打开指定路劲EXCEL文件
* CALL METHOD OF
* workbook
* 'OPEN'
* EXPORTING
* #1 = filename.
SET PROPERTY OF APPLICATION 'SheetsInNewWorkbook' = 1. "设定新建EXCEL只有一个sheet页签
CALL METHOD OF WORKBOOK 'Add' = NEWBOOK. "呼出工作簿的新增功能对象
GET PROPERTY OF APPLICATION 'ActiveSheet' = ACTIVESHEET. "获取当前操作的SHEET页
SET PROPERTY OF ACTIVESHEET 'Name' = U_FNAME. "给当前页设定名称
GET PROPERTY OF APPLICATION 'ActiveSheet' = sheets . "获取激活页
GET PROPERTY OF sheets 'Name' = name. "获取激活页名
ELSE.
* 创建新的sheet页
GET PROPERTY OF newbook 'Sheets' = sheet. "获取新建工作簿的SHEET对象
CALL METHOD OF sheet 'Add' = newsheet . "新增SHEET功能对象
SET PROPERTY OF newsheet 'Name' = U_FNAME. "新增sheet命名
GET PROPERTY OF newbook 'ActiveSheet' = sheets. "
GET PROPERTY OF sheets 'Name' = name.
ENDIF.
CALL METHOD OF excel 'ACTIVEWINDOW' = activewindow. "得到活动窗口对象
SET PROPERTY OF activewindow 'DISPLAYGRIDLINES' = 1. "隐藏格线(虚线) 1,0
新建的时已经存在一个SHEET页 ,所有不需要创建SHEET,追加SHEET页时,需要创建新的SHEET页
2.单元格操作
* 指定工作簿中单元格范围
CALL METHOD OF excel 'CELLS' = cell1 "单元格开始点
EXPORTING
#1 = p_top "起始行
#2 = p_left. "起始列
CALL METHOD OF excel 'CELLS' = cell2 "单元格结束点
EXPORTING
#1 = p_buttom "结束行
#2 = p_right. "结束列
CALL METHOD OF excel 'RANGE' = range "以开始点结束点形成范围(X轴Y轴二维)
EXPORTING
#1 = cell1
#2 = cell2.
CALL METHOD OF range 'SELECT'. "选中范围单元格对象
CALL METHOD OF range 'MERGE' . "单元格合并对象
SET PROPERTY OF range 'MergeCells' = 1. "合并居中
SET PROPERTY OF range 'WrapText' = 1. "自动换行
* 设定对齐方式(水平方向:1——无对齐; 2——左对齐; 3——居中 ;4——右对齐)
* (垂直方向:1——左对齐; 2——居中 ;3——右对齐)
SET PROPERTY OF range 'HorizontalAlignment' = P_Alignment . "横向对齐
SET PROPERTY OF range 'VerticalAlignment' = 2. "纵向对齐
GET PROPERTY OF range 'COLUMNS' = COLS . "获取列属性
SET PROPERTY OF COLS 'COLUMNWIDTH' = 2. "设定列宽
GET PROPERTY OF range 'ROWS' = ROWS. "获取行对象
SET PROPERTY OF ROWS 'ROWHEIGHT' = P_HIGHT. "设置行高
* 设定单元格字体属性
CALL METHOD OF range 'FONT' = font. "字体方法
SET PROPERTY OF font 'Bold' = P_BOLD. "粗体
SET PROPERTY OF font 'Name' = '宋体'. "字体体
SET PROPERTY OF font 'Size' = 11. "字体大小
SET PROPERTY OF range 'NumberFormatLocal' = 'G/通用格式'. "设定字体格式
* 设定边框
CALL METHOD OF range 'BORDERS' = borders. "设置边框
SET PROPERTY OF borders 'LineStyle' = '1'. "边框样式
SET PROPERTY OF borders 'WEIGHT' = '2'. "边框宽度
SET PROPERTY OF borders 'ColorIndex' = '0'.
* 给单元格输入内容
SET PROPERTY OF cell1 'VALUE' = U_VALUE. "表格设定值
针对单元格对的属性设定需要先选中单元格,也就是rang对象要存在
3 保存释放对象
SET PROPERTY OF excel 'DisplayAlerts' = 'false'. "屏蔽是否另存为提示框
* SET PROPERTY OF excel 'SCREENUPDATING' = 1. "打开刷新 (这个暂时没有搞懂啥作用)
GET PROPERTY OF excel 'ActiveWorkbook' = workbook. "获取当前操作的工作簿
CALL METHOD OF workbook 'SAVEAS' "工作簿保存
EXPORTING
#1 = filename
#2 = 1.
CALL METHOD OF workbook 'CLOSE'. "关闭工作簿
CALL METHOD OF "关闭EXCEL程序(仅限程序创建的活动)
excel
'QUIT'.
FREE OBJECT excel. "释放对象(最好是把所有的对象都释放掉)
FREE OBJECT workbook.
4.OLE很多属性可以用EXCEL的宏录制出来查看,然后转化为ABAP的OLE,如下面的宏代码,有些属性不知道的可以录制宏查看
此处为EXCEL宏代码
Range("J2:W3").Select "选中区域
With Selection
.HorizontalAlignment = xlCenter "横向对齐方式
.VerticalAlignment = xlBottom "纵向对齐方式
.WrapText = True "自动换行
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = True "合并居中
End With
下面是一些其它资料转载下大神作品