From 04cab6b096dd118a8a82fe00e3c7f24a3c4db421 Mon Sep 17 00:00:00 2001 From: Ivan Femia Date: Thu, 22 Dec 2011 08:26:37 +0000 Subject: [PATCH] Daily Build: Support For Named Ranges In Reader Class by Shahrin Shahrulzaman git-svn-id: https://subversion.assembla.com/svn/abap2xlsx/trunk@232 b7d68dce-7c3c-4a99-8ce0-9ea847f5d049 --- ZA2X/PROG/ZDEMO_EXCEL15.slnk | 124 ++++++++++++++++++++--------------- 1 file changed, 72 insertions(+), 52 deletions(-) diff --git a/ZA2X/PROG/ZDEMO_EXCEL15.slnk b/ZA2X/PROG/ZDEMO_EXCEL15.slnk index 753d547..9dfe588 100644 --- a/ZA2X/PROG/ZDEMO_EXCEL15.slnk +++ b/ZA2X/PROG/ZDEMO_EXCEL15.slnk @@ -1,5 +1,5 @@ - + @@ -13,12 +13,20 @@ *&---------------------------------------------------------------------* *& 2010-10-30, Gregor Wolf: *& Added the functionality to ouput the read table content +*& 2011-12-19, Shahrin Shahrulzaman: +*& Added the functionality to have multiple input and output files *&---------------------------------------------------------------------* REPORT zdemo_excel15. TYPE-POOLS: abap. +TYPES: + BEGIN OF t_demo_excel15, + input TYPE string, + output TYPE string, + END OF t_demo_excel15. + DATA: excel TYPE REF TO zcl_excel, lo_excel_writer TYPE REF TO zif_excel_writer, reader TYPE REF TO zif_excel_reader. @@ -43,8 +51,9 @@ DATA: worksheet TYPE REF TO zcl_excel_worksheet, row TYPE int4 VALUE 1, value TYPE zexcel_cell_value. -CONSTANTS: lv_default_file_name TYPE string VALUE '15_iTabFromReader.xlsx', - lv_default_input TYPE string VALUE '03_iTab.xlsx'. +DATA: + lt_files TYPE TABLE OF t_demo_excel15. +FIELD-SYMBOLS: <wa_files> TYPE t_demo_excel15. PARAMETERS: p_path TYPE zexcel_export_dir, p_noout TYPE xfeld DEFAULT abap_true. @@ -61,68 +70,79 @@ INITIALIZATION. cl_gui_cfw=>flush( ). p_path = lv_workdir. + APPEND INITIAL LINE TO lt_files ASSIGNING <wa_files>. + <wa_files>-input = '03_iTab.xlsx'. + <wa_files>-output = '15_iTabFromReader.xlsx'. + APPEND INITIAL LINE TO lt_files ASSIGNING <wa_files>. + <wa_files>-input = '08_Range.xlsx'. + <wa_files>-output = '15_RangeFromReader.xlsx'. + START-OF-SELECTION. IF p_path IS INITIAL. p_path = lv_workdir. ENDIF. cl_gui_frontend_services=>get_file_separator( CHANGING file_separator = lv_file_separator ). - CONCATENATE p_path lv_file_separator lv_default_file_name INTO output_file_path. - CONCATENATE p_path lv_file_separator lv_default_input INTO input_file_path. - TRY. - CREATE OBJECT reader TYPE zcl_excel_reader_2007. - excel = reader->load_file( input_file_path ). + LOOP AT lt_files ASSIGNING <wa_files>. + CONCATENATE p_path lv_file_separator <wa_files>-output INTO output_file_path. + CONCATENATE p_path lv_file_separator <wa_files>-input INTO input_file_path. - IF p_noout EQ abap_false. - worksheet = excel->get_active_worksheet( ). - highest_column = worksheet->get_highest_column( ). - highest_row = worksheet->get_highest_row( ). + TRY. + CREATE OBJECT reader TYPE zcl_excel_reader_2007. + excel = reader->load_file( input_file_path ). - WRITE: 'Highest column: ', highest_column, 'Highest row: ', highest_row. + IF p_noout EQ abap_false. + worksheet = excel->get_active_worksheet( ). + highest_column = worksheet->get_highest_column( ). + highest_row = worksheet->get_highest_row( ). - WHILE row <= highest_row. - WHILE column <= highest_column. - col_str = zcl_excel_common=>convert_column2alpha( column ). - worksheet->get_cell( - EXPORTING - ip_column = col_str - ip_row = row - IMPORTING - ep_value = value - ). - WRITE: value. - column = column + 1. - ENDWHILE. + WRITE: 'Highest column: ', highest_column, 'Highest row: ', highest_row. WRITE: /. - column = 1. - row = row + 1. - ENDWHILE. - ENDIF. - CREATE OBJECT lo_excel_writer TYPE zcl_excel_writer_2007. - lv_file = lo_excel_writer->write_file( excel ). - " Convert to binary - CALL FUNCTION 'SCMS_XSTRING_TO_BINARY' - EXPORTING - buffer = lv_file - IMPORTING - output_length = lv_bytecount - TABLES - binary_tab = lt_file_tab. -* " This method is only available on AS ABAP > 6.40 -* lt_file_tab = cl_bcs_convert=>xstring_to_solix( iv_xstring = lv_file ). -* lv_bytecount = xstrlen( lv_file ). + WHILE row <= highest_row. + WHILE column <= highest_column. + col_str = zcl_excel_common=>convert_column2alpha( column ). + worksheet->get_cell( + EXPORTING + ip_column = col_str + ip_row = row + IMPORTING + ep_value = value + ). + WRITE: value. + column = column + 1. + ENDWHILE. + WRITE: /. + column = 1. + row = row + 1. + ENDWHILE. + ENDIF. + CREATE OBJECT lo_excel_writer TYPE zcl_excel_writer_2007. + lv_file = lo_excel_writer->write_file( excel ). - " Save the file - cl_gui_frontend_services=>gui_download( EXPORTING bin_filesize = lv_bytecount - filename = output_file_path - filetype = 'BIN' - CHANGING data_tab = lt_file_tab ). + " Convert to binary + CALL FUNCTION 'SCMS_XSTRING_TO_BINARY' + EXPORTING + buffer = lv_file + IMPORTING + output_length = lv_bytecount + TABLES + binary_tab = lt_file_tab. +* " This method is only available on AS ABAP > 6.40 +* lt_file_tab = cl_bcs_convert=>xstring_to_solix( iv_xstring = lv_file ). +* lv_bytecount = xstrlen( lv_file ). + + " Save the file + cl_gui_frontend_services=>gui_download( EXPORTING bin_filesize = lv_bytecount + filename = output_file_path + filetype = 'BIN' + CHANGING data_tab = lt_file_tab ). - CATCH zcx_excel INTO ex. " Exceptions for ABAP2XLSX - msg = ex->get_text( ). - WRITE: / msg. - ENDTRY. + CATCH zcx_excel INTO ex. " Exceptions for ABAP2XLSX + msg = ex->get_text( ). + WRITE: / msg. + ENDTRY. + ENDLOOP.