From 3cac5e5501c5cc9446926def9293fb2267de4a62 Mon Sep 17 00:00:00 2001 From: Ivan Femia Date: Sun, 14 Oct 2012 13:19:57 +0000 Subject: [PATCH] Ready to test #208 git-svn-id: https://subversion.assembla.com/svn/abap2xlsx/trunk@338 b7d68dce-7c3c-4a99-8ce0-9ea847f5d049 --- ZA2X/CLAS/ZCL_EXCEL_COMMON.slnk | 414 +++++++++++++++++---------- ZA2X/CLAS/ZCL_EXCEL_READER_2007.slnk | 175 +++++------ 2 files changed, 351 insertions(+), 238 deletions(-) diff --git a/ZA2X/CLAS/ZCL_EXCEL_COMMON.slnk b/ZA2X/CLAS/ZCL_EXCEL_COMMON.slnk index 6ebfc47..3bca3d7 100644 --- a/ZA2X/CLAS/ZCL_EXCEL_COMMON.slnk +++ b/ZA2X/CLAS/ZCL_EXCEL_COMMON.slnk @@ -5,9 +5,9 @@ final create public . +public section. *"* public components of class ZCL_EXCEL_COMMON *"* do not include other source files here!!! -public section. constants C_EXCEL_BASELINE_DATE type D value '19000101'. "#EC NOTEXT class-data C_EXCEL_NUMFMT_OFFSET type INT1 value 164. "#EC NOTEXT . @@ -108,7 +108,6 @@ public section. !IP_VALUE type T returning value(EP_VALUE) type ZEXCEL_CELL_VALUE . - interface IF_AUNIT_CONSTANTS load . type-pools ABAP . class-methods ASSERT_EQUALS importing @@ -136,17 +135,23 @@ public section. !TOL type F optional !QUIT type AUNIT_FLOWCTRL default IF_AUNIT_CONSTANTS=>METHOD returning - value(ASSERTION_FAILED) type ABAP_BOOL . + value(ASSERTION_FAILED) type ABAP_BOOL . + class-methods SPLIT_FILE + importing + !IP_FILE type TEXT255 + exporting + !EP_FILE type TEXT255 + !EP_EXTENSION type CHAR10 + !EP_DOTEXTENSION type CHAR10 . *"* protected components of class ZCL_EXCEL_COMMON *"* do not include other source files here!!! protected section. - *"* private components of class ZCL_EXCEL_COMMON + private section. +*"* private components of class ZCL_EXCEL_COMMON *"* do not include other source files here!!! -private section. class-data C_EXCEL_COL_MODULE type INT2 value 64. "#EC NOTEXT . - type-pools ABAP . class-methods STRUCTURE_CASE importing !IS_COMPONENT type ABAP_COMPONENTDESCR @@ -230,6 +235,7 @@ CLASS lcl_excel_common_test DEFINITION FOR TESTING "#AU Risk_Level Harmles METHODS: excel_string_to_time FOR TESTING. * METHODS: number_to_excel_string FOR TESTING. METHODS: time_to_excel_string FOR TESTING. + METHODS: split_file FOR TESTING. ENDCLASS. "lcl_Excel_Common_Test @@ -353,14 +359,14 @@ CLASS lcl_excel_common_test IMPLEMENTATION. TRY. ep_column = zcl_excel_common=>convert_column2int( 'A' ). - ZCL_EXCEL_COMMON=>assert_equals( + zcl_excel_common=>assert_equals( act = ep_column exp = 1 msg = 'Wrong column conversion' level = if_aunit_constants=>critical ). CATCH zcx_excel INTO lx_excel. - ZCL_EXCEL_COMMON=>fail( + zcl_excel_common=>fail( msg = 'unexpected exception' level = if_aunit_constants=>critical " Error Severity ). @@ -370,14 +376,14 @@ CLASS lcl_excel_common_test IMPLEMENTATION. TRY. ep_column = zcl_excel_common=>convert_column2int( 'XFD' ). - ZCL_EXCEL_COMMON=>assert_equals( + zcl_excel_common=>assert_equals( act = ep_column exp = 16384 msg = 'Wrong column conversion' level = if_aunit_constants=>critical ). CATCH zcx_excel INTO lx_excel. - ZCL_EXCEL_COMMON=>fail( + zcl_excel_common=>fail( msg = 'unexpected exception' level = if_aunit_constants=>critical " Error Severity ). @@ -387,14 +393,14 @@ CLASS lcl_excel_common_test IMPLEMENTATION. TRY. ep_column = zcl_excel_common=>convert_column2int( '' ). - ZCL_EXCEL_COMMON=>assert_differs( + zcl_excel_common=>assert_differs( act = ep_column exp = '0' msg = 'Wrong column conversion' level = if_aunit_constants=>critical ). CATCH zcx_excel INTO lx_excel. - ZCL_EXCEL_COMMON=>assert_equals( + zcl_excel_common=>assert_equals( act = lx_excel->error exp = 'Unable to interpret column' msg = 'Colum name should be a valid string' @@ -406,14 +412,14 @@ CLASS lcl_excel_common_test IMPLEMENTATION. TRY. ep_column = zcl_excel_common=>convert_column2int( 'XFE' ). - ZCL_EXCEL_COMMON=>assert_differs( + zcl_excel_common=>assert_differs( act = ep_column exp = 16385 msg = 'Wrong column conversion' level = if_aunit_constants=>critical ). CATCH zcx_excel INTO lx_excel. - ZCL_EXCEL_COMMON=>assert_equals( + zcl_excel_common=>assert_equals( act = lx_excel->error exp = 'Index out of bounds' msg = 'Colum XFE is out of range' @@ -431,14 +437,14 @@ CLASS lcl_excel_common_test IMPLEMENTATION. TRY. ep_value = zcl_excel_common=>date_to_excel_string( '19000101' ). - ZCL_EXCEL_COMMON=>assert_equals( + zcl_excel_common=>assert_equals( act = ep_value exp = 1 msg = 'Wrong date conversion' level = if_aunit_constants=>critical ). CATCH zcx_excel INTO lx_excel. - ZCL_EXCEL_COMMON=>fail( + zcl_excel_common=>fail( msg = 'unexpected exception' level = if_aunit_constants=>critical " Error Severity ). @@ -447,14 +453,14 @@ CLASS lcl_excel_common_test IMPLEMENTATION. TRY. ep_value = zcl_excel_common=>date_to_excel_string( '19000228' ). - ZCL_EXCEL_COMMON=>assert_equals( + zcl_excel_common=>assert_equals( act = ep_value exp = 59 msg = 'Wrong date conversion' level = if_aunit_constants=>critical ). CATCH zcx_excel INTO lx_excel. - ZCL_EXCEL_COMMON=>fail( + zcl_excel_common=>fail( msg = 'unexpected exception' level = if_aunit_constants=>critical " Error Severity ). @@ -462,14 +468,14 @@ CLASS lcl_excel_common_test IMPLEMENTATION. TRY. ep_value = zcl_excel_common=>date_to_excel_string( '19000301' ). - ZCL_EXCEL_COMMON=>assert_equals( + zcl_excel_common=>assert_equals( act = ep_value exp = 61 msg = 'Wrong date conversion' level = if_aunit_constants=>critical ). CATCH zcx_excel INTO lx_excel. - ZCL_EXCEL_COMMON=>fail( + zcl_excel_common=>fail( msg = 'unexpected exception' level = if_aunit_constants=>critical " Error Severity ). @@ -480,14 +486,14 @@ CLASS lcl_excel_common_test IMPLEMENTATION. TRY. ep_value = zcl_excel_common=>date_to_excel_string( '99991212' ). - ZCL_EXCEL_COMMON=>assert_equals( + zcl_excel_common=>assert_equals( act = ep_value exp = 2958446 msg = 'Wrong date conversion' level = if_aunit_constants=>critical ). CATCH zcx_excel INTO lx_excel. - ZCL_EXCEL_COMMON=>fail( + zcl_excel_common=>fail( msg = 'unexpected exception' level = if_aunit_constants=>critical " Error Severity ). @@ -498,14 +504,14 @@ CLASS lcl_excel_common_test IMPLEMENTATION. DATA: lv_date TYPE d. ep_value = zcl_excel_common=>date_to_excel_string( lv_date ). - ZCL_EXCEL_COMMON=>assert_equals( + zcl_excel_common=>assert_equals( act = ep_value exp = '' msg = 'Wrong date conversion' level = if_aunit_constants=>critical ). CATCH zcx_excel INTO lx_excel. - ZCL_EXCEL_COMMON=>fail( + zcl_excel_common=>fail( msg = 'unexpected exception' level = if_aunit_constants=>critical " Error Severity ). @@ -516,14 +522,14 @@ CLASS lcl_excel_common_test IMPLEMENTATION. DATA exp_value TYPE zexcel_cell_value VALUE 0. ep_value = zcl_excel_common=>date_to_excel_string( '18991231' ). - ZCL_EXCEL_COMMON=>assert_differs( + zcl_excel_common=>assert_differs( act = ep_value exp = exp_value msg = 'Wrong date conversion' level = if_aunit_constants=>critical ). CATCH zcx_excel INTO lx_excel. - ZCL_EXCEL_COMMON=>assert_equals( + zcl_excel_common=>assert_equals( act = lx_excel->error exp = 'Index out of bounds' msg = 'Dates prior of 1900 are not available in excel' @@ -541,14 +547,14 @@ CLASS lcl_excel_common_test IMPLEMENTATION. TRY. lv_encrypted_pwd = zcl_excel_common=>encrypt_password( 'test' ). - ZCL_EXCEL_COMMON=>assert_equals( + zcl_excel_common=>assert_equals( act = lv_encrypted_pwd exp = 'CBEB' msg = 'Wrong password encryption' level = if_aunit_constants=>critical ). CATCH zcx_excel INTO lx_excel. - ZCL_EXCEL_COMMON=>fail( + zcl_excel_common=>fail( msg = 'unexpected exception' level = if_aunit_constants=>critical " Error Severity ). @@ -565,14 +571,14 @@ CLASS lcl_excel_common_test IMPLEMENTATION. TRY. ep_value = zcl_excel_common=>excel_string_to_date( '0' ). - ZCL_EXCEL_COMMON=>assert_equals( + zcl_excel_common=>assert_equals( act = ep_value exp = '18991231' msg = 'Wrong date conversion' level = if_aunit_constants=>tolerable ). CATCH zcx_excel INTO lx_excel. - ZCL_EXCEL_COMMON=>fail( + zcl_excel_common=>fail( msg = 'unexpected exception' level = if_aunit_constants=>critical " Error Severity ). @@ -581,14 +587,14 @@ CLASS lcl_excel_common_test IMPLEMENTATION. TRY. ep_value = zcl_excel_common=>excel_string_to_date( '59' ). - ZCL_EXCEL_COMMON=>assert_equals( + zcl_excel_common=>assert_equals( act = ep_value exp = '19000228' msg = 'Wrong date conversion' level = if_aunit_constants=>critical ). CATCH zcx_excel INTO lx_excel. - ZCL_EXCEL_COMMON=>fail( + zcl_excel_common=>fail( msg = 'unexpected exception' level = if_aunit_constants=>critical " Error Severity ). @@ -596,14 +602,14 @@ CLASS lcl_excel_common_test IMPLEMENTATION. TRY. ep_value = zcl_excel_common=>excel_string_to_date( '61' ). - ZCL_EXCEL_COMMON=>assert_equals( + zcl_excel_common=>assert_equals( act = ep_value exp = '19000301' msg = 'Wrong date conversion' level = if_aunit_constants=>critical ). CATCH zcx_excel INTO lx_excel. - ZCL_EXCEL_COMMON=>fail( + zcl_excel_common=>fail( msg = 'unexpected exception' level = if_aunit_constants=>critical " Error Severity ). @@ -613,14 +619,14 @@ CLASS lcl_excel_common_test IMPLEMENTATION. TRY. ep_value = zcl_excel_common=>excel_string_to_date( '1' ). - ZCL_EXCEL_COMMON=>assert_equals( + zcl_excel_common=>assert_equals( act = ep_value exp = '19000101' msg = 'Wrong date conversion' level = if_aunit_constants=>critical ). CATCH zcx_excel INTO lx_excel. - ZCL_EXCEL_COMMON=>fail( + zcl_excel_common=>fail( msg = 'unexpected exception' level = if_aunit_constants=>critical " Error Severity ). @@ -630,14 +636,14 @@ CLASS lcl_excel_common_test IMPLEMENTATION. TRY. ep_value = zcl_excel_common=>excel_string_to_date( '2958446' ). - ZCL_EXCEL_COMMON=>assert_equals( + zcl_excel_common=>assert_equals( act = ep_value exp = '99991212' msg = 'Wrong date conversion' level = if_aunit_constants=>critical ). CATCH zcx_excel INTO lx_excel. - ZCL_EXCEL_COMMON=>fail( + zcl_excel_common=>fail( msg = 'unexpected exception' level = if_aunit_constants=>critical " Error Severity ). @@ -647,14 +653,14 @@ CLASS lcl_excel_common_test IMPLEMENTATION. TRY. ep_value = zcl_excel_common=>excel_string_to_date( '2958447' ). - ZCL_EXCEL_COMMON=>assert_differs( + zcl_excel_common=>assert_differs( act = ep_value exp = '99991212' msg = 'Wrong date conversion' level = if_aunit_constants=>fatal ). - ZCL_EXCEL_COMMON=>assert_differs( + zcl_excel_common=>assert_differs( act = ep_value exp = '00000000' msg = 'Wrong date conversion' @@ -662,7 +668,7 @@ CLASS lcl_excel_common_test IMPLEMENTATION. ). CATCH zcx_excel INTO lx_excel. - ZCL_EXCEL_COMMON=>assert_equals( + zcl_excel_common=>assert_equals( act = lx_excel->error exp = 'Index out of bounds' msg = 'Wrong exception is thrown' @@ -680,14 +686,14 @@ CLASS lcl_excel_common_test IMPLEMENTATION. TRY. ep_value = zcl_excel_common=>excel_string_to_time( '0' ). - ZCL_EXCEL_COMMON=>assert_equals( + zcl_excel_common=>assert_equals( act = ep_value exp = '000000' msg = 'Wrong date conversion' level = if_aunit_constants=>tolerable ). CATCH zcx_excel INTO lx_excel. - ZCL_EXCEL_COMMON=>fail( + zcl_excel_common=>fail( msg = 'unexpected exception' level = if_aunit_constants=>critical " Error Severity ). @@ -697,14 +703,14 @@ CLASS lcl_excel_common_test IMPLEMENTATION. TRY. ep_value = zcl_excel_common=>excel_string_to_time( '1' ). - ZCL_EXCEL_COMMON=>assert_equals( + zcl_excel_common=>assert_equals( act = ep_value exp = '000000' msg = 'Wrong date conversion' level = if_aunit_constants=>critical ). CATCH zcx_excel INTO lx_excel. - ZCL_EXCEL_COMMON=>fail( + zcl_excel_common=>fail( msg = 'unexpected exception' level = if_aunit_constants=>critical " Error Severity ). @@ -714,14 +720,14 @@ CLASS lcl_excel_common_test IMPLEMENTATION. TRY. ep_value = zcl_excel_common=>excel_string_to_time( '0.99999' ). - ZCL_EXCEL_COMMON=>assert_equals( + zcl_excel_common=>assert_equals( act = ep_value exp = '235959' msg = 'Wrong date conversion' level = if_aunit_constants=>critical ). CATCH zcx_excel INTO lx_excel. - ZCL_EXCEL_COMMON=>fail( + zcl_excel_common=>fail( msg = 'unexpected exception' level = if_aunit_constants=>critical " Error Severity ). @@ -731,14 +737,14 @@ CLASS lcl_excel_common_test IMPLEMENTATION. TRY. ep_value = zcl_excel_common=>excel_string_to_time( '4.1' ). - ZCL_EXCEL_COMMON=>assert_equals( + zcl_excel_common=>assert_equals( act = ep_value exp = '022400' msg = 'Wrong date conversion' level = if_aunit_constants=>critical ). CATCH zcx_excel INTO lx_excel. - ZCL_EXCEL_COMMON=>fail( + zcl_excel_common=>fail( msg = 'unexpected exception' level = if_aunit_constants=>critical " Error Severity ). @@ -748,14 +754,14 @@ CLASS lcl_excel_common_test IMPLEMENTATION. TRY. ep_value = zcl_excel_common=>excel_string_to_time( 'NaN' ). - ZCL_EXCEL_COMMON=>assert_differs( + zcl_excel_common=>assert_differs( act = ep_value exp = '000000' msg = 'Wrong date conversion' level = if_aunit_constants=>critical ). CATCH zcx_excel INTO lx_excel. - ZCL_EXCEL_COMMON=>assert_equals( + zcl_excel_common=>assert_equals( act = lx_excel->error exp = 'Unable to interpret time' msg = 'Time should be a valid string' @@ -773,14 +779,14 @@ CLASS lcl_excel_common_test IMPLEMENTATION. TRY. ep_value = zcl_excel_common=>time_to_excel_string( '000001' ). " A test directly in Excel returns the value 0.0000115740740740741000 - ZCL_EXCEL_COMMON=>assert_equals( + zcl_excel_common=>assert_equals( act = ep_value exp = '0.0000115740740741' msg = 'Wrong date conversion' level = if_aunit_constants=>critical ). CATCH zcx_excel INTO lx_excel. - ZCL_EXCEL_COMMON=>fail( + zcl_excel_common=>fail( msg = 'unexpected exception' level = if_aunit_constants=>critical " Error Severity ). @@ -790,14 +796,14 @@ CLASS lcl_excel_common_test IMPLEMENTATION. TRY. ep_value = zcl_excel_common=>time_to_excel_string( '235959' ). " A test directly in Excel returns the value 0.9999884259259260000000 - ZCL_EXCEL_COMMON=>assert_equals( + zcl_excel_common=>assert_equals( act = ep_value exp = '0.9999884259259260' msg = 'Wrong date conversion' level = if_aunit_constants=>critical ). CATCH zcx_excel INTO lx_excel. - ZCL_EXCEL_COMMON=>fail( + zcl_excel_common=>fail( msg = 'unexpected exception' level = if_aunit_constants=>critical " Error Severity ). @@ -807,14 +813,14 @@ CLASS lcl_excel_common_test IMPLEMENTATION. TRY. ep_value = zcl_excel_common=>time_to_excel_string( '000000' ). - ZCL_EXCEL_COMMON=>assert_equals( + zcl_excel_common=>assert_equals( act = ep_value exp = '0' msg = 'Wrong date conversion' level = if_aunit_constants=>critical ). CATCH zcx_excel INTO lx_excel. - ZCL_EXCEL_COMMON=>fail( + zcl_excel_common=>fail( msg = 'unexpected exception' level = if_aunit_constants=>critical " Error Severity ). @@ -824,14 +830,14 @@ CLASS lcl_excel_common_test IMPLEMENTATION. TRY. ep_value = zcl_excel_common=>time_to_excel_string( '022400' ). - ZCL_EXCEL_COMMON=>assert_equals( + zcl_excel_common=>assert_equals( act = ep_value exp = '0.1000000000000000' msg = 'Wrong date conversion' level = if_aunit_constants=>critical ). CATCH zcx_excel INTO lx_excel. - ZCL_EXCEL_COMMON=>fail( + zcl_excel_common=>fail( msg = 'unexpected exception' level = if_aunit_constants=>critical " Error Severity ). @@ -839,25 +845,83 @@ CLASS lcl_excel_common_test IMPLEMENTATION. ENDMETHOD. "time_To_Excel_String + METHOD split_file. +* ============================ + + DATA: ep_file TYPE text255, + ep_extension TYPE char10, + ep_dotextension TYPE char10. + + +* Test 1. Basic conversion + zcl_excel_common=>split_file( EXPORTING ip_file = 'filename.xml' + IMPORTING ep_file = ep_file + ep_extension = ep_extension + ep_dotextension = ep_dotextension ). + + zcl_excel_common=>assert_equals( + act = ep_file + exp = 'filename' + msg = 'Split filename failed' + level = if_aunit_constants=>critical ). + + zcl_excel_common=>assert_equals( + act = ep_extension + exp = 'xml' + msg = 'Split extension failed' + level = if_aunit_constants=>critical ). + + zcl_excel_common=>assert_equals( + act = ep_dotextension + exp = '.xml' + msg = 'Split extension failed' + level = if_aunit_constants=>critical ). + +* Test 2. no extension + zcl_excel_common=>split_file( EXPORTING ip_file = 'filename' + IMPORTING ep_file = ep_file + ep_extension = ep_extension + ep_dotextension = ep_dotextension ). + + zcl_excel_common=>assert_equals( + act = ep_file + exp = 'filename' + msg = 'Split filename failed' + level = if_aunit_constants=>critical ). + + zcl_excel_common=>assert_equals( + act = ep_extension + exp = '' + msg = 'Split extension failed' + level = if_aunit_constants=>critical ). + + zcl_excel_common=>assert_equals( + act = ep_dotextension + exp = '' + msg = 'Split extension failed' + level = if_aunit_constants=>critical ). + + ENDMETHOD. "split_file + ENDCLASS. "lcl_Excel_Common_Test ABAP - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + method ASSERT_DIFFERS. DATA: ls_seoclass TYPE seoclass. @@ -900,15 +964,15 @@ ENDCLASS. "lcl_Excel_Common_Test ENDIF. endmethod. - - - - - - - - - + + + + + + + + + method ASSERT_EQUALS. DATA: ls_seoclass TYPE seoclass. @@ -953,9 +1017,9 @@ endmethod. ENDIF. endmethod. - - - + + + method CHAR2HEX. IF o_conv IS NOT BOUND. @@ -970,10 +1034,10 @@ endmethod. endmethod. - - - - + + + + method CONVERT_COLUMN2ALPHA. DATA: lo_conv TYPE REF TO cl_abap_conv_in_ce, @@ -1000,10 +1064,10 @@ endmethod. endmethod. - - - - + + + + method CONVERT_COLUMN2INT. DATA: lv_uccpi TYPE i, @@ -1091,10 +1155,10 @@ endmethod. endmethod. - - - - + + + + method CONVERT_COLUMNROW2COLUMN_A_ROW. DATA: width TYPE i, col_width TYPE i, @@ -1113,13 +1177,13 @@ endmethod. e_row = row_str. endmethod. - - - - - - - + + + + + + + method CONVERT_RANGE2COLUMN_A_ROW. DATA: sheet TYPE string, @@ -1158,9 +1222,9 @@ endmethod. ). endmethod. - - - + + + method DATE_TO_EXCEL_STRING. DATA: lv_date_diff TYPE i. @@ -1230,9 +1294,9 @@ endmethod. method DESCRIBE_TABLE. endmethod. - - - + + + method ENCRYPT_PASSWORD. DATA lv_curr_offset TYPE i. @@ -1272,9 +1336,9 @@ endmethod. endmethod. - - - + + + method ESCAPE_STRING. DATA lv_value TYPE string. @@ -1290,10 +1354,10 @@ endmethod. endmethod. - - - - + + + + method EXCEL_STRING_TO_DATE. DATA: lv_date_int TYPE i. @@ -1313,10 +1377,10 @@ endmethod. ENDTRY. endmethod. - - - - + + + + method EXCEL_STRING_TO_TIME. DATA: lv_seconds_in_day TYPE i, lv_day_fraction TYPE f, @@ -1336,11 +1400,11 @@ endmethod. ENDTRY. endmethod. - - - - - + + + + + method FAIL. DATA: ls_seoclass TYPE seoclass. @@ -1376,9 +1440,9 @@ endmethod. endmethod. - - - + + + method GET_FIELDCATALOG. data: lr_data type ref to data, @@ -1401,9 +1465,9 @@ endmethod. endmethod. - - - + + + method NUMBER_TO_EXCEL_STRING. DATA: lv_value_c TYPE c LENGTH 100. @@ -1420,10 +1484,10 @@ endmethod. ENDIF. endmethod. - - - - + + + + method RECURSIVE_CLASS_TO_STRUCT. " # issue 139 * is working for me - but after looking through this coding I guess @@ -1479,10 +1543,10 @@ endmethod. endmethod. - - - - + + + + method RECURSIVE_STRUCT_TO_CLASS. " # issue 139 * is working for me - but after looking through this coding I guess @@ -1539,9 +1603,9 @@ endmethod. endmethod. - - - + + + method SHL01. DATA: @@ -1559,9 +1623,9 @@ endmethod. endmethod. - - - + + + method SHR14. DATA: @@ -1585,6 +1649,54 @@ endmethod. ENDDO. endmethod. + + + + + + + METHOD split_file. + + DATA: lt_hlp TYPE TABLE OF text255, + ls_hlp TYPE text255. + + DATA: lf_ext(10) TYPE c, + lf_dot_ext(10) TYPE c. + DATA: lf_str TYPE text255, + lf_anz TYPE i, + lf_len TYPE i. +** --------------------------------------------------------------------- + + CLEAR: lt_hlp, + ep_file, + ep_extension, + ep_dotextension. + +** Split the whole file at '.' + SPLIT ip_file AT '.' INTO TABLE lt_hlp. + +** get the extenstion from the last line of table + DESCRIBE TABLE lt_hlp LINES lf_anz. + IF lf_anz <= 1. + ep_file = ip_file. + EXIT. + ENDIF. + + READ TABLE lt_hlp INTO ls_hlp INDEX lf_anz. + ep_extension = ls_hlp. + lf_ext = ls_hlp. + IF NOT lf_ext IS INITIAL. + CONCATENATE '.' lf_ext INTO lf_dot_ext. + ENDIF. + ep_dotextension = lf_dot_ext. + +** get only the filename + lf_len = strlen( ip_file ) - strlen( lf_dot_ext ). + IF lf_len > 0. + ep_file = ip_file(lf_len). + ENDIF. + +ENDMETHOD. @@ -1625,9 +1737,9 @@ endmethod. endmethod. - - - + + + method TIME_TO_EXCEL_STRING. DATA: lv_seconds_in_day TYPE i, lv_day_fraction TYPE f, diff --git a/ZA2X/CLAS/ZCL_EXCEL_READER_2007.slnk b/ZA2X/CLAS/ZCL_EXCEL_READER_2007.slnk index 436bde3..6f943d8 100644 --- a/ZA2X/CLAS/ZCL_EXCEL_READER_2007.slnk +++ b/ZA2X/CLAS/ZCL_EXCEL_READER_2007.slnk @@ -1,13 +1,12 @@ - - - - + + - - - - - - - - - - - - - - - + class ZCL_EXCEL_READER_2007 definition public create public . @@ -247,10 +246,10 @@ protected section. *"* in the implementation part of the class IXML - - - - + + + + method ZIF_EXCEL_READER~CAN_READ_FILE. * For now always Unknown @@ -359,9 +358,9 @@ endmethod. r_excel = me->zif_excel_reader~load( excel_data ). endmethod. - - - + + + method FILL_STRUCT_FROM_ATTRIBUTES. DATA: name TYPE string, attributes TYPE REF TO if_ixml_named_node_map, @@ -386,10 +385,10 @@ endmethod. ENDWHILE. endmethod. - - - - + + + + method GET_FROM_ZIP_ARCHIVE. IF me->zip IS NOT BOUND. @@ -426,11 +425,11 @@ endmethod. endmethod. - - - - - + + + + + method GET_IXML_FROM_ZIP_ARCHIVE. TYPE-POOLS: ixml. @@ -456,10 +455,10 @@ endmethod. endmethod. - - - - + + + + method LOAD_DRAWING_ANCHOR. TYPES: BEGIN OF t_c_nv_pr, @@ -603,10 +602,10 @@ endmethod. endmethod. - - - - METHOD load_shared_strings. + + + + method LOAD_SHARED_STRINGS. DATA: value TYPE string, value2 TYPE string, shared_strings_xml TYPE REF TO if_ixml_document, @@ -660,12 +659,12 @@ endmethod. node ?= node->get_next( ). ENDWHILE. -ENDMETHOD. +endmethod. - - - - + + + + method LOAD_STYLES. TYPES: BEGIN OF t_xf, applyalignment TYPE string, @@ -834,9 +833,9 @@ ENDMETHOD. endmethod. - - - + + + method LOAD_STYLE_BORDERS. DATA: node TYPE REF TO if_ixml_element, node2 TYPE REF TO if_ixml_element, @@ -906,9 +905,9 @@ endmethod. ENDWHILE. endmethod. - - - + + + method LOAD_STYLE_FILLS. DATA: value TYPE string, node TYPE REF TO if_ixml_element, @@ -975,9 +974,9 @@ endmethod. endmethod. - - - + + + method LOAD_STYLE_FONTS. DATA: value TYPE string, node TYPE REF TO if_ixml_element, @@ -1053,9 +1052,9 @@ endmethod. endmethod. - - - + + + method LOAD_STYLE_NUM_FORMATS. DATA: node TYPE REF TO if_ixml_element, num_format TYPE t_num_format. @@ -1112,10 +1111,10 @@ endmethod. endmethod. - - - - + + + + method LOAD_WORKBOOK. CONSTANTS: lc_shared_strings TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/sharedStrings', @@ -1239,10 +1238,10 @@ endmethod. endmethod. - - - - + + + + method LOAD_WORKSHEET. TYPES: BEGIN OF t_cell, r TYPE string, @@ -1612,11 +1611,11 @@ endmethod. endmethod. - - - - - method LOAD_WORKSHEET_DRAWING. + + + + + METHOD load_worksheet_drawing. TYPES: BEGIN OF t_c_nv_pr, name TYPE string, @@ -1639,22 +1638,22 @@ endmethod. DATA: drawing TYPE REF TO if_ixml_document, anchors TYPE REF TO if_ixml_node_collection, - node type ref to if_ixml_element, + node TYPE REF TO if_ixml_element, coll_length TYPE i, iterator TYPE REF TO if_ixml_node_iterator, anchor_elem TYPE REF TO if_ixml_element, relationship TYPE t_relationship, rel_drawings TYPE t_rel_drawings, - rel_drawing type t_rel_drawing, + rel_drawing TYPE t_rel_drawing, rels_drawing TYPE REF TO if_ixml_document, rels_drawing_path TYPE string, stripped_name TYPE chkfile, dirname TYPE string, - path type string, - path2 TYPE draw-filep, - file_ext2 TYPE char32. + path TYPE string, + path2 TYPE text255, + file_ext2 TYPE char10. " Read Workbook Relationships CALL FUNCTION 'TRINT_SPLIT_FILE_AND_PATH' @@ -1677,11 +1676,13 @@ endmethod. rel_drawing-content = me->get_from_zip_archive( path ). path2 = path. - CALL FUNCTION 'CV120_SPLIT_FILE' - EXPORTING - pf_file = path2 - IMPORTING - pfx_extension = file_ext2. + zcl_excel_common=>split_file( EXPORTING ip_file = path2 + IMPORTING ep_extension = file_ext2 ). +* CALL FUNCTION 'CV120_SPLIT_FILE' +* EXPORTING +* pf_file = path2 +* IMPORTING +* pfx_extension = file_ext2. rel_drawing-file_ext = file_ext2. APPEND rel_drawing TO rel_drawings. @@ -1721,11 +1722,11 @@ endmethod. ENDDO. -endmethod. +ENDMETHOD. - - - + + + method RESOLVE_PATH. DATA: lt_segments TYPE TABLE OF string,