ABAP将内表数据写入Excel 2003的通用方法
2009-06-09 09:48
357 查看
*&---------------------------------------------------------------------*
*& Include ZOLEEXCEL *
*&---------------------------------------------------------------------*
*INCLUDE ole2incl.
*TABLES:rlgrap.
*
*DATA: sheetname(10) VALUE 'exp ',c_row TYPE i,
* scnt TYPE i,
* val(20), wb(2),
* msgtxt(50) type c .
*
*DATA: excel_obj TYPE ole2_object,
* workbook_obj TYPE ole2_object,
* workbook2_obj TYPE ole2_object,
* sheet_obj TYPE ole2_object,
* sheet2_obj TYPE ole2_object,
* cell_obj TYPE ole2_object,
* cell1_obj TYPE ole2_object,
* column_obj TYPE ole2_object,
* range_obj TYPE ole2_object,
* borders_obj TYPE ole2_object,
* button_obj TYPE ole2_object,
* int_obj TYPE ole2_object,
* font_obj TYPE ole2_object,
* row_obj TYPE ole2_object,
* align_obj TYPE ole2_object.
*
*DATA: application TYPE ole2_object,
* book TYPE ole2_object,
* books TYPE ole2_object.
*DATA: ole_book TYPE ole2_object.
*&---------------------------------------------------------------------------------------------------------------------------------------------------------------*
*&
*& 该Include,由ZMB51(zmmr0039)试用,不可做轻易改动,如需要使用,直接调用方法便可(2009-03-31)
*& 调用该Include,在您的程序中必须满足上面变量的定义,然后在调用本Include
*&---------------------------------------------------------------------------------------------------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Form create_excel_obj *
*& *
*&---------------------------------------------------------------------*
*& 创建一个excel应用程序 *
*&---------------------------------------------------------------------*
*& *
*&---------------------------------------------------------------------*
FORM
create_excel_obj . "start create_excel_obj .
CREATE
OBJECT excel_obj 'excel.APPLICATION'
.
perform
exception_excel using
'create excel application error'
.
CALL
METHOD
OF
excel_obj 'WORKBOOKS'
= workbook_obj .
msgtxt = '正在创建excel文件'
.
CALL
FUNCTION
'SAPGUI_PROGRESS_INDICATOR'
EXPORTING
TEXT
= msgtxt
EXCEPTIONS
OTHERS
= 1
.
CALL
METHOD
OF
workbook_obj 'ADD'
= workbook2_obj.
perform
exception_excel using
'create excel workbook error'
.
ENDFORM
. " end create_obj
*&---------------------------------------------------------------------*
*& Form create_shheet_obj *
*& *
*&---------------------------------------------------------------------*
*& 创建工作表 *
*&---------------------------------------------------------------------*
*& *
*&---------------------------------------------------------------------*
FORM
create_sheet_obj .
CALL
METHOD
OF
excel_obj 'WORKSHEETS'
= sheet_obj .
msgtxt = '正在为sheet命名'
.
CALL
FUNCTION
'SAPGUI_PROGRESS_INDICATOR'
EXPORTING
TEXT
= msgtxt
EXCEPTIONS
OTHERS
= 1
.
CALL
METHOD
OF
sheet_obj 'ADD'
= sheet2_obj.
* CALL METHOD OF sheet_obj 'ACTIVATE'.
SET
PROPERTY
OF
sheet2_obj 'NAME'
= 'exp'
.
perform
exception_excel using
'工作表命名出错'
.
ENDFORM
.
*&---------------------------------------------------------------------*
*& Form fill_cell *
*& *
*&---------------------------------------------------------------------*
*& 填充单元格内容 *
*&---------------------------------------------------------------------*
*& p1->text p2->text *
*& p3->text p4->text *
*&---------------------------------------------------------------------*
FORM
fill_cell using
i
j bold val . "set value or set cell
CALL
METHOD
OF
excel_obj 'Cells'
= cell_obj EXPORTING
#1
= I
#2
= J.
* PERFORM exception_excel using 'read error,please export again'.
data
: l_row(4
) ,
l_col(4
) .
l_row = i
.
l_col = j .
CLEAR
msgtxt .
CONCATENATE
'正在写入单元格第'
l_row '行,第'
l_col '列'
INTO
msgtxt.
CALL
FUNCTION
'SAPGUI_PROGRESS_INDICATOR'
EXPORTING
TEXT
= msgtxt
EXCEPTIONS
OTHERS
= 1
.
SET
PROPERTY
OF
cell_obj 'Value'
= VAL .
* PERFORM exception_excel using 'read error,please export again'.
GET
PROPERTY
OF
cell_obj 'Font'
= font_obj.
* PERFORM exception_excel using 'read error,please export again'.
SET
PROPERTY
OF
font_obj 'Bold'
= bold .
* PERFORM exception_excel using 'read error,please export again'.
ENDFORM
. "end fill_cell
*&---------------------------------------------------------------------*
*& Form set_cell_style *
*& *
*&---------------------------------------------------------------------*
*& 设置单元格样式—宽度—对齐方式 *
*&---------------------------------------------------------------------*
*& p1->text p2->text *
*& p3->text p4->text *
*&---------------------------------------------------------------------*
FORM
set_cell_style using
i
j width align.
CALL
METHOD
OF
excel_obj 'Cells'
= cell_obj EXPORTING
#1
= I
#2
= J.
* PERFORM exception_excel using 'set cell obj error'.
SET
PROPERTY
OF
cell_obj 'ColumnWidth'
= width .
* PERFORM exception_excel using 'set cell width error'.
SET
PROPERTY
OF
cell_obj 'HorizontalAlignment'
= align . "对齐方式取值:1保持原有格式,2左对齐,3居中,4右对齐
* PERFORM exception_excel using 'set cell alignment error'.
ENDFORM
.
*&---------------------------------------------------------------------*
*& Form set_font_style *
*& *
*&---------------------------------------------------------------------*
*& 设置字体样式—大小—颜色 *
*&---------------------------------------------------------------------*
*& p1->text p2->text *
*& p3->text p4->text *
*&---------------------------------------------------------------------*
FORM
set_font_style using
i
j size
color
. "set font-size color.颜色代码可通过录制宏得到
CALL
METHOD
OF
excel_obj 'Cells'
= cell_obj EXPORTING
#1
= I
#2
= J.
* PERFORM exception_excel using 'set cell error'.
CALL
METHOD
OF
cell_obj 'Font'
= font_obj .
SET
PROPERTY
OF
font_obj 'SIZE'
= size
.
* PERFORM exception_excel using 'set font size error'.
SET
PROPERTY
OF
font_obj 'Color'
= color
.
* PERFORM exception_excel using 'set font color error'.
ENDFORM
.
*&---------------------------------------------------------------------*
*& Form set_font_style *
*& *
*&---------------------------------------------------------------------*
*& 设置单元格样式—边框线 *
*&---------------------------------------------------------------------*
*& p1->text p2->text *
*& p3->text *
*&---------------------------------------------------------------------*
FORM
set_cell_border using
i
j w.
CALL
METHOD
OF
excel_obj 'Cells'
= cell_obj EXPORTING
#1
= I
#2
= J.
* PERFORM exception_excel using 'set cell obj error'.
CALL
METHOD
OF
cell_obj 'BORDERS'
= borders_obj "左边框
EXPORTING
#1
= '1'
.
SET
PROPERTY
OF
borders_obj 'LineStyle'
= '1'
. "线条样式
SET
PROPERTY
OF
borders_obj 'WEIGHT'
= w. "4=max 边框线的粗细程度
SET
PROPERTY
OF
borders_obj 'ColorIndex'
= '1'
. "颜色
FREE
OBJECT borders_obj.
CALL
METHOD
OF
cell_obj 'BORDERS'
= borders_obj "右边框
EXPORTING
#1
= '2'
.
SET
PROPERTY
OF
borders_obj 'LineStyle'
= '1'
.
SET
PROPERTY
OF
borders_obj 'WEIGHT'
= w.
SET
PROPERTY
OF
borders_obj 'ColorIndex'
= '1'
.
FREE
OBJECT borders_obj.
CALL
METHOD
OF
cell_obj 'BORDERS'
= borders_obj "上(顶)边框
EXPORTING
#1
= '3'
.
SET
PROPERTY
OF
borders_obj 'LineStyle'
= '1'
.
SET
PROPERTY
OF
borders_obj 'WEIGHT'
= w.
SET
PROPERTY
OF
borders_obj 'ColorIndex'
= '1'
.
FREE
OBJECT borders_obj.
CALL
METHOD
OF
cell_obj 'BORDERS'
= borders_obj "下(底)边框
EXPORTING
#1
= '4'
.
SET
PROPERTY
OF
borders_obj 'LineStyle'
= '1'
.
SET
PROPERTY
OF
borders_obj 'WEIGHT'
= w.
SET
PROPERTY
OF
borders_obj 'ColorIndex'
= '1'
.
FREE
OBJECT borders_obj.
ENDFORM
.
*&---------------------------------------------------------------------*
*& Form fill_error *
*& *
*&---------------------------------------------------------------------*
*& 错语处理 *
*&---------------------------------------------------------------------*
*& *
*&---------------------------------------------------------------------*
FORM
fill_error.
msgtxt = '写入excel出错'
.
CALL
FUNCTION
'SAPGUI_PROGRESS_INDICATOR'
EXPORTING
TEXT
= msgtxt
EXCEPTIONS
OTHERS
= 1
.
CALL
METHOD
OF
workbook_obj 'CLOSE'
.
CALL
METHOD
OF
excel_obj 'QUIT'
.
FREE
OBJECT sheet_obj .
FREE
OBJECT workbook_obj .
FREE
OBJECT excel_obj .
ENDFORM
.
*&---------------------------------------------------------------------*
*& Form exception_ *
*& *
*&---------------------------------------------------------------------*
*& 发生异常 *
*&---------------------------------------------------------------------*
*& *
*&---------------------------------------------------------------------*
FORM
exception_excel using
val. "throws exception
IF
sy-subrc NE
0
.
perform
fill_error .
WRITE
: / val.
STOP
.
ENDIF
.
ENDFORM
.
*& Include ZOLEEXCEL *
*&---------------------------------------------------------------------*
*INCLUDE ole2incl.
*TABLES:rlgrap.
*
*DATA: sheetname(10) VALUE 'exp ',c_row TYPE i,
* scnt TYPE i,
* val(20), wb(2),
* msgtxt(50) type c .
*
*DATA: excel_obj TYPE ole2_object,
* workbook_obj TYPE ole2_object,
* workbook2_obj TYPE ole2_object,
* sheet_obj TYPE ole2_object,
* sheet2_obj TYPE ole2_object,
* cell_obj TYPE ole2_object,
* cell1_obj TYPE ole2_object,
* column_obj TYPE ole2_object,
* range_obj TYPE ole2_object,
* borders_obj TYPE ole2_object,
* button_obj TYPE ole2_object,
* int_obj TYPE ole2_object,
* font_obj TYPE ole2_object,
* row_obj TYPE ole2_object,
* align_obj TYPE ole2_object.
*
*DATA: application TYPE ole2_object,
* book TYPE ole2_object,
* books TYPE ole2_object.
*DATA: ole_book TYPE ole2_object.
*&---------------------------------------------------------------------------------------------------------------------------------------------------------------*
*&
*& 该Include,由ZMB51(zmmr0039)试用,不可做轻易改动,如需要使用,直接调用方法便可(2009-03-31)
*& 调用该Include,在您的程序中必须满足上面变量的定义,然后在调用本Include
*&---------------------------------------------------------------------------------------------------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Form create_excel_obj *
*& *
*&---------------------------------------------------------------------*
*& 创建一个excel应用程序 *
*&---------------------------------------------------------------------*
*& *
*&---------------------------------------------------------------------*
FORM
create_excel_obj . "start create_excel_obj .
CREATE
OBJECT excel_obj 'excel.APPLICATION'
.
perform
exception_excel using
'create excel application error'
.
CALL
METHOD
OF
excel_obj 'WORKBOOKS'
= workbook_obj .
msgtxt = '正在创建excel文件'
.
CALL
FUNCTION
'SAPGUI_PROGRESS_INDICATOR'
EXPORTING
TEXT
= msgtxt
EXCEPTIONS
OTHERS
= 1
.
CALL
METHOD
OF
workbook_obj 'ADD'
= workbook2_obj.
perform
exception_excel using
'create excel workbook error'
.
ENDFORM
. " end create_obj
*&---------------------------------------------------------------------*
*& Form create_shheet_obj *
*& *
*&---------------------------------------------------------------------*
*& 创建工作表 *
*&---------------------------------------------------------------------*
*& *
*&---------------------------------------------------------------------*
FORM
create_sheet_obj .
CALL
METHOD
OF
excel_obj 'WORKSHEETS'
= sheet_obj .
msgtxt = '正在为sheet命名'
.
CALL
FUNCTION
'SAPGUI_PROGRESS_INDICATOR'
EXPORTING
TEXT
= msgtxt
EXCEPTIONS
OTHERS
= 1
.
CALL
METHOD
OF
sheet_obj 'ADD'
= sheet2_obj.
* CALL METHOD OF sheet_obj 'ACTIVATE'.
SET
PROPERTY
OF
sheet2_obj 'NAME'
= 'exp'
.
perform
exception_excel using
'工作表命名出错'
.
ENDFORM
.
*&---------------------------------------------------------------------*
*& Form fill_cell *
*& *
*&---------------------------------------------------------------------*
*& 填充单元格内容 *
*&---------------------------------------------------------------------*
*& p1->text p2->text *
*& p3->text p4->text *
*&---------------------------------------------------------------------*
FORM
fill_cell using
i
j bold val . "set value or set cell
CALL
METHOD
OF
excel_obj 'Cells'
= cell_obj EXPORTING
#1
= I
#2
= J.
* PERFORM exception_excel using 'read error,please export again'.
data
: l_row(4
) ,
l_col(4
) .
l_row = i
.
l_col = j .
CLEAR
msgtxt .
CONCATENATE
'正在写入单元格第'
l_row '行,第'
l_col '列'
INTO
msgtxt.
CALL
FUNCTION
'SAPGUI_PROGRESS_INDICATOR'
EXPORTING
TEXT
= msgtxt
EXCEPTIONS
OTHERS
= 1
.
SET
PROPERTY
OF
cell_obj 'Value'
= VAL .
* PERFORM exception_excel using 'read error,please export again'.
GET
PROPERTY
OF
cell_obj 'Font'
= font_obj.
* PERFORM exception_excel using 'read error,please export again'.
SET
PROPERTY
OF
font_obj 'Bold'
= bold .
* PERFORM exception_excel using 'read error,please export again'.
ENDFORM
. "end fill_cell
*&---------------------------------------------------------------------*
*& Form set_cell_style *
*& *
*&---------------------------------------------------------------------*
*& 设置单元格样式—宽度—对齐方式 *
*&---------------------------------------------------------------------*
*& p1->text p2->text *
*& p3->text p4->text *
*&---------------------------------------------------------------------*
FORM
set_cell_style using
i
j width align.
CALL
METHOD
OF
excel_obj 'Cells'
= cell_obj EXPORTING
#1
= I
#2
= J.
* PERFORM exception_excel using 'set cell obj error'.
SET
PROPERTY
OF
cell_obj 'ColumnWidth'
= width .
* PERFORM exception_excel using 'set cell width error'.
SET
PROPERTY
OF
cell_obj 'HorizontalAlignment'
= align . "对齐方式取值:1保持原有格式,2左对齐,3居中,4右对齐
* PERFORM exception_excel using 'set cell alignment error'.
ENDFORM
.
*&---------------------------------------------------------------------*
*& Form set_font_style *
*& *
*&---------------------------------------------------------------------*
*& 设置字体样式—大小—颜色 *
*&---------------------------------------------------------------------*
*& p1->text p2->text *
*& p3->text p4->text *
*&---------------------------------------------------------------------*
FORM
set_font_style using
i
j size
color
. "set font-size color.颜色代码可通过录制宏得到
CALL
METHOD
OF
excel_obj 'Cells'
= cell_obj EXPORTING
#1
= I
#2
= J.
* PERFORM exception_excel using 'set cell error'.
CALL
METHOD
OF
cell_obj 'Font'
= font_obj .
SET
PROPERTY
OF
font_obj 'SIZE'
= size
.
* PERFORM exception_excel using 'set font size error'.
SET
PROPERTY
OF
font_obj 'Color'
= color
.
* PERFORM exception_excel using 'set font color error'.
ENDFORM
.
*&---------------------------------------------------------------------*
*& Form set_font_style *
*& *
*&---------------------------------------------------------------------*
*& 设置单元格样式—边框线 *
*&---------------------------------------------------------------------*
*& p1->text p2->text *
*& p3->text *
*&---------------------------------------------------------------------*
FORM
set_cell_border using
i
j w.
CALL
METHOD
OF
excel_obj 'Cells'
= cell_obj EXPORTING
#1
= I
#2
= J.
* PERFORM exception_excel using 'set cell obj error'.
CALL
METHOD
OF
cell_obj 'BORDERS'
= borders_obj "左边框
EXPORTING
#1
= '1'
.
SET
PROPERTY
OF
borders_obj 'LineStyle'
= '1'
. "线条样式
SET
PROPERTY
OF
borders_obj 'WEIGHT'
= w. "4=max 边框线的粗细程度
SET
PROPERTY
OF
borders_obj 'ColorIndex'
= '1'
. "颜色
FREE
OBJECT borders_obj.
CALL
METHOD
OF
cell_obj 'BORDERS'
= borders_obj "右边框
EXPORTING
#1
= '2'
.
SET
PROPERTY
OF
borders_obj 'LineStyle'
= '1'
.
SET
PROPERTY
OF
borders_obj 'WEIGHT'
= w.
SET
PROPERTY
OF
borders_obj 'ColorIndex'
= '1'
.
FREE
OBJECT borders_obj.
CALL
METHOD
OF
cell_obj 'BORDERS'
= borders_obj "上(顶)边框
EXPORTING
#1
= '3'
.
SET
PROPERTY
OF
borders_obj 'LineStyle'
= '1'
.
SET
PROPERTY
OF
borders_obj 'WEIGHT'
= w.
SET
PROPERTY
OF
borders_obj 'ColorIndex'
= '1'
.
FREE
OBJECT borders_obj.
CALL
METHOD
OF
cell_obj 'BORDERS'
= borders_obj "下(底)边框
EXPORTING
#1
= '4'
.
SET
PROPERTY
OF
borders_obj 'LineStyle'
= '1'
.
SET
PROPERTY
OF
borders_obj 'WEIGHT'
= w.
SET
PROPERTY
OF
borders_obj 'ColorIndex'
= '1'
.
FREE
OBJECT borders_obj.
ENDFORM
.
*&---------------------------------------------------------------------*
*& Form fill_error *
*& *
*&---------------------------------------------------------------------*
*& 错语处理 *
*&---------------------------------------------------------------------*
*& *
*&---------------------------------------------------------------------*
FORM
fill_error.
msgtxt = '写入excel出错'
.
CALL
FUNCTION
'SAPGUI_PROGRESS_INDICATOR'
EXPORTING
TEXT
= msgtxt
EXCEPTIONS
OTHERS
= 1
.
CALL
METHOD
OF
workbook_obj 'CLOSE'
.
CALL
METHOD
OF
excel_obj 'QUIT'
.
FREE
OBJECT sheet_obj .
FREE
OBJECT workbook_obj .
FREE
OBJECT excel_obj .
ENDFORM
.
*&---------------------------------------------------------------------*
*& Form exception_ *
*& *
*&---------------------------------------------------------------------*
*& 发生异常 *
*&---------------------------------------------------------------------*
*& *
*&---------------------------------------------------------------------*
FORM
exception_excel using
val. "throws exception
IF
sy-subrc NE
0
.
perform
fill_error .
WRITE
: / val.
STOP
.
ENDIF
.
ENDFORM
.
相关文章推荐
- java中用poi处理Excel表格之写入(2003和2007通用方法)
- PHP-Excel读取导入Excel数据到数据库(2003,2007通用)使用方法
- java把class类写入excel和读取出来的通用方法
- C#数据库数据导出Excel通用方法
- NET使用NPOI组件将数据导出Excel-通用方法 【推荐】
- 按键精灵如何调用Excel及按键精灵写入Excel数据的方法教程---入门自动操作表格
- 2003版excel 删除某列数据相同的行只保留一行的方法
- java中用poi处理Excel表格之读取(2003和2007通用方法)
- C# 把DataTable数据写入Excel文件的方法
- 快速写入Excel(将数据转换为二维数组,再使用Range方法)
- ABAP 对内表数据下载到EXCEL的几种方法
- Access和Excel数据库表32位64位程序通用访问方法
- NET使用NPOI组件将数据导出Excel-通用方法 【推荐】
- C#实现向已存在的Excel文件中写入数据实例(两种方法)
- python读取excel指定列数据并写入到新的excel方法
- 利用python对Excel中的特定数据提取并写入新表的方法
- .NET-使用NPOI组件将数据导出Excel-通用方法
- POI分sheet导出Excel或者zip通用高速方法(万条数据以上)
- Python实现读写sqlite3数据库并将统计数据写入Excel的方法示例
- C#导出数据到Excel通用的方法类