mirror of
https://github.com/abap2xlsx/abap2xlsx.git
synced 2025-05-04 23:19:45 +08:00
#235 Extended Readerclass to support templating of repeatable rows/columns, minor fix in zcl_excel_common-method for range-area-breakup
git-svn-id: https://subversion.assembla.com/svn/abap2xlsx/trunk@400 b7d68dce-7c3c-4a99-8ce0-9ea847f5d049
This commit is contained in:
parent
70e0659f82
commit
9b4aaf829f
|
@ -1243,6 +1243,13 @@ endmethod.</source>
|
|||
* - c) sheetname existing - does not start with ' example Sheet1!$B$6:$D$13
|
||||
* - d) no sheetname - just area example $B$6:$D$13
|
||||
*--------------------------------------------------------------------*
|
||||
* Initialize output parameters
|
||||
CLEAR: e_column_start,
|
||||
e_column_end,
|
||||
e_row_start,
|
||||
e_row_end,
|
||||
e_sheet.
|
||||
|
||||
IF i_range IS INITIAL. " a) input empty --> nothing to do
|
||||
EXIT.
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<CLAS CLSNAME="ZCL_EXCEL_READER_2007" VERSION="1" LANGU="E" DESCRIPT="Read Excel 2007 into ZCL_EXCEL" UUID="DFAC2E4C81CE84F1B39B000C29B7D360" CATEGORY="00" EXPOSURE="2" STATE="1" RELEASE="0" CLSCCINCL="X" FIXPT="X" UNICODE="X" CLSBCCAT="00" DURATION_TYPE="0 " RISK_LEVEL="0 ">
|
||||
<types CLSNAME="ZCL_EXCEL_READER_2007" CMPNAME="T_RELATIONSHIP" VERSION="1" LANGU="E" EXPOSURE="1" STATE="1" EDITORDER="1 " TYPTYPE="4" SRCROW1="6 " SRCCOLUMN1="4 " SRCROW2="12 " SRCCOLUMN2="29 " TYPESRC_LENG="326 " TYPESRC='BEGIN OF t_relationship,
|
||||
<types CLSNAME="ZCL_EXCEL_READER_2007" CMPNAME="T_RELATIONSHIP" VERSION="1" LANGU="E" EXPOSURE="1" STATE="1" EDITORDER="1 " TYPTYPE="4" SRCROW1="6 " SRCCOLUMN1="4 " SRCROW2="12 " SRCCOLUMN2="29 " TYPESRC_LENG="319 " TYPESRC='BEGIN OF t_relationship,
|
||||
id TYPE string,
|
||||
type TYPE string,
|
||||
target TYPE string,
|
||||
|
@ -8,7 +8,7 @@
|
|||
sheetid type string, "ins #235 - repeat rows/cols - needed to identify correct sheet
|
||||
END OF t_relationship
|
||||
'/>
|
||||
<types CLSNAME="ZCL_EXCEL_READER_2007" CMPNAME="T_FILEVERSION" VERSION="1" LANGU="E" EXPOSURE="1" STATE="1" EDITORDER="2 " TYPTYPE="4" SRCROW1="14 " SRCCOLUMN1="4 " SRCROW2="20 " SRCCOLUMN2="26 " TYPESRC_LENG="254 " TYPESRC="BEGIN OF t_fileversion,
|
||||
<types CLSNAME="ZCL_EXCEL_READER_2007" CMPNAME="T_FILEVERSION" VERSION="1" LANGU="E" EXPOSURE="1" STATE="1" EDITORDER="2 " TYPTYPE="4" SRCROW1="14 " SRCCOLUMN1="4 " SRCROW2="20 " SRCCOLUMN2="26 " TYPESRC_LENG="247 " TYPESRC="BEGIN OF t_fileversion,
|
||||
appname TYPE string,
|
||||
lastedited TYPE string,
|
||||
lowestedited TYPE string,
|
||||
|
@ -16,58 +16,58 @@
|
|||
codename TYPE string,
|
||||
END OF t_fileversion
|
||||
"/>
|
||||
<types CLSNAME="ZCL_EXCEL_READER_2007" CMPNAME="T_SHEET" VERSION="1" LANGU="E" EXPOSURE="1" STATE="1" EDITORDER="3 " TYPTYPE="4" SRCROW1="22 " SRCCOLUMN1="4 " SRCROW2="27 " SRCCOLUMN2="22 " TYPESRC_LENG="188 " TYPESRC="BEGIN OF t_sheet,
|
||||
<types CLSNAME="ZCL_EXCEL_READER_2007" CMPNAME="T_SHEET" VERSION="1" LANGU="E" EXPOSURE="1" STATE="1" EDITORDER="3 " TYPTYPE="4" SRCROW1="22 " SRCCOLUMN1="4 " SRCROW2="27 " SRCCOLUMN2="22 " TYPESRC_LENG="182 " TYPESRC="BEGIN OF t_sheet,
|
||||
name TYPE string,
|
||||
sheetid TYPE string,
|
||||
id TYPE string,
|
||||
state TYPE string,
|
||||
END OF t_sheet
|
||||
"/>
|
||||
<types CLSNAME="ZCL_EXCEL_READER_2007" CMPNAME="T_WORKBOOKPR" VERSION="1" LANGU="E" EXPOSURE="1" STATE="1" EDITORDER="4 " TYPTYPE="4" SRCROW1="29 " SRCCOLUMN1="4 " SRCROW2="32 " SRCCOLUMN2="27 " TYPESRC_LENG="150 " TYPESRC="BEGIN OF t_workbookpr,
|
||||
<types CLSNAME="ZCL_EXCEL_READER_2007" CMPNAME="T_WORKBOOKPR" VERSION="1" LANGU="E" EXPOSURE="1" STATE="1" EDITORDER="4 " TYPTYPE="4" SRCROW1="29 " SRCCOLUMN1="4 " SRCROW2="32 " SRCCOLUMN2="27 " TYPESRC_LENG="146 " TYPESRC="BEGIN OF t_workbookpr,
|
||||
codename TYPE string,
|
||||
defaultthemeversion TYPE string,
|
||||
END OF t_workbookpr
|
||||
"/>
|
||||
<types CLSNAME="ZCL_EXCEL_READER_2007" CMPNAME="T_SHEETPR" VERSION="1" LANGU="E" EXPOSURE="1" STATE="1" EDITORDER="5 " TYPTYPE="4" SRCROW1="34 " SRCCOLUMN1="4 " SRCROW2="36 " SRCCOLUMN2="24 " TYPESRC_LENG="96 " TYPESRC="BEGIN OF t_sheetpr,
|
||||
<types CLSNAME="ZCL_EXCEL_READER_2007" CMPNAME="T_SHEETPR" VERSION="1" LANGU="E" EXPOSURE="1" STATE="1" EDITORDER="5 " TYPTYPE="4" SRCROW1="34 " SRCCOLUMN1="4 " SRCROW2="36 " SRCCOLUMN2="24 " TYPESRC_LENG="93 " TYPESRC="BEGIN OF t_sheetpr,
|
||||
codename TYPE string,
|
||||
END OF t_sheetpr
|
||||
"/>
|
||||
<types CLSNAME="ZCL_EXCEL_READER_2007" CMPNAME="T_RANGE" VERSION="1" LANGU="E" EXPOSURE="1" STATE="1" EDITORDER="6 " TYPTYPE="4" SRCROW1="38 " SRCCOLUMN1="4 " SRCROW2="42 " SRCCOLUMN2="22 " TYPESRC_LENG="266 " TYPESRC="BEGIN OF t_range,
|
||||
<types CLSNAME="ZCL_EXCEL_READER_2007" CMPNAME="T_RANGE" VERSION="1" LANGU="E" EXPOSURE="1" STATE="1" EDITORDER="6 " TYPTYPE="4" SRCROW1="38 " SRCCOLUMN1="4 " SRCROW2="42 " SRCCOLUMN2="22 " TYPESRC_LENG="261 " TYPESRC="BEGIN OF t_range,
|
||||
name TYPE string,
|
||||
hidden type string, "inserted with issue #235 because Autofilters didn't passthrough
|
||||
localsheetid TYPE string, " issue #163
|
||||
END OF t_range
|
||||
"/>
|
||||
<types CLSNAME="ZCL_EXCEL_READER_2007" CMPNAME="T_FILLS" VERSION="1" LANGU="E" EXPOSURE="1" STATE="1" EDITORDER="7 " TYPTYPE="4" SRCROW1="44 " SRCCOLUMN1="4 " SRCROW2="44 " SRCCOLUMN2="91 " TYPESRC_LENG="90 " TYPESRC="t_fills TYPE STANDARD TABLE OF REF TO zcl_excel_style_fill WITH NON-UNIQUE DEFAULT KEY
|
||||
<types CLSNAME="ZCL_EXCEL_READER_2007" CMPNAME="T_FILLS" VERSION="1" LANGU="E" EXPOSURE="1" STATE="1" EDITORDER="7 " TYPTYPE="4" SRCROW1="44 " SRCCOLUMN1="4 " SRCROW2="44 " SRCCOLUMN2="91 " TYPESRC_LENG="89 " TYPESRC="t_fills TYPE STANDARD TABLE OF REF TO zcl_excel_style_fill WITH NON-UNIQUE DEFAULT KEY
|
||||
"/>
|
||||
<types CLSNAME="ZCL_EXCEL_READER_2007" CMPNAME="T_BORDERS" VERSION="1" LANGU="E" EXPOSURE="1" STATE="1" EDITORDER="8 " TYPTYPE="4" SRCROW1="46 " SRCCOLUMN1="4 " SRCROW2="46 " SRCCOLUMN2="94 " TYPESRC_LENG="93 " TYPESRC="t_borders TYPE STANDARD TABLE OF REF TO zcl_excel_style_borders WITH NON-UNIQUE DEFAULT KEY
|
||||
<types CLSNAME="ZCL_EXCEL_READER_2007" CMPNAME="T_BORDERS" VERSION="1" LANGU="E" EXPOSURE="1" STATE="1" EDITORDER="8 " TYPTYPE="4" SRCROW1="46 " SRCCOLUMN1="4 " SRCROW2="46 " SRCCOLUMN2="94 " TYPESRC_LENG="92 " TYPESRC="t_borders TYPE STANDARD TABLE OF REF TO zcl_excel_style_borders WITH NON-UNIQUE DEFAULT KEY
|
||||
"/>
|
||||
<types CLSNAME="ZCL_EXCEL_READER_2007" CMPNAME="T_FONTS" VERSION="1" LANGU="E" EXPOSURE="1" STATE="1" EDITORDER="9 " TYPTYPE="4" SRCROW1="48 " SRCCOLUMN1="4 " SRCROW2="48 " SRCCOLUMN2="91 " TYPESRC_LENG="90 " TYPESRC="t_fonts TYPE STANDARD TABLE OF REF TO zcl_excel_style_font WITH NON-UNIQUE DEFAULT KEY
|
||||
<types CLSNAME="ZCL_EXCEL_READER_2007" CMPNAME="T_FONTS" VERSION="1" LANGU="E" EXPOSURE="1" STATE="1" EDITORDER="9 " TYPTYPE="4" SRCROW1="48 " SRCCOLUMN1="4 " SRCROW2="48 " SRCCOLUMN2="91 " TYPESRC_LENG="89 " TYPESRC="t_fonts TYPE STANDARD TABLE OF REF TO zcl_excel_style_font WITH NON-UNIQUE DEFAULT KEY
|
||||
"/>
|
||||
<types CLSNAME="ZCL_EXCEL_READER_2007" CMPNAME="T_STYLE_REFS" VERSION="1" LANGU="E" EXPOSURE="1" STATE="1" EDITORDER="10 " TYPTYPE="4" SRCROW1="50 " SRCCOLUMN1="4 " SRCROW2="50 " SRCCOLUMN2="89 " TYPESRC_LENG="88 " TYPESRC="t_style_refs TYPE STANDARD TABLE OF REF TO zcl_excel_style WITH NON-UNIQUE DEFAULT KEY
|
||||
<types CLSNAME="ZCL_EXCEL_READER_2007" CMPNAME="T_STYLE_REFS" VERSION="1" LANGU="E" EXPOSURE="1" STATE="1" EDITORDER="10 " TYPTYPE="4" SRCROW1="50 " SRCCOLUMN1="4 " SRCROW2="50 " SRCCOLUMN2="89 " TYPESRC_LENG="87 " TYPESRC="t_style_refs TYPE STANDARD TABLE OF REF TO zcl_excel_style WITH NON-UNIQUE DEFAULT KEY
|
||||
"/>
|
||||
<types CLSNAME="ZCL_EXCEL_READER_2007" CMPNAME="T_NUM_FORMAT" VERSION="1" LANGU="E" EXPOSURE="1" STATE="1" EDITORDER="11 " TYPTYPE="4" SRCROW1="52 " SRCCOLUMN1="4 " SRCROW2="55 " SRCCOLUMN2="20 " TYPESRC_LENG="123 " TYPESRC="BEGIN OF t_num_format,
|
||||
<types CLSNAME="ZCL_EXCEL_READER_2007" CMPNAME="T_NUM_FORMAT" VERSION="1" LANGU="E" EXPOSURE="1" STATE="1" EDITORDER="11 " TYPTYPE="4" SRCROW1="52 " SRCCOLUMN1="4 " SRCROW2="55 " SRCCOLUMN2="20 " TYPESRC_LENG="119 " TYPESRC="BEGIN OF t_num_format,
|
||||
id TYPE string,
|
||||
format TYPE REF TO zcl_excel_style_number_format,
|
||||
END OF t_num_format
|
||||
"/>
|
||||
<types CLSNAME="ZCL_EXCEL_READER_2007" CMPNAME="T_NUM_FORMATS" VERSION="1" LANGU="E" EXPOSURE="1" STATE="1" EDITORDER="12 " TYPTYPE="4" SRCROW1="57 " SRCCOLUMN1="4 " SRCROW2="57 " SRCCOLUMN2="69 " TYPESRC_LENG="68 " TYPESRC="t_num_formats TYPE HASHED TABLE OF t_num_format WITH UNIQUE KEY id
|
||||
<types CLSNAME="ZCL_EXCEL_READER_2007" CMPNAME="T_NUM_FORMATS" VERSION="1" LANGU="E" EXPOSURE="1" STATE="1" EDITORDER="12 " TYPTYPE="4" SRCROW1="57 " SRCCOLUMN1="4 " SRCROW2="57 " SRCCOLUMN2="69 " TYPESRC_LENG="67 " TYPESRC="t_num_formats TYPE HASHED TABLE OF t_num_format WITH UNIQUE KEY id
|
||||
"/>
|
||||
<types CLSNAME="ZCL_EXCEL_READER_2007" CMPNAME="T_COLOR" VERSION="1" LANGU="E" EXPOSURE="1" STATE="1" EDITORDER="13 " TYPTYPE="4" SRCROW1="59 " SRCCOLUMN1="4 " SRCROW2="64 " SRCCOLUMN2="15 " TYPESRC_LENG="132 " TYPESRC="BEGIN OF t_color,
|
||||
<types CLSNAME="ZCL_EXCEL_READER_2007" CMPNAME="T_COLOR" VERSION="1" LANGU="E" EXPOSURE="1" STATE="1" EDITORDER="13 " TYPTYPE="4" SRCROW1="59 " SRCCOLUMN1="4 " SRCROW2="64 " SRCCOLUMN2="15 " TYPESRC_LENG="126 " TYPESRC="BEGIN OF t_color,
|
||||
indexed TYPE string,
|
||||
rgb TYPE string,
|
||||
theme TYPE string,
|
||||
tint TYPE string,
|
||||
END OF t_color
|
||||
"/>
|
||||
<types CLSNAME="ZCL_EXCEL_READER_2007" CMPNAME="T_REL_DRAWING" VERSION="1" LANGU="E" EXPOSURE="1" STATE="1" EDITORDER="14 " TYPTYPE="4" SRCROW1="66 " SRCCOLUMN1="4 " SRCROW2="71 " SRCCOLUMN2="23 " TYPESRC_LENG="181 " TYPESRC="BEGIN OF t_rel_drawing,
|
||||
<types CLSNAME="ZCL_EXCEL_READER_2007" CMPNAME="T_REL_DRAWING" VERSION="1" LANGU="E" EXPOSURE="1" STATE="1" EDITORDER="14 " TYPTYPE="4" SRCROW1="66 " SRCCOLUMN1="4 " SRCROW2="71 " SRCCOLUMN2="23 " TYPESRC_LENG="175 " TYPESRC="BEGIN OF t_rel_drawing,
|
||||
id TYPE string,
|
||||
content TYPE xstring,
|
||||
file_ext TYPE string,
|
||||
content_xml TYPE REF TO IF_IXML_DOCUMENT,
|
||||
END OF t_rel_drawing
|
||||
"/>
|
||||
<types CLSNAME="ZCL_EXCEL_READER_2007" CMPNAME="T_REL_DRAWINGS" VERSION="1" LANGU="E" EXPOSURE="1" STATE="1" EDITORDER="15 " TYPTYPE="4" SRCROW1="73 " SRCCOLUMN1="4 " SRCROW2="73 " SRCCOLUMN2="82 " TYPESRC_LENG="81 " TYPESRC="t_rel_drawings TYPE STANDARD TABLE OF t_rel_drawing WITH NON-UNIQUE DEFAULT KEY
|
||||
<types CLSNAME="ZCL_EXCEL_READER_2007" CMPNAME="T_REL_DRAWINGS" VERSION="1" LANGU="E" EXPOSURE="1" STATE="1" EDITORDER="15 " TYPTYPE="4" SRCROW1="73 " SRCCOLUMN1="4 " SRCROW2="73 " SRCCOLUMN2="82 " TYPESRC_LENG="80 " TYPESRC="t_rel_drawings TYPE STANDARD TABLE OF t_rel_drawing WITH NON-UNIQUE DEFAULT KEY
|
||||
"/>
|
||||
<implementing CLSNAME="ZCL_EXCEL_READER_2007" REFCLSNAME="ZIF_EXCEL_READER" VERSION="1" EXPOSURE="2" STATE="1" RELTYPE="1"/>
|
||||
<publicSection>class ZCL_EXCEL_READER_2007 definition
|
||||
|
@ -414,7 +414,7 @@ endmethod.</source>
|
|||
* issue#234 - error reading xlsx written by libre office
|
||||
* - Stefan Schmöcker, 2012-11-07
|
||||
* changes: passing new optional input parameter to private attribute
|
||||
*--------------------------------------------------------------------**--------------------------------------------------------------------*
|
||||
*--------------------------------------------------------------------*
|
||||
|
||||
CONSTANTS: lcv_load_from_frontend TYPE char1 VALUE 'F',
|
||||
lcv_load_from_backend TYPE char1 VALUE 'B'.
|
||||
|
@ -1835,7 +1835,12 @@ endmethod.</source>
|
|||
lo_autofilter TYPE REF TO zcl_excel_autofilter,
|
||||
ls_area TYPE zexcel_s_autofilter_area,
|
||||
lv_col_start_alpha TYPE zexcel_cell_column_alpha,
|
||||
lv_col_end_alpha TYPE zexcel_cell_column_alpha.
|
||||
lv_col_end_alpha TYPE zexcel_cell_column_alpha,
|
||||
lv_row_start TYPE zexcel_cell_row,
|
||||
lv_row_end TYPE zexcel_cell_row ,
|
||||
lv_regex TYPE string,
|
||||
lv_range_value_1 TYPE zexcel_range_value,
|
||||
lv_range_value_2 TYPE zexcel_range_value.
|
||||
*--------------------------------------------------------------------*
|
||||
* #229: Set active worksheet - end data declarations
|
||||
*--------------------------------------------------------------------*
|
||||
|
@ -2014,6 +2019,7 @@ endmethod.</source>
|
|||
ADD 1 TO lv_workbook_index.
|
||||
|
||||
ENDWHILE.
|
||||
SORT lt_worksheets BY sheetid. " needed for localSheetid -referencing
|
||||
*--------------------------------------------------------------------*
|
||||
* #229: Set active worksheet - begin coding
|
||||
* §3.2 Active worksheet
|
||||
|
@ -2063,6 +2069,9 @@ endmethod.</source>
|
|||
IF sy-subrc = 0.
|
||||
CASE ls_range-name.
|
||||
|
||||
*--------------------------------------------------------------------*
|
||||
* insert autofilters
|
||||
*--------------------------------------------------------------------*
|
||||
WHEN zcl_excel_autofilters=>c_autofilter.
|
||||
lo_autofilter = io_excel->add_new_autofilter( io_sheet = <worksheet>-worksheet ) .
|
||||
zcl_excel_common=>convert_range2column_a_row( EXPORTING i_range = lv_range_value
|
||||
|
@ -2073,8 +2082,67 @@ endmethod.</source>
|
|||
ls_area-col_end = zcl_excel_common=>convert_column2int( lv_col_end_alpha ).
|
||||
lo_autofilter->set_filter_area( is_area = ls_area ).
|
||||
|
||||
WHEN OTHERS.
|
||||
*--------------------------------------------------------------------*
|
||||
* repeat print rows/columns
|
||||
*--------------------------------------------------------------------*
|
||||
WHEN zif_excel_sheet_printsettings=>gcv_print_title_name.
|
||||
lo_range = <worksheet>-worksheet->add_new_range( ).
|
||||
*--------------------------------------------------------------------*
|
||||
* This might be a temporary solution. Maybe ranges get be reworked
|
||||
* to support areas consisting of multiple rectangles
|
||||
* But for now just split the range into row and columnpart
|
||||
*--------------------------------------------------------------------*
|
||||
CLEAR:lv_range_value_1,
|
||||
lv_range_value_2.
|
||||
IF lv_range_value IS INITIAL.
|
||||
* Empty --> nothing to do
|
||||
ELSE.
|
||||
IF lv_range_value(1) = `'`. " Escaped
|
||||
lv_regex = `^('[^']*')+![^,]*,`.
|
||||
ELSE.
|
||||
lv_regex = `^[^!]*![^,]*,`.
|
||||
ENDIF.
|
||||
* Split into two ranges if necessary
|
||||
FIND REGEX lv_regex IN lv_range_value MATCH LENGTH sy-fdpos.
|
||||
IF sy-subrc = 0 AND sy-fdpos > 0.
|
||||
lv_range_value_2 = lv_range_value+sy-fdpos.
|
||||
SUBTRACT 1 FROM sy-fdpos.
|
||||
lv_range_value_1 = lv_range_value(sy-fdpos).
|
||||
ELSE.
|
||||
lv_range_value_1 = lv_range_value.
|
||||
ENDIF.
|
||||
ENDIF.
|
||||
* 1st range
|
||||
zcl_excel_common=>convert_range2column_a_row( EXPORTING i_range = lv_range_value_1
|
||||
IMPORTING e_column_start = lv_col_start_alpha
|
||||
e_column_end = lv_col_end_alpha
|
||||
e_row_start = lv_row_start
|
||||
e_row_end = lv_row_end ).
|
||||
IF lv_col_start_alpha IS NOT INITIAL.
|
||||
<worksheet>-worksheet->zif_excel_sheet_printsettings~set_print_repeat_columns( iv_columns_from = lv_col_start_alpha
|
||||
iv_columns_to = lv_col_end_alpha ).
|
||||
ENDIF.
|
||||
IF lv_row_start IS NOT INITIAL.
|
||||
<worksheet>-worksheet->zif_excel_sheet_printsettings~set_print_repeat_rows( iv_rows_from = lv_row_start
|
||||
iv_rows_to = lv_row_end ).
|
||||
ENDIF.
|
||||
|
||||
* 2nd range
|
||||
zcl_excel_common=>convert_range2column_a_row( EXPORTING i_range = lv_range_value_2
|
||||
IMPORTING e_column_start = lv_col_start_alpha
|
||||
e_column_end = lv_col_end_alpha
|
||||
e_row_start = lv_row_start
|
||||
e_row_end = lv_row_end ).
|
||||
IF lv_col_start_alpha IS NOT INITIAL.
|
||||
<worksheet>-worksheet->zif_excel_sheet_printsettings~set_print_repeat_columns( iv_columns_from = lv_col_start_alpha
|
||||
iv_columns_to = lv_col_end_alpha ).
|
||||
ENDIF.
|
||||
IF lv_row_start IS NOT INITIAL.
|
||||
<worksheet>-worksheet->zif_excel_sheet_printsettings~set_print_repeat_rows( iv_rows_from = lv_row_start
|
||||
iv_rows_to = lv_row_end ).
|
||||
ENDIF.
|
||||
|
||||
WHEN OTHERS.
|
||||
|
||||
ENDCASE.
|
||||
ENDIF.
|
||||
|
|
Loading…
Reference in New Issue
Block a user