SAP DOI 读取Excel内容问题

[复制链接]
查看11 | 回复0 | 2018-12-18 10:42:00 | 显示全部楼层 |阅读模式
我想用DOI技术读取Excel文件内容,自己做了个例子,发现两个问题:
1. 通过已传的模板调用方法【open_document】打开Excel文件时,如果上传的模板是xlsx文件(即:Excel 2003之后的文件格式),会弹出一个错误的提示框,而扩展名为xls文件就没有这个问题,DOI技术只技术 Excel 2003之前的文件格式吗?是否有其他方法解决?
2. 调用方法【open_document】打开Excel文件时,我只想读取文件内容,不希望Excel文件显示在屏幕上,DOI技术是否可以做到(OLE可以实现)?我一直没有找到相应的参数,或者方法。

求各位大侠指点,谢谢!
以下是代码:
DATA: gr_container TYPE REF TO cl_gui_container,
gr_control TYPE REF TO i_oi_container_control,
gr_documentTYPE REF TO i_oi_document_proxy,
gr_spreadsheet TYPE REF TO i_oi_spreadsheet,
gr_bds_documents TYPE REF TO cl_bds_document_set.
DATA: gt_bds_uris TYPE sbdst_uri.
DATA: gs_bds_uris LIKE LINE OF gt_bds_uris.
DATA: gt_ranges TYPE soi_dimension_table,
gs_rangeTYPE soi_dimension_item,
gt_ret_rngs TYPE soi_range_list,
gt_contents TYPE soi_generic_table,
gs_contentTYPE soi_generic_item.
DATA: g_classname TYPE sbdst_classname,
g_classtype TYPE sbdst_classtype,
g_objectkey TYPE sbdst_object_key.
START-OF-SELECTION.
* cl_gui_container类的静态方法screen0获取屏幕1000,并赋值给gr_container
gr_container = gr_container = cl_gui_container=>screen0.
* 创建container control对象实例并初始化
CALL METHOD c_oi_container_control_creator=>get_container_control
IMPORTING
control = gr_control.
* 初始化container control对象
CALL METHOD gr_control->init_control
EXPORTING
inplace_enabled
= ''
inplace_scroll_documents = ''
register_on_close_event= ''
register_on_custom_event = ''
r3_application_name= 'DOI demo'
parent
= gr_container.
* 获取excel template文档的url
*create object gr_bds_documents.
g_classname = 'HRFPM_EXCEL_STANDARD'.
g_classtype = 'OT'.
g_objectkey = 'DOITEST'.
CALL METHOD cl_bds_document_set=>get_with_url
EXPORTING
classname= g_classname
classtype= g_classtype
object_key = g_objectkey
CHANGING
uris = gt_bds_uris.
*signature= g_doc_signature.
READ TABLE gt_bds_uris INTO gs_bds_uris INDEX 1.
* 创建document proxy对象的实例
CALL METHOD gr_control->get_document_proxy
EXPORTING
* document_format = 'OLE'
document_type= 'Excel.Sheet'
no_flush = 'X'
IMPORTING
document_proxy = gr_document.
CALL METHOD gr_document->open_document
EXPORTING
open_inplace= ''
open_readonly = 'X'
document_url= gs_bds_uris-uri.
CALL METHOD gr_document->get_spreadsheet_interface
EXPORTING
no_flush= 'X'
IMPORTING
sheet_interface = gr_spreadsheet.
CALL METHOD gr_spreadsheet->select_sheet
EXPORTING
name = 'Sheet1'
no_flush = 'X'.
CLEAR gs_range.
gs_range-row = 1.
gs_range-column = 2.
gs_range-rows = 11.
gs_range-columns = 10.
APPEND gs_range TO gt_ranges.
CALL METHOD gr_spreadsheet->get_ranges_data
EXPORTING
no_flush= 'X'
* all = ''
* updating= -1
rangesdef = gt_ranges
IMPORTING
contents= gt_contents
* error =
* retcode =
CHANGING
ranges= gt_ret_rngs.
WRITE 'ASDF'.
CALL METHOD gr_document->close_document.
CALL METHOD gr_control->destroy_control.
CALL METHOD gr_container->free.
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行