ABAP_Excel 处理总结

ABAP_Excel 处理总结
1调用原理
1.1创建对象
首先定义OLE对象,创建OLE对象为excel类型。定义格式如下:CREATE OBJECT application 'excel.APPLICATION'.
然后通过excel对象application,创建与excel对应的workbook,sheet,range,cell等对象。
再次通过调用各个对象的方法及属性等,实现对excel的操作。
1.2Excel宏
利用宏可以查看各个excel对象的方法和属性。宏的录制和利用参见文档:
(略)
2方法用例
*&---------------------------------------------------------------------*
*& Report ZDEALEXCEL
*& Author ALEX
*& Date 2009.10
*&
*&---------------------------------------------------------------------*
*& 本程序总结了常用的ABAP对EXCEL的操作,包括如下子例程
*& 方法名 方法说明
*& (1) create_excel 创建excel
*& (2) insert_row 插入行
*& (3) fill_cell 填充单元格
*& (4) columnwidth 调整列宽
*& (5) create_sheet 创建sheet
*& (6) copy_sheet_all sheet复制
*& (7) copy_sheet_area sheet区域复制
*& (8) copy_cells 复制单元格
*& (9) range_borders 边框粗细
*& (10) row_color 行颜色
*& (11) preview_excel 预览
*& (12) free_object 释放对象
*& (13) close_excel 关闭excel
*& (14) download_excel_fromserver 从服务器下载excel模板(进入模板事务代码SMW0)
*& (15) open_excel_hide 隐蔽打开excel
*& (16) open_excel 打开excel
*& (17) open_excel_sheet 打开指定的excel的sheet
*& (18) open_excel_by_sheet 打开sheet
*& (19) select_range 选择范围
*& (20) clear_data 清除数据
*& (21) merge_cells 合并单元格
*& (22) process_indcator 进度指示
*& (23) delete_row 删除行
*& (24) add_comment 添加注释
*& (25) hide_columns 隐藏列
*& (26) delete_columns 删除列
*& (27) hide_row 隐藏行
* 保护工作区 lock_unlock_excel :未完成
* 保护整个工作表 lock_sheet : 未完成
*& 本示例程序作为ABAP对EXCEL操作的参考,可以根据需要做适当的调整
*&---------------------------------------------------------------------*
REPORT zdealexcel.
TYPE-POOLS ole2.
TABLES sscrfields.

DEFINE m_message.
case sy-subrc.
when '0'.
when others.
message e000(zmeg)
with sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
endcase.
END-OF-DEFINITION.

DATA: application TYPE ole2_object, "excel object
workbook TYPE ole2_object, "excel workbook objcet
sheet TYPE ole2_object, "workbook sheet object
columns TYPE ole2_object, "sheet col objcet
rows TYPE ole2_object, "sheet row objcet
range TYPE ole2_object, "range
range1 TYPE ole2_object, "range1
font TYPE ole2_object, "font
cell TYPE ole2_object, "cell
cell1 TYPE ole2_object, "cell1
sheet1 TYPE ole2_object, "workbook sheet object
borders TYPE ole2_object. "borders


DATA: index TYPE i VALUE 0.

*定义模板下载到本地保存的全名称
DATA: p_down_file LIKE sapb-sappfad. "定义模板下载到本地保存的全名称


*演示excel操作
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN: PUSHBUTTON 01(12) but0 USER-COMMAND cli0,
PUSHBUTTON 20(15) but2 USER-COMMAND cli2.
SELECTION-SCREEN END OF LINE.


*导入数据块
SELECTION-SCREEN BEGIN OF BLOCK status2 WITH FRAME TITLE text-f02.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 1(20) text-002.
PARAMETERS: p_file LIKE rlgrap-filename.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN END OF BLOCK status2.

*导出数据块
SELECTION-SCREEN BEGIN OF BLOCK status3 WITH FRAME TITLE text-f03 .
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 1(20) text-003.
PARAMETERS: p_down LIKE rlgrap-filename.
SELECTION-SCREEN:
PUSHBUTTON 75(20) but1 USER-COMMAND cli1.
SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN END OF BLOCK status3.

INITIALIZATION.
CREATE OBJECT application 'excel.APPLICATION'.
but0 = '演示excel操作'. "初始化导出button显示名称
but1 = '导出'. "初始化导出button显示名称
but2 = '从模板导出excel'. "从模板导出excel

*-------------------------设置文件上载-------------------------
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.
CALL FUNCTION 'WS_FILENAME_GET'
EXPORTING
def_path = p_file
mask = ',*.*.'
mode = 'O'
title = text-f01
IMPORTING
filename = p_file
EXCEPTIONS
inv_winsys = 1
no_batch = 2
selection_cancel = 3
selection_error = 4
OTHERS = 5.
CHECK sy-subrc = 0 AND NOT p_file IS INITIAL.

*-------------------------设置文件下载-------------------------
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_down.
CALL FUNCTION 'WS_FILENAME_GET'
EXPORTING
def_path = p_down
mask = ',*.xls,*.xls.'
mode = 'S'
title = text-f02
IMPORTING
filename = p_down
EXCEPTIONS
inv_winsys = 1
no_batch = 2
selection_cancel = 3
selection_error = 4
OTHERS = 5.
CHECK sy-subrc = 0 AND NOT p_down IS INITIAL.

*--------------------------------------------------------------
AT SELECTION-SCREEN.
IF sscrfields-ucomm EQ 'CLI1'.
IF p_down IS INITIAL.
MESSAGE e804(zdev).
ELSE.
p_down_file = p_down.
PERFORM download_excel_fromserver USING 'ZHRI0004' p_down_file . "下载模板到本地
MESSAGE i600(zdev) WITH '模板导出成功'.
ENDIF.
ELSEIF sscrfields-ucomm EQ 'ONLI'.
IF p_file IS INITIAL.
MESSAGE e803(zdev).
ENDIF.
ELSEIF sscrfields-ucomm EQ 'CLI0'.
PERFORM demo_forms.
ELSEIF sscrfields-ucomm EQ 'CLI2'.
PERFORM demo_forms_server USING p_file.
ENDIF.

START-OF-SELECTION.
PERFORM open_excel_hide USING p_file.
PERFORM close_excel.
PERFORM open_excel USING p_file.
PERFORM close_excel.
PERFORM open_excel_sheet USING 'sheet2' p_file.

DO 10 TIMES.
PERFORM insert_row USING 1.
PERFORM fill_cell USING 1 1 0 'e'.
PERFORM fill_cell USING 1 2 0 'f'.
PERFORM fill_cell USING 1 3 0 'g'.
index = index + 1.
ENDDO.

PERFORM close_excel.
PERFORM free_object.

*&---------------------------------------------------------------------*
*& Form demo_forms_server
*&---------------------------------------------------------------------*
* 从SMW0下载excel模板
*----------------------------------------------------------------------*
* -->P_FILE excel本地路径
*----------------------------------------------------------------------*
FORM demo_forms_server USING p_file.
p_down_file = p_file.

PERFORM process_indcator USING '程序正在下载模板' 0 .
PERFORM download_excel_fromserver USING 'ZHRI0004' p_down_file .

PERFORM process_indcator USING '程序正在初始化OLE控件' 0 .

PERFORM process_indcator USING '程序正在打开excel文档' 0 .

PERFORM open_excel_sheet USING '处分处罚信息批导入' p_file.


DO 10 TIMES.
PERFORM insert_row USING 5.
PERFORM fill_cell USING 5 1 0 'e'.
PERFORM fill_cell USING 5 2 0 'f'.
PERFORM fill_cell USING 5 3 0 'g'.
index = index + 1.
ENDDO.

PERFORM clear_data USING 1 6 2 7.
PERFORM merge_cells USING 1 6 2 7.
PERFORM add_comment USING 8 1 'OK'.
PERFORM close_excel.
PERFORM free_object.

ENDFORM. "demo_forms_server

*&---------------------------------------------------------------------*
*& Form demo_forms
*&---------------------------------------------------------------------*
* 演示用form
*----------------------------------------------------------------------*
FORM demo_forms.
PERFORM create_excel.

DO 10 TIMES.
PERFORM insert_row USING 1.
PERFORM fill_cell USING 1 1 0 'a'.
PERFORM fill_cell USING 1 2 0 'b'.
PERFORM fill_cell USING 1 3 0 'c'.
index = index + 1.
ENDDO.

PERFORM columnwidth USING 'A:C' '' .
PERFORM create_sheet.
PERFORM create_sheet.
PERFORM copy_sheet_all.
PERFORM copy_sheet_area.
PERFORM copy_cells.
PERFORM range_borders.
PERFORM row_color USING 1.

PERFORM preview_excel.
PERFORM del_sheet USING 'sheet2'.
PERFORM free_object.
ENDFORM. "demo_forms


*&---------------------------------------------------------------------*
*& (1) Form create_excel
*&---------------------------------------------------------------------*
* 创建excel
*----------------------------------------------------------------------*
FORM create_excel.
IF sy-subrc <> 0.
MESSAGE 'EXCEL ERROR' TYPE 'S' DISPLAY LIKE 'E'.
STOP.
ENDIF.
CALL METHOD OF application 'WORKBOOKS' = workbook.
SET PROPERTY OF application 'VISIBLE' = 1.
SET PROPERTY OF application 'SHEETSINNEWWORKBOOK' = 1.
CALL METHOD OF workbook 'ADD' = sheet.
CALL METHOD OF sheet 'ACTIVE'.
ENDFORM. "create_excel

*&---------------------------------------------------------------------*
*& (2) Form insert_row
*&---------------------------------------------------------------------*
* 根据行号插入一行
*----------------------------------------------------------------------*
* -->I_ROW 行号
*----------------------------------------------------------------------*
FORM insert_row USING i_row.
CALL METHOD OF application 'ROWS' = rows
EXPORTING
#1 = i_row.
CALL METHOD OF rows 'INSERT'.
ENDFORM. "insert_row

*&---------------------------------------------------------------------*
*& (3) Form fill_cell
*&---------------------------------------------------------------------*
* 填充单元格
*----------------------------------------------------------------------*
* -->I_ROW 行号
* -->I_COL 列号
* -->BOLD 是否加粗
* -->P_VALUE 值
*----------------------------------------------------------------------*
FORM fill_cell USING i_row i_col bold p_value.
CALL METHOD OF application 'CELLS' = cell
EXPORTING
#1 = i_row
#2 = i_col.
SET PROPERTY OF cell 'VALUE' = p_value.
SET PROPERTY OF cell 'HORIZONTALALIGNMENT' = 2.

GET PROPERTY OF cell 'FONT' = font.
SET PROPERTY OF font 'BOLD' = bold.
SET PROPERTY OF font 'COLORINDEX' = 41.

CALL METHOD OF cell 'BORDERS' = borders
EXPORTING
#1 = '2'.
SET PROPERTY OF borders 'LINESTYLE' = '0'.
SET PROPERTY OF borders 'WEIGHT' = 0.
ENDFORM. "fill_cell


*&---------------------------------------------------------------------*
*& (4) Form columnwidth
*&---------------------------------------------------------------------*
* 设置列宽为自动或是固定值
*----------------------------------------------------------------------*
* -->COLNUM 列号,可以为单个列或是多个列
* -->WIDTH 列宽值
*----------------------------------------------------------------------*
FORM columnwidth USING colnum width.
CALL METHOD OF application 'COLUMNS' = columns
EXPORTING
#1 = colnum.
IF width = ''.

CALL METHOD OF columns 'AutoFit'.
ELSE.
SET PROPERTY OF columns 'COLUMNWIDTH' = width.
ENDIF.
ENDFORM. "columnwidth

*&---------------------------------------------------------------------*
*& (5) Form create_sheet
*&---------------------------------------------------------------------*
* 创建sheet
*----------------------------------------------------------------------*
FORM create_sheet.
CALL METHOD OF application 'sheets' = sheet.
CALL METHOD OF sheet 'ADD'.
ENDFORM. "create_sheet

*&---------------------------------------------------------------------*
*& (6) Form copy_sheet_all
*&---------------------------------------------------------------------*
* 复制sheet全部内容到另一个sheet
*----------------------------------------------------------------------*
FORM copy_sheet_all.
CALL METHOD OF application 'Sheets' = sheet
EXPORTING
#1 = 'Sheet1'.
CALL METHOD OF sheet 'Cells' = cell.
CALL METHOD OF cell 'copy'.

CALL METHOD OF application 'Sheets' = sheet
EXPORTING
#1 = 'Sheet3'.
CALL METHOD OF application 'Range' = range
EXPORTING
#1 = 'A1'.
CALL METHOD OF range 'PasteSpecial'.

ENDFORM. "copy_sheet_all

*&---------------------------------------------------------------------*
*& (7) Form copy_sheet_area
*&---------------------------------------------------------------------*
* 复制sheet部分内容到另一个sheet
*----------------------------------------------------------------------*
FORM copy_sheet_area.
CALL METHOD OF application 'Sheets' = sheet
EXPORTING
#1 = 'Sheet1'.
CALL METHOD OF sheet 'Range' = range
EXPORTING
#1 = 'A1'
#2 = 'B10'.
CALL METHOD OF range 'copy'.

CALL METHOD OF application 'Sheets' = sheet1
EXPORTING
#1 = 'Sheet2'.
CALL METHOD OF sheet1 'Range' = range1
EXPORTING
#1 = 'A1'
#2 = 'B10'.
CALL METHOD OF range1 'PasteSpecial'.

ENDFORM. "copy_sheet_area

*&---------------------------------------------------------------------*
*& (8) Form copy_cells
*&---------------------------------------------------------------------*
* 在一个sheet内复制单元格
*----------------------------------------------------------------------*
FORM copy_cells.
CALL METHOD OF application 'Sheets' = sheet
EXPORTING
#1 = 'Sheet1'.
CALL METHOD OF sheet 'Range' = range
EXPORTING
#1 = 'A1'
#2 = 'B10'.
CALL METHOD OF range 'copy'.


CALL METHOD OF sheet 'Range' = range1
EXPORTING
#1 = 'A12'
#2 = 'B22'.
CALL METHOD OF range1 'PasteSpecial'.

ENDFORM. "copy_cells

*&---------------------------------------------------------------------*
*& (9) Form range_borders
*&---------------------------------------------------------------------*
* 指定range加边框
*----------------------------------------------------------------------*
FORM range_borders.
CALL METHOD OF application 'Range' = range
EXPORTING
#1 = 'A1'
#2 = 'B10'.
CALL METHOD OF range 'BORDERS' = borders.
SET PROPERTY OF borders 'LINESTYLE' = 1.
SET PROPERTY OF borders 'WEIGHT' = 10.

ENDFORM. "range_borders


*&---------------------------------------------------------------------*
*& (10) Form row_color
*&---------------------------------------------------------------------*
* 设定行背景色
*----------------------------------------------------------------------*
* -->I_ROW 行号
*----------------------------------------------------------------------*
FORM row_color USING i_row.
CALL METHOD OF application 'ROWS' = rows
EXPORTING
#1 = i_row.
GET PROPERTY OF rows 'Interior' = font.
SET PROPERTY OF font 'ColorIndex' = '10'.
ENDFORM. "row_color

*&---------------------------------------------------------------------*
*& (11) Form preview_excel
*&---------------------------------------------------------------------*
* 预览excel
*----------------------------------------------------------------------*
FORM preview_excel.
SET PROPERTY OF application 'VISIBLE' = 1.
CALL METHOD OF sheet 'PRINTPREVIEW'.
* m_message.
ENDFORM. "preview_excel

*&---------------------------------------------------------------------*
*& (12) Form free_object
*&---------------------------------------------------------------------*
* 释放object
*----------------------------------------------------------------------*
FORM free_object.
FREE OBJECT font.
FREE OBJECT range.
FREE OBJECT range1.
FREE OBJECT columns.
FREE OBJECT rows.
FREE OBJECT cell.
FREE OBJECT cell1.
FREE OBJECT sheet1.
FREE OBJECT sheet.
FREE OBJECT workbook.
FREE OBJECT application.
ENDFORM. "free_object

*&---------------------------------------------------------------------*
*& (13) Form close_excel
*&---------------------------------------------------------------------*
* 关闭excel并保存
*----------------------------------------------------------------------*
FORM close_excel.
CALL METHOD OF workbook 'Save'.
CALL METHOD OF workbook 'Close'
EXPORTING
#1 = 0.
CALL METHOD OF application 'Quit'.
ENDFORM. "close_excel

*&---------------------------------------------------------------------*
*& (14) Form download_excel_fromserver
*&---------------------------------------------------------------------*
* 从服务器下载excel模板
*----------------------------------------------------------------------*
* -->P_OBJID 模板名称
* -->P_DEST 存档路径
*----------------------------------------------------------------------*
FORM download_excel_fromserver
USING p_objid LIKE wwwdatatab-objid
p_dest LIKE sapb-sappfad.

DATA: lo_objdata LIKE wwwdatatab,
lo_mime LIKE w3mime,
ls_destination LIKE rlgrap-filename,
ls_objnam TYPE string,
li_rc LIKE sy-subrc,
ls_errtxt TYPE string.


CONCATENATE p_objid '.XLS' INTO ls_objnam.
CONDENSE ls_objnam NO-GAPS.

SELECT SINGLE relid objid FROM wwwdata
INTO CORRESPONDING FIELDS OF lo_objdata
WHERE srtf2 = 0
AND relid = 'MI'
AND objid = p_objid.

IF sy-subrc NE 0 OR lo_objdata-objid EQ space.
CONCATENATE '模板文件:' ls_objnam '不存在,请用TCODE:SMW0进行加载' INTO ls_errtxt.
MESSAGE e600(zdev) WITH ls_errtxt.
ENDIF.

ls_destination = p_dest.

CALL FUNCTION 'DOWNLOAD_WEB_OBJECT'
EXPORTING
key = lo_objdata
destination = ls_destination
IMPORTING
rc = li_rc.

IF li_rc NE 0.
CONCATENATE '模板文件:' ls_objnam '下载失败' INTO ls_errtxt.
MESSAGE e600(zdev) WITH ls_errtxt.
ENDIF.
ENDFORM. "download_excel_fromserver


*&---------------------------------------------------------------------*
*& (15) Form open_excel_hide
*&---------------------------------------------------------------------*
* 后台打开指定的excel
*----------------------------------------------------------------------*
* -->P_FILE excel本地路径
*----------------------------------------------------------------------*
FORM open_excel_hide USING p_file.
SET PROPERTY OF application 'Visible' = 0.
CALL METHOD OF application 'Workbooks' = workbook.
CALL METHOD OF workbook 'Open' = workbook
EXPORTING
#1 = p_file.
CALL METHOD OF workbook 'Worksheets' = sheet
EXPORTING
#1 = 'Sheet1'.
CALL METHOD OF sheet 'Activate'.
ENDFORM. "open_excel_hide

*&---------------------------------------------------------------------*
*& (16) Form open_excel
*&---------------------------------------------------------------------*
* 打开指定的excel
*----------------------------------------------------------------------*
* -->P_FILE excel本地路径
*----------------------------------------------------------------------*
FORM open_excel USING p_file.
SET PROPERTY OF application 'Visible' = 1.
CALL METHOD OF application 'Workbooks' = workbook.
CALL METHOD OF workbook 'Open' = workbook
EXPORTING
#1 = p_file.
CALL METHOD OF workbook 'Worksheets' = sheet
EXPORTING
#1 = 'Sheet1'.
CALL METHOD OF sheet 'Activate'.
ENDFORM. "open_excel

*&---------------------------------------------------------------------*
*& (17) Form open_excel_sheet
*&---------------------------------------------------------------------*
* 打开指定的excel的sheet
*----------------------------------------------------------------------*
* -->P_SHEET 打开的sheet名
* -->P_FILE excel本地路径
*----------------------------------------------------------------------*
FORM open_excel_sheet USING p_sheet p_file.
SET PROPERTY OF application 'Visible' = 1.
CALL METHOD OF application 'Workbooks' = workbook.
CALL METHOD OF workbook 'Open' = workbook
EXPORTING
#1 = p_file.
CALL METHOD OF workbook 'Worksheets' = sheet
EXPORTING
#1 = p_sheet.
CALL METHOD OF sheet 'Activate'.
ENDFORM. "open_excel_sheet


*&---------------------------------------------------------------------*
*& (18) Form open_excel_by_sheet
*&---------------------------------------------------------------------*
* 打开sheet
*----------------------------------------------------------------------*
* -->P_SHEET 打开的sheet名
*----------------------------------------------------------------------*
FORM open_excel_by_sheet USING p_sheet.
CALL METHOD OF workbook 'WORKSHEETS' = sheet
EXPORTING
#1 = p_sheet.

CALL METHOD OF sheet 'ACTIVATE'.
ENDFORM. "open_excel_by_sheet

*&---------------------------------------------------------------------*
*& (19) Form select_range
*&---------------------------------------------------------------------*
* 选择范围
*----------------------------------------------------------------------*
* -->P_LEFT 左
* -->P_TOP 上
* -->P_RIGHT 右
* -->P_BUTTOM 下
*----------------------------------------------------------------------*
FORM select_range USING
p_left TYPE i
p_top TYPE i
p_right TYPE i
p_buttom TYPE i.
CALL METHOD OF application 'CELLS' = cell
EXPORTING
#1 = p_top
#2 = p_left.

CALL METHOD OF application 'CELLS' = cell1
EXPORTING
#1 = p_buttom
#2 = p_right.

CALL METHOD OF application 'RANGE' = range
EXPORTING
#1 = cell
#2 = cell1.

CALL METHOD OF range 'SELECT'.

ENDFORM. "select_range


*&---------------------------------------------------------------------*
*& (20) Form clear_data
*&---------------------------------------------------------------------*
* 清除数据
*----------------------------------------------------------------------*
* -->P_LEFT 左
* -->P_TOP 上
* -->P_RIGHT 右
* -->P_BUTTOM 下
*----------------------------------------------------------------------*
FORM clear_data USING p_left TYPE i
p_top TYPE i
p_right TYPE i
p_buttom TYPE i.
PERFORM select_range USING p_left
p_top
p_right
p_buttom.
CALL METHOD OF range 'ClearContents'.

ENDFORM. "clear_data

*&---------------------------------------------------------------------*
*& (21) Form merge_cells
*&---------------------------------------------------------------------*
* 合并单元格
*----------------------------------------------------------------------*
* -->P_LEFT text
* -->P_TOP text
* -->P_RIGHT text
* -->P_BUTTOM text
*----------------------------------------------------------------------*
FORM merge_cells USING p_left TYPE i
p_top TYPE i
p_right TYPE i
p_buttom TYPE i.
PERFORM select_range USING p_left
p_top
p_right
p_buttom.
CALL METHOD OF range 'Merge'.

ENDFORM. "merge_cells

*&---------------------------------------------------------------------*
*& (22) Form process_indcator
*&---------------------------------------------------------------------*
* 进度指示
*----------------------------------------------------------------------*
* -->TEXT 提示文字
* -->PERCENTAGE 进度百分比
*----------------------------------------------------------------------*
FORM process_indcator USING text percentage.
CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
EXPORTING
percentage = percentage
text = text.
ENDFORM. "process_indcator

*&---------------------------------------------------------------------*
*& (23) Form delete_row
*&---------------------------------------------------------------------*
* 删除行
*----------------------------------------------------------------------*
* -->I_ROW 行号
*----------------------------------------------------------------------*
FORM delete_row USING i_row.
CALL METHOD OF application 'ROWS' = rows
EXPORTING
#1 = i_row.

CALL METHOD OF rows 'DELETE'.

ENDFORM. "delete_row

*&---------------------------------------------------------------------*
*& (24) Form add_comment
*&---------------------------------------------------------------------*
* 添加注释
*----------------------------------------------------------------------*
* -->I_ROW 行号
* -->I_COL 列号
* -->P_TEXT 注释内容
*----------------------------------------------------------------------*
FORM add_comment USING i_row i_col p_text.
CALL METHOD OF application 'Cells' = cell
EXPORTING
#1 = i_row
#2 = i_col.
CALL METHOD OF cell 'AddComment' = cell1.
CALL METHOD OF cell1 'Text'
EXPORTING
#1 = p_text.
CALL METHOD OF cell1 'Shape' = font.
SET PROPERTY OF font 'Width' = '20'.
SET PROPERTY OF font 'Height' = '20'.
ENDFORM. "add_comment


*&---------------------------------------------------------------------*
*& (25) Form hide_columns
*&---------------------------------------------------------------------*
* 隐藏列
*----------------------------------------------------------------------*
* -->COLNUM 输入列号
*----------------------------------------------------------------------*
FORM hide_columns USING colnum.
CALL METHOD OF application 'COLUMNS' = columns
EXPORTING
#1 = colnum.
SET PROPERTY OF columns 'Hidden' = 'true'.
ENDFORM. "hide_columns


*&---------------------------------------------------------------------*
*& (26) Form delete_columns
*&---------------------------------------------------------------------*
* 删除列
*----------------------------------------------------------------------*
* -->COLNUM 输入列号
*----------------------------------------------------------------------*
FORM delete_columns USING colnum.
CALL METHOD OF application 'COLUMNS' = columns
EXPORTING
#1 = colnum.
CALL METHOD OF columns 'DELETE'.
ENDFORM. "delete_columns

*&---------------------------------------------------------------------*
*& (27) Form hide_row
*&---------------------------------------------------------------------*
* 隐藏行
*----------------------------------------------------------------------*
* -->I_ROW 输入行号
*----------------------------------------------------------------------*
FORM hide_row USING i_row.
CALL METHOD OF application 'ROWS' = rows
EXPORTING
#1 = i_row.

SET PROPERTY OF rows 'Hidden' = 'true'.

ENDFORM. "hide_row

3注意事项
3.1Sheet名称
Sheet名为中文时,在调用sheet对象时往往会调用不到,用英文字母不存在该问题。
3.2释放对象
程序结束时需要释放对象,否则Excel有可能无法关闭。
释放对象代码如下:
FORM free_object.
FREE OBJECT font.
FREE OBJECT range.
FREE OBJECT range1.
FREE OBJECT columns.
FREE OBJECT rows.
FREE OBJECT cell.
FREE OBJECT cell1.
FREE OBJECT sheet1.
FREE OBJECT sheet.
FREE OBJECT workbook.
FREE OBJECT application.
ENDFORM.

CreateObject(Excel.Application)报错解决方法-win10.rar office已安装,但运行Variant::CreateObject("excel.application")仍报错。 目前对一台win10_64电脑,已解决了此问题…… 立即下载

相关推荐

智能制造 | 如何快速自动生成站位表及自动与BOM校验?

一、站位表(SMT行业中)是SMT上料防错的基础信息,用于对需上料物料与产线、贴片机位置、飞达规格型号、用量,建立基础资料。 SMT站位表是否正确? 首先需要人工确认站位表与SMT程序的是否符合,上料员依照站位表安装好后,确认人员需有第三方确认者 (品管确定)核对。 站位表内容包括什么? 站位表内容为:SMT站位号相对应的物料编码,元件位号,飞达大小/间距,数量等等,根据不同公司的要求而定义。 就目前来说,基本每一款贴片机都可以输出站位清单 但对于企业来说,直接输出的站位清单一般不直接使用,需要进行手动处理

vayoinfo111的博客 4942

VB CreateObject(“Excel.Application“) 创建EXCEL对象不成功的解决方法

调试程序时提示:“CreateObject("Excel.Application")'创建EXCEL对象不成功”。开始以为是EXCEL版本不对,又重新注册OCX控件也未解决,最后才发现是系统控件权限问题。自己的电脑编译成功后一切正常, 客户机器上运行出现:“Activex部件不能创建对象”,用管理员身份运行一切OK。

gzaazyg的博客 2048

三、STM32F103ZET6最小系统

stm32最小系统除去主控CPU外,需要包含,电源电路,复位电路,BOOT电路,时钟电路(因为stm32有内置时钟,对时钟要求不高的话,可以不要)。NRST引脚其实芯片已经用一个约40K的电阻上拉了,所以理论上来说是不需要再外接上拉电阻的,但我看大家都是有外接上拉的,心里没有底,不管这么多,先预留着。吃过亏,特意查看了芯片手册资料,下图是官方建议的供电方案,图片来自stm32f103zet6数据手册。首先明白目标,单纯的学习软件知识并不是我希望的,我还希望会硬件设计,这样后面才能摆脱开发板。

sevendecsdn的博客 6452

Delphi 控制Excel 例子,参考资料

个人收藏:Delphi  控制Excel(一) 使用动态创建的方法首先创建 Excel 对象,使用ComObj:var ExcelApp: Variant;ExcelApp := CreateOleObject( Excel.Application );1) 显示当前窗口:ExcelApp.Visible := True;2) 更改 Excel 标题栏:ExcelApp.Caption :=

阿锋--专栏 4068

yolov8的Detect层详解(输出维度改动)

对于部署端需要拿到onnx的output进行后处理,但是基于anchor_free的yolov8输出是1*(4+cls)*8400,不是我们常见的ncwh格式,所以对Detect层进行了学习,分享一下体会。

yjcccccc的博客 2万+

基于FPGA与红外成像的眼动追踪系统设计与实现(教学向)

本文详细介绍了基于FPGA与红外成像的眼动追踪系统设计与实现。通过红外摄像头采集图像,利用FPGA进行实时图像处理和红外瞳孔追踪,结合Verilog编程实现多目标检测与瞳孔定位。该系统适用于嵌入式视觉教学,展示了硬件搭建、算法优化及实时显示的完整流程。

g5h6i7j的博客 823

ABAP学习(16):ABAP2XLSX,操作excel

定义一个range区域,相当于Excel选择区域,进行批量单元格设置。"range获取"range"sheet名"A4A5区域ENDFORM.

sap_abap_kang的博客 4982

lammps教程:MS转data文件出错原因分析及解决办法

使用ms建模是lammps建模的一种重要方法,但是ms建模转换为data过程中经常会出现各种各样的错误。 ms模型转data文件流程分两部分,一是ms建模、forcite设置力场并导出car文件,二是msi2lmp将car转为data文件。 任何一个环节出错都会导致无法得到data文件,最容易出错的是forcite力场设置环节。 forcite力场设置出错原因有很多,一个原因是缺乏某类原子的力场参数。 msi2lmp软件只能转换cvff或pcff力场的car文件,因此,如果力场中不包含某类原子的参数,在设置

lammps_jiayou的博客 5062

ABAP ole操作1

转自:https://www.cnblogs.com/jxzhu/p/8708686.html OLE整理: 1.定义,分别对应EXCEL,workbook(工作簿),sheet(页),单元格 DATA: EXCEL_OBJ TYPE OLE2_OBJECT, BOOK_OBJ ...

anchangong3418的博客 338

[DDR5]DDR5 SDRAM 状态图 和 基本功能

DDR5 SDRAM的读写操作以突发(burst mode)为导向,从选定的位置开始,并按照编程顺序进行16个突发长度或8个“切片”突发长度的操作。从ACTIVATE命令开始,然后是读取或写入命令。

串起点滴 1200

流体动力学仿真软件:Star-CCM+_(19).软件定制与脚本编写

自定义插件开发可以扩展Star-CCM+的功能,实现特定的仿真需求。插件开发通常需要使用Java语言,并且需要对Star-CCM+的API有深入的了解。以下是一个简单的Java插件示例,展示如何创建一个自定义插件来显示仿真项目的信息。// 导入必要的Star-CCM+ API import star . ccm . product . CCMProject;// 自定义插件类 public class CustomPlugin {// 插件主方法 public void run() {

kkchenjj的博客 937

【SAP】ABAP开发——批处理制作excel模板

1.绘制EXCEL模板 PERFORM frm_newsheet. PERFORM frm_setwidth USING: 1 6, "第一列表格宽度 2 10, "第二列表格宽度 3 8, 4 4. PERFORM...

Mona_1220的博客 656

深度学习100例-卷积神经网络(CNN)彩色图片分类 | 第2天

文章目录前期工作设置GPU导入数据标准化可视化构建CNN网络编译训练模型预测模型评估 前期工作 设置GPU 如果使用的是CPU可以忽略这步 import tensorflow as tf gpus = tf.config.list_physical_devices("GPU") if gpus: gpu0 = gpus[0] #如果有多个GPU,仅使用第0个GPU tf.config.experimental.set_memory_growth(gpu0, True) #设置GPU显存用量

“365天深度学习训练营”报名进行中~ 7854

abap 上传excel数字去除千分符_ABAP_Excel 处理总结

1 调用原理1.1 创建对象首先定义OLE对象,创建OLE对象为excel类型。定义格式如下:CREATE OBJECT application 'excel.APPLICATION'.然后通过excel对象application,创建与excel对应的workbook,sheet,range,cell等对象。再次通过调用各个对象的方法及属性等,实现对excel的操作。1.2 Excel宏利用宏可...

weixin_34406844的博客 459

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

SAP ABAP上传Excel字符限制处理

filename = g_file "上传文件名

matinal 當冬夜漸暖 。公众号:matinal 634

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

ABAP Excel处理-内表导出为Excel文件

内表导出为Excel文件的实现 ABAP下载内表数据为Excel文件 ABAP导出Excel文件 1. OLE下载内表数据为Excel 2. DOI下载内表数据为Excel 3.生成文本形式的Excel(.xls或.csv) 4. 标准方法输出Excel文件流(用作接口或后台) 5.Transformation 生成xml格式的Excel(.XLS) 6. ABAP2XLSX 和 XLSX Workbench GUI_DOWNLOAD/cl_fdt_xl_spreadsheet

xiefireworks的博客 9814

推荐文章:ABAP2XLSX - ABAP中的Excel处理神器

`abap2xlsx` 是一个用于从SAP ABAP环境中读取和生成专业Excel电子表格的开源库。该项目源于2010年的一系列博客,自那时起,它已经成长为一个强大且功能完善的解决方案,让开发人员可以在ABAP系统中轻松处理复杂的Excel数据操作。 ## 2、项目技术分析 `abap2xlsx` 使用ABAP编程语言实现,允许在SAP系统中直接创建和修改Excel文件(.xlsx格式),而无...

gitblog_00060的博客 698

SAP ABAP开发者必看:用ABAP2XLSX高效处理Excel数据的5个实战技巧

本文为SAP ABAP开发者提供了五个使用ABAP2XLSX库高效处理Excel数据的实战技巧。通过与传统方法对比,展示了其在性能、稳定性和功能上的显著优势,并详细介绍了多工作表操作、动态列映射、大数据量处理等企业级应用场景,帮助开发者构建健壮的Excel数据导入导出解决方案。

zz67890的博客 298

abap 上传excel数字去除千分符_ABAP EXCEL 处理总结

1调用原理1.1创建对象首先定义OLE对象,创建OLE对象为excel类型。定义格式如下:CREATEOBJECTapplication'excel.APPLICATION'.然后通过excel对象application,创建与excel对应的workbook,sheet,range,cell等对象。再次通过调用各个对象的方法及属性等,实现对excel的操作。1.2Excel宏利用宏可以查看各个e...

weixin_36340672的博客 819

ABAP2XLSX终极指南:纯ABAP实现Excel生成与处理的深度解析

2. **Package**:设置目标包,如 `$ABAP2XLSX` 3. **Branch**:选择 `Autodetect default branch` 自动检测默认分支 4. **Folder Logic**:推荐使用 `Prefix` 模式 5. **Display Name**:填写 `abap2xlsx` 作为显示名称 点击"Create Online Repo"开始导入,大型项

gitblog_00512的博客 261

abap 上传excel数字去除千分符_sap上传excel文档字符限制处理 | 学步园

abap中有多个函数处理上传的excel文档中的数据,记录数据的信息(行、列、值)。如,函数KCD_EXCEL_OLE_TO_INT_CONVERT:data: lt_data_in_file type table of kcde_cells,ls_data_in_file type kcde_cells.call function 'KCD_EXCEL_OLE_TO_INT_CONVERT'ex...

weixin_34199121的博客 447

abap对excel处理

REPORT  ZVR013.INCLUDE ole2incl.DATA: gs_excel          TYPE ole2_object,      gs_wbooklist      TYPE ole2_object,      gs_application    TYPE ole2_object,      gs_wbook          TYPE ole2_o

Edwin的专栏 2535

Containerd 元数据备份与恢复实战指南:meta.db 损坏如何完整找回?

Containerd 把容器、镜像、快照、命名空间的所有记录都写在一个 BoltDB 文件里,默认路径是 `/var/lib/containerd/meta.db`。这个文件体积小、不起眼,但一旦损坏就很难补救:磁盘故障、升级失败、清理脚本误操作,任何一种都可能让 containerd "失忆"——镜像列表清空、容器全部找不到,只能重新拉取、重新部署。 本文带你走一遍 Containerd 元数

gitblog_01015的博客 244
上一篇: XML的方式输出内表的内容
下一篇: 底表维护
java_smalltalk
博客等级 码龄20年 8粉丝 43原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值