diff --git a/ZA2X/CLAS/ZCL_EXCEL_WRITER_2007.slnk b/ZA2X/CLAS/ZCL_EXCEL_WRITER_2007.slnk index 2c37102..9d0ab0c 100644 --- a/ZA2X/CLAS/ZCL_EXCEL_WRITER_2007.slnk +++ b/ZA2X/CLAS/ZCL_EXCEL_WRITER_2007.slnk @@ -2580,6 +2580,7 @@ lv_sytabix = sy-tabix - 1. MOVE lv_sytabix TO ls_shared_string-string_no. MOVE <fs_sheet_content>-cell_value TO ls_shared_string-string_value. + MOVE <fs_sheet_content>-data_type TO ls_shared_string-string_type. APPEND ls_shared_string TO shared_strings. ENDLOOP. @@ -2614,6 +2615,9 @@ parent = lo_document ). lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_t parent = lo_document ). + if <fs_sheet_string>-string_type EQ 's_leading_blanks'. + lo_sub_element->set_attribute( name = 'space' namespace = 'xml' value = 'preserve' ). + endif. lo_sub_element->set_value( value = <fs_sheet_string>-string_value ). lo_element->append_child( new_child = lo_sub_element ). lo_element_root->append_child( new_child = lo_element ). @@ -3489,15 +3493,20 @@ lo_element_3->append_child( new_child = lo_element_4 ). " fomula node ELSEIF <ls_sheet_content>-cell_value IS NOT INITIAL. "cell can have just style or formula IF <ls_sheet_content>-data_type IS NOT INITIAL. - lo_element_3->set_attribute_ns( name = lc_xml_attr_t + IF <ls_sheet_content>-data_type EQ 's_leading_blanks'. + lo_element_3->set_attribute_ns( name = lc_xml_attr_t + value = 's' ). + ELSE. + lo_element_3->set_attribute_ns( name = lc_xml_attr_t value = <ls_sheet_content>-data_type ). + ENDIF. ENDIF. " value node lo_element_4 = lo_document->create_simple_element( name = lc_xml_node_v parent = lo_document ). - IF <ls_sheet_content>-data_type EQ 's'. + IF <ls_sheet_content>-data_type EQ 's' or <ls_sheet_content>-data_type EQ 's_leading_blanks'. lv_value = me->get_shared_string_index( <ls_sheet_content>-cell_value ). CONDENSE lv_value. lo_element_4->set_value( value = lv_value ). diff --git a/ZA2X/PROG/ZDEMO_EXCEL.slnk b/ZA2X/PROG/ZDEMO_EXCEL.slnk index ca7e766..5dd091a 100644 --- a/ZA2X/PROG/ZDEMO_EXCEL.slnk +++ b/ZA2X/PROG/ZDEMO_EXCEL.slnk @@ -69,7 +69,7 @@ START-OF-SELECTION. SUBMIT zdemo_excel27 WITH p_path = p_path AND RETURN. " abap2xlsx Demo: Conditional Formatting SUBMIT zdemo_excel28 WITH p_path = p_path AND RETURN. " abap2xlsx Demo: CSV writer " SUBMIT zdemo_excel29 WITH p_path = p_path AND RETURN. " abap2xlsx Demo: Macro enabled workbook - SUBMIT zdemo_excel30 WITH p_path = p_path AND RETURN. " abap2xlsx Demo: ABAP Cell data types + SUBMIT zdemo_excel30 WITH p_path = p_path AND RETURN. " abap2xlsx Demo: ABAP Cell data types + leading blanks string SUBMIT zdemo_excel31 WITH p_path = p_path AND RETURN. " abap2xlsx Demo: Autosize Column with different Font sizes " zdemo_excel32 is not added because it uses ALV and cannot be processed (Native) SUBMIT zdemo_excel33 WITH p_path = p_path AND RETURN. " abap2xlsx Demo: Table autofilter diff --git a/ZA2X/PROG/ZDEMO_EXCEL30.slnk b/ZA2X/PROG/ZDEMO_EXCEL30.slnk index 4fa4950..373df9e 100644 --- a/ZA2X/PROG/ZDEMO_EXCEL30.slnk +++ b/ZA2X/PROG/ZDEMO_EXCEL30.slnk @@ -1,5 +1,5 @@ - - + + @@ -29,7 +29,8 @@ DATA: lv_value TYPE string, CONSTANTS: lc_typekind_string TYPE abap_typekind VALUE cl_abap_typedescr=>typekind_string, lc_typekind_packed TYPE abap_typekind VALUE cl_abap_typedescr=>typekind_packed, lc_typekind_num TYPE abap_typekind VALUE cl_abap_typedescr=>typekind_num, - lc_typekind_date TYPE abap_typekind VALUE cl_abap_typedescr=>typekind_date. + lc_typekind_date TYPE abap_typekind VALUE cl_abap_typedescr=>typekind_date, + lc_typekind_s_ls TYPE string VALUE 's_leading_blanks'. CONSTANTS: gc_save_file_name TYPE string VALUE '30_CellDataTypes.xlsx'. INCLUDE zdemo_excel_outputopt_incl. @@ -49,11 +50,13 @@ START-OF-SELECTION. ip_abap_type = lc_typekind_string ). lo_worksheet->set_cell( ip_column = 'B' ip_row = 1 ip_value = 'String' ip_abap_type = lc_typekind_string ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 2 ip_value = 'Negative Value' + lo_worksheet->set_cell( ip_column = 'B' ip_row = 2 ip_value = ' String with leading spaces' + ip_data_type = lc_typekind_s_ls ). + lo_worksheet->set_cell( ip_column = 'B' ip_row = 3 ip_value = ' Negative Value' ip_abap_type = lc_typekind_string ). lo_worksheet->set_cell( ip_column = 'C' ip_row = 1 ip_value = 'Packed' ip_abap_type = lc_typekind_string ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = 2 ip_value = '50000.00-' + lo_worksheet->set_cell( ip_column = 'C' ip_row = 2 ip_value = '50000.01-' ip_abap_type = lc_typekind_packed ). lo_worksheet->set_cell( ip_column = 'D' ip_row = 1 ip_value = 'Number with Percentage' ip_abap_type = lc_typekind_string ). @@ -65,7 +68,7 @@ START-OF-SELECTION. ip_abap_type = lc_typekind_date ). lo_worksheet->set_cell( ip_column = 'B' ip_row = 3 ip_value = 'Positive Value' ip_abap_type = lc_typekind_string ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = 3 ip_value = '5000.00' + lo_worksheet->set_cell( ip_column = 'C' ip_row = 3 ip_value = '5000.02' ip_abap_type = lc_typekind_packed ). lo_worksheet->set_cell( ip_column = 'D' ip_row = 3 ip_value = '50 %' ip_abap_type = lc_typekind_num ). diff --git a/ZA2X/TABL/ZEXCEL_S_SHARED_STRING.slnk b/ZA2X/TABL/ZEXCEL_S_SHARED_STRING.slnk index 92b7b70..6de4df5 100644 --- a/ZA2X/TABL/ZEXCEL_S_SHARED_STRING.slnk +++ b/ZA2X/TABL/ZEXCEL_S_SHARED_STRING.slnk @@ -1,6 +1,7 @@ - - - - - + + + + + +