From ea9d9d300bf4ce8d9c781f4af6b477dd7375b49f Mon Sep 17 00:00:00 2001 From: Ivan Femia Date: Fri, 16 Mar 2012 08:21:12 +0000 Subject: [PATCH] Fixed #145 git-svn-id: https://subversion.assembla.com/svn/abap2xlsx/trunk@264 b7d68dce-7c3c-4a99-8ce0-9ea847f5d049 --- ZA2X/PROG/ZDEMO_EXCEL4.slnk | 261 ++++++++++++++++++++---------------- 1 file changed, 144 insertions(+), 117 deletions(-) diff --git a/ZA2X/PROG/ZDEMO_EXCEL4.slnk b/ZA2X/PROG/ZDEMO_EXCEL4.slnk index 4bb1ab1..81fb500 100644 --- a/ZA2X/PROG/ZDEMO_EXCEL4.slnk +++ b/ZA2X/PROG/ZDEMO_EXCEL4.slnk @@ -1,117 +1,144 @@ - - - - - - - - *&---------------------------------------------------------------------* -*& Report ZDEMO_EXCEL4 -*& -*&---------------------------------------------------------------------* -*& -*& -*&---------------------------------------------------------------------* - -REPORT zdemo_excel4. - -DATA: lo_excel TYPE REF TO zcl_excel, - lo_excel_writer TYPE REF TO zif_excel_writer, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_hyperlink TYPE REF TO zcl_excel_hyperlink. - -DATA: lv_file TYPE xstring, - lv_bytecount TYPE i, - lt_file_tab TYPE solix_tab. - -DATA: lv_full_path TYPE string, - lv_workdir TYPE string, - lv_file_separator TYPE c. - -CONSTANTS: lv_default_file_name TYPE string VALUE '04_Sheets.xlsx'. - -PARAMETERS: p_path TYPE zexcel_export_dir. - -AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_path. - lv_workdir = p_path. - cl_gui_frontend_services=>directory_browse( EXPORTING initial_folder = lv_workdir - CHANGING selected_folder = lv_workdir ). - p_path = lv_workdir. - -INITIALIZATION. - cl_gui_frontend_services=>get_sapgui_workdir( CHANGING sapworkdir = lv_workdir ). - cl_gui_cfw=>flush( ). - p_path = lv_workdir. - -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 lv_full_path. - - " Creates active sheet - CREATE OBJECT lo_excel. - - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lo_worksheet->set_title( ip_title = 'Sheet1' ). - lo_worksheet->zif_excel_sheet_properties~selected = zif_excel_sheet_properties=>c_selected. - lo_worksheet->set_cell( ip_column = 'B' ip_row = 2 ip_value = 'This is the first sheet' ). - lo_hyperlink = zcl_excel_hyperlink=>create_internal_link( iv_location = 'Sheet2!B2' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 3 ip_value = 'This is link to second sheet' ip_hyperlink = lo_hyperlink ). - - lo_worksheet->sheet_setup->set_page_margins( ip_header = '1' ip_footer = '1' ip_unit = 'cm' ). - lo_worksheet->sheet_setup->black_and_white = 'X'. - lo_worksheet->sheet_setup->fit_to_page = 'X'. " you should turn this on to activate fit_to_height and fit_to_width - lo_worksheet->sheet_setup->fit_to_height = 0. " used only if ip_fit_to_page = 'X' - lo_worksheet->sheet_setup->fit_to_width = 2. " used only if ip_fit_to_page = 'X' - lo_worksheet->sheet_setup->orientation = zcl_excel_sheet_setup=>c_orientation_landscape. - lo_worksheet->sheet_setup->page_order = zcl_excel_sheet_setup=>c_ord_downthenover. - lo_worksheet->sheet_setup->paper_size = zcl_excel_sheet_setup=>c_papersize_a4. - lo_worksheet->sheet_setup->scale = 80. " used only if ip_fit_to_page = SPACE - - - - lo_worksheet = lo_excel->add_new_worksheet( ). - lo_worksheet->set_title( ip_title = 'Sheet2' ). - lo_worksheet->zif_excel_sheet_properties~selected = zif_excel_sheet_properties=>c_selected. - lo_worksheet->set_cell( ip_column = 'B' ip_row = 2 ip_value = 'This is the second sheet' ). - lo_hyperlink = zcl_excel_hyperlink=>create_internal_link( iv_location = 'Sheet1!B2' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 3 ip_value = 'This is link to first sheet' ip_hyperlink = lo_hyperlink ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 4 ip_value = 'Sheet3 is hidden' ). - - lo_worksheet = lo_excel->add_new_worksheet( ). - lo_worksheet->set_title( ip_title = 'Sheet3' ). - lo_worksheet->zif_excel_sheet_properties~hidden = zif_excel_sheet_properties=>c_hidden. - - lo_worksheet = lo_excel->add_new_worksheet( ). - lo_worksheet->set_title( ip_title = 'Sheet4' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 2 ip_value = 'Cell B3 has value 0' ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 3 ip_value = 0 ). - lo_worksheet->zif_excel_sheet_properties~show_zeros = zif_excel_sheet_properties=>c_hidezero. - - lo_excel->set_active_sheet_index_by_name( 'Sheet1' ). - - CREATE OBJECT lo_excel_writer TYPE zcl_excel_writer_2007. - lv_file = lo_excel_writer->write_file( lo_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 ). - - " Save the file - cl_gui_frontend_services=>gui_download( EXPORTING bin_filesize = lv_bytecount - filename = lv_full_path - filetype = 'BIN' - CHANGING data_tab = lt_file_tab ). - + + + + + + + + + *&---------------------------------------------------------------------* +*& Report ZDEMO_EXCEL4 +*& +*&---------------------------------------------------------------------* +*& +*& +*&---------------------------------------------------------------------* + +REPORT zdemo_excel4. + +DATA: lo_excel TYPE REF TO zcl_excel, + lo_excel_writer TYPE REF TO zif_excel_writer, + lo_worksheet TYPE REF TO zcl_excel_worksheet, + lo_hyperlink TYPE REF TO zcl_excel_hyperlink. + +DATA: lv_file TYPE xstring, + lv_bytecount TYPE i, + lt_file_tab TYPE solix_tab. + +DATA: lv_full_path TYPE string, + lv_workdir TYPE string, + lv_file_separator TYPE c. + +DATA: ls_header TYPE zexcel_s_worksheet_head_foot, + ls_footer TYPE zexcel_s_worksheet_head_foot. + +CONSTANTS: lv_default_file_name TYPE string VALUE '04_Sheets.xlsx'. + +PARAMETERS: p_path TYPE zexcel_export_dir. + +AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_path. + lv_workdir = p_path. + cl_gui_frontend_services=>directory_browse( EXPORTING initial_folder = lv_workdir + CHANGING selected_folder = lv_workdir ). + p_path = lv_workdir. + +INITIALIZATION. + cl_gui_frontend_services=>get_sapgui_workdir( CHANGING sapworkdir = lv_workdir ). + cl_gui_cfw=>flush( ). + p_path = lv_workdir. + +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 lv_full_path. + + " Creates active sheet + CREATE OBJECT lo_excel. + + " Get active sheet + lo_worksheet = lo_excel->get_active_worksheet( ). + lo_worksheet->set_title( ip_title = 'Sheet1' ). + lo_worksheet->zif_excel_sheet_properties~selected = zif_excel_sheet_properties=>c_selected. + lo_worksheet->set_cell( ip_column = 'B' ip_row = 2 ip_value = 'This is the first sheet' ). + lo_hyperlink = zcl_excel_hyperlink=>create_internal_link( iv_location = 'Sheet2!B2' ). + lo_worksheet->set_cell( ip_column = 'B' ip_row = 3 ip_value = 'This is link to second sheet' ip_hyperlink = lo_hyperlink ). + + + " Page printing settings + lo_worksheet->sheet_setup->set_page_margins( ip_header = '1' ip_footer = '1' ip_unit = 'cm' ). + lo_worksheet->sheet_setup->black_and_white = 'X'. + lo_worksheet->sheet_setup->fit_to_page = 'X'. " you should turn this on to activate fit_to_height and fit_to_width + lo_worksheet->sheet_setup->fit_to_height = 0. " used only if ip_fit_to_page = 'X' + lo_worksheet->sheet_setup->fit_to_width = 2. " used only if ip_fit_to_page = 'X' + lo_worksheet->sheet_setup->orientation = zcl_excel_sheet_setup=>c_orientation_landscape. + lo_worksheet->sheet_setup->page_order = zcl_excel_sheet_setup=>c_ord_downthenover. + lo_worksheet->sheet_setup->paper_size = zcl_excel_sheet_setup=>c_papersize_a4. + lo_worksheet->sheet_setup->scale = 80. " used only if ip_fit_to_page = SPACE + + " Header and Footer + ls_header-right_value = 'print date &D'. + ls_header-right_font-size = 8. + ls_header-right_font-name = zcl_excel_style_font=>c_name_arial. + + ls_footer-left_value = '&Z&F'. "Path / Filename + ls_footer-left_font = ls_header-right_font. + ls_footer-right_value = 'page &P of &N'. "page x of y + ls_footer-right_font = ls_header-right_font. + + lo_worksheet->sheet_setup->set_header_footer( ip_odd_header = ls_header + ip_odd_footer = ls_footer ). + + + lo_worksheet = lo_excel->add_new_worksheet( ). + lo_worksheet->set_title( ip_title = 'Sheet2' ). + lo_worksheet->zif_excel_sheet_properties~selected = zif_excel_sheet_properties=>c_selected. + lo_worksheet->set_cell( ip_column = 'B' ip_row = 2 ip_value = 'This is the second sheet' ). + lo_hyperlink = zcl_excel_hyperlink=>create_internal_link( iv_location = 'Sheet1!B2' ). + lo_worksheet->set_cell( ip_column = 'B' ip_row = 3 ip_value = 'This is link to first sheet' ip_hyperlink = lo_hyperlink ). + lo_worksheet->set_cell( ip_column = 'B' ip_row = 4 ip_value = 'Sheet3 is hidden' ). + + lo_worksheet->sheet_setup->set_header_footer( ip_odd_header = ls_header + ip_odd_footer = ls_footer ). + + lo_worksheet = lo_excel->add_new_worksheet( ). + lo_worksheet->set_title( ip_title = 'Sheet3' ). + lo_worksheet->zif_excel_sheet_properties~hidden = zif_excel_sheet_properties=>c_hidden. + + lo_worksheet->sheet_setup->set_header_footer( ip_odd_header = ls_header + ip_odd_footer = ls_footer ). + + lo_worksheet = lo_excel->add_new_worksheet( ). + lo_worksheet->set_title( ip_title = 'Sheet4' ). + lo_worksheet->set_cell( ip_column = 'B' ip_row = 2 ip_value = 'Cell B3 has value 0' ). + lo_worksheet->set_cell( ip_column = 'B' ip_row = 3 ip_value = 0 ). + lo_worksheet->zif_excel_sheet_properties~show_zeros = zif_excel_sheet_properties=>c_hidezero. + + lo_worksheet->sheet_setup->set_header_footer( ip_odd_header = ls_header + ip_odd_footer = ls_footer ). + + lo_excel->set_active_sheet_index_by_name( 'Sheet1' ). + + CREATE OBJECT lo_excel_writer TYPE zcl_excel_writer_2007. + lv_file = lo_excel_writer->write_file( lo_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 ). + + " Save the file + cl_gui_frontend_services=>gui_download( EXPORTING bin_filesize = lv_bytecount + filename = lv_full_path + filetype = 'BIN' + CHANGING data_tab = lt_file_tab ). +