ABAP 内表导出EXCEL可以用OLE方法,也可以用SAP 已有的函数:
RH_START_EXCEL_WITH_DATA,
GUI_DOWNLOAD,
还可以:
data GT_HEADER TYPE LVC_T_FCAT."需要导出EXCEL的标题
data: r_result_data type ref to cl_salv_ex_result_data_table.
data: lr_data type ref to data.
data: l_xml type xstring.
DATA: lr_excel2007 type ref to CL_SALV_BS_OFFICE2007_BASE.
CHECK OUT_DATA[] IS NOT INITIAL. "内表数据
get reference of OUT_DATA[] into lr_data.
r_result_data = cl_salv_ex_util=>FACTORY_RESULT_DATA_TABLE(
* T_SELECTED_ROWS = lt_lvc_row
* T_SELECTED_COLUMNS = lt_sel_cols
* T_SELECTED_CELLS = lt_sel_cells
R_DATA = lr_data
* S_LAYOUT = gs_layo
T_FIELDCATALOG = GT_HEADER[]
* T_SORT = gt_sort
* T_FILTER = gt_filter
* T_HYPERLINKS = me->mt_hyperlinks
* S_CURRENT_CELL = ls_cur_cell
* HYPERLINK_ENTRY_COLUMN = ls_hyper_entry
* DROPDOWN_ENTRY_COLUMN = ls_dropdown_entry
* T_DROPDOWN_VALUES = lt_drdn )
* r_top_of_list = lr_form_tol
* r_end_of_list = lr_form_eol
).
CREATE OBJECT lr_excel2007 TYPE CL_SALV_BS_EX_OFFICE2007
EXPORTING
r_result_data = r_result_data.
if lr_excel2007 is not initial.
call method lr_excel2007->transform
receiving
excel_xml = L_xml.
endif.
CALL FUNCTION 'XML_EXPORT_DIALOG'
EXPORTING
I_XML = L_XML
I_DEFAULT_EXTENSION = 'XLSX'
I_INITIAL_DIRECTORY = ''
I_DEFAULT_FILE_NAME = 'EXPORT.XLSX'
I_MASK = 'Excel (*.XLSX)|*.XLSX'
* I_APPLICATION =
EXCEPTIONS
APPLICATION_NOT_EXECUTABLE = 1
OTHERS = 2
.
下面介绍一种新的方法:适用于要求EXCEL较复杂的格式,样式。但此方法不能实现EXCEL中有图片等VBA按件,而且只能是2003格式,下载来的文件扩展名是.xls 。
1.先编辑好EXCEL文件,
2. 另存为XML文本文件
xml 文件是这个样子的