mirror of
https://github.com/abap2xlsx/abap2xlsx.git
synced 2025-05-04 23:19:45 +08:00
Issues #346,#154, #195: Problems when there is information in row_dimension but no cell content in that row
This commit is contained in:
parent
f60604601a
commit
90e805c9bf
|
@ -18,7 +18,7 @@
|
|||
<attribute CLSNAME="ZCL_EXCEL_WRITER_2007" CMPNAME="C_XL_CALCCHAIN" VERSION="1" LANGU="E" DESCRIPT="xlcalcChain XML File Name" EXPOSURE="1" STATE="1" EDITORDER="11 " ATTDECLTYP="2" ATTVALUE="'xl/calcChain.xml'" ATTEXPVIRT="0" TYPTYPE="1" TYPE="STRING" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " TYPESRC_LENG="0 "/>
|
||||
<attribute CLSNAME="ZCL_EXCEL_WRITER_2007" CMPNAME="C_XL_DRAWINGS" VERSION="1" LANGU="E" DESCRIPT="xlDrawings XML File Name" EXPOSURE="1" STATE="1" EDITORDER="7 " ATTDECLTYP="2" ATTVALUE="'xl/drawings/drawing#.xml'" ATTEXPVIRT="0" TYPTYPE="1" TYPE="STRING" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " TYPESRC_LENG="0 "/>
|
||||
<attribute CLSNAME="ZCL_EXCEL_WRITER_2007" CMPNAME="C_XL_DRAWINGS_RELS" VERSION="1" LANGU="E" DESCRIPT="xlDrawings XML File Name" EXPOSURE="1" STATE="1" EDITORDER="8 " ATTDECLTYP="2" ATTVALUE="'xl/drawings/_rels/drawing#.xml.rels'" ATTEXPVIRT="0" TYPTYPE="1" TYPE="STRING" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " TYPESRC_LENG="0 "/>
|
||||
<attribute CLSNAME="ZCL_EXCEL_WRITER_2007" CMPNAME="C_XL_PRINTERSETTINGS" VERSION="1" LANGU="E" DESCRIPT="xlDrawings XML File Name" EXPOSURE="1" STATE="1" EDITORDER="21 " ATTDECLTYP="2" ATTVALUE="'xl/printerSettings/printerSettings#.bin'" ATTEXPVIRT="0" TYPTYPE="1" TYPE="STRING" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " TYPESRC_LENG="0 "/>
|
||||
<attribute CLSNAME="ZCL_EXCEL_WRITER_2007" CMPNAME="C_XL_PRINTERSETTINGS" VERSION="1" LANGU="E" DESCRIPT="xlDrawings XML File Name" EXPOSURE="0" STATE="1" EDITORDER="21 " ATTDECLTYP="2" ATTVALUE="'xl/printerSettings/printerSettings#.bin'" ATTEXPVIRT="0" TYPTYPE="1" TYPE="STRING" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " TYPESRC_LENG="0 "/>
|
||||
<attribute CLSNAME="ZCL_EXCEL_WRITER_2007" CMPNAME="C_XL_RELATIONSHIPS" VERSION="1" LANGU="E" DESCRIPT="xlRels XML File Name" EXPOSURE="1" STATE="1" EDITORDER="9 " ATTDECLTYP="2" ATTVALUE="'xl/_rels/workbook.xml.rels'" ATTEXPVIRT="0" TYPTYPE="1" TYPE="STRING" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " TYPESRC_LENG="0 "/>
|
||||
<attribute CLSNAME="ZCL_EXCEL_WRITER_2007" CMPNAME="C_XL_SHAREDSTRINGS" VERSION="1" LANGU="E" DESCRIPT="xlSharedStrings XML File Name" EXPOSURE="1" STATE="1" EDITORDER="10 " ATTDECLTYP="2" ATTVALUE="'xl/sharedStrings.xml'" ATTEXPVIRT="0" TYPTYPE="1" TYPE="STRING" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " TYPESRC_LENG="0 "/>
|
||||
<attribute CLSNAME="ZCL_EXCEL_WRITER_2007" CMPNAME="C_XL_SHEET" VERSION="1" LANGU="E" DESCRIPT="xlSheet XML File Name Template" EXPOSURE="1" STATE="1" EDITORDER="12 " ATTDECLTYP="2" ATTVALUE="'xl/worksheets/sheet#.xml'" ATTEXPVIRT="0" TYPTYPE="1" TYPE="STRING" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " TYPESRC_LENG="0 "/>
|
||||
|
@ -28,8 +28,8 @@
|
|||
<attribute CLSNAME="ZCL_EXCEL_WRITER_2007" CMPNAME="C_XL_WORKBOOK" VERSION="1" LANGU="E" DESCRIPT="xlWorkbook XML File Name" EXPOSURE="1" STATE="1" EDITORDER="16 " ATTDECLTYP="2" ATTVALUE="'xl/workbook.xml'" ATTEXPVIRT="0" TYPTYPE="1" TYPE="STRING" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " TYPESRC_LENG="0 "/>
|
||||
<attribute CLSNAME="ZCL_EXCEL_WRITER_2007" CMPNAME="EXCEL" VERSION="1" LANGU="E" DESCRIPT="Excel creator" EXPOSURE="1" STATE="1" EDITORDER="17 " ATTDECLTYP="0" ATTEXPVIRT="0" TYPTYPE="3" TYPE="ZCL_EXCEL" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " TYPESRC_LENG="0 "/>
|
||||
<attribute CLSNAME="ZCL_EXCEL_WRITER_2007" CMPNAME="SHARED_STRINGS" VERSION="1" LANGU="E" DESCRIPT="Shared Strings" EXPOSURE="0" STATE="1" EDITORDER="18 " ATTDECLTYP="0" ATTEXPVIRT="0" TYPTYPE="1" TYPE="ZEXCEL_T_SHARED_STRING" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " TYPESRC_LENG="0 "/>
|
||||
<attribute CLSNAME="ZCL_EXCEL_WRITER_2007" CMPNAME="STYLES_COND_MAPPING" VERSION="1" LANGU="E" DESCRIPT="Styles mapping" EXPOSURE="0" STATE="1" EDITORDER="19 " ATTDECLTYP="0" ATTEXPVIRT="0" TYPTYPE="1" TYPE="ZEXCEL_T_STYLES_COND_MAPPING" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " TYPESRC_LENG="0 "/>
|
||||
<attribute CLSNAME="ZCL_EXCEL_WRITER_2007" CMPNAME="STYLES_MAPPING" VERSION="1" LANGU="E" DESCRIPT="Styles mapping" EXPOSURE="0" STATE="1" EDITORDER="20 " ATTDECLTYP="0" ATTEXPVIRT="0" TYPTYPE="1" TYPE="ZEXCEL_T_STYLES_MAPPING" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " TYPESRC_LENG="0 "/>
|
||||
<attribute CLSNAME="ZCL_EXCEL_WRITER_2007" CMPNAME="STYLES_COND_MAPPING" VERSION="1" LANGU="E" DESCRIPT="Styles mapping" EXPOSURE="1" STATE="1" EDITORDER="19 " ATTDECLTYP="0" ATTEXPVIRT="0" TYPTYPE="1" TYPE="ZEXCEL_T_STYLES_COND_MAPPING" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " TYPESRC_LENG="0 "/>
|
||||
<attribute CLSNAME="ZCL_EXCEL_WRITER_2007" CMPNAME="STYLES_MAPPING" VERSION="1" LANGU="E" DESCRIPT="Styles mapping" EXPOSURE="1" STATE="1" EDITORDER="20 " ATTDECLTYP="0" ATTEXPVIRT="0" TYPTYPE="1" TYPE="ZEXCEL_T_STYLES_MAPPING" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " TYPESRC_LENG="0 "/>
|
||||
<interfaceMethod CLSNAME="ZCL_EXCEL_WRITER_2007" CPDNAME="ZIF_EXCEL_WRITER~WRITE_FILE">
|
||||
<source>method ZIF_EXCEL_WRITER~WRITE_FILE.
|
||||
me->excel = io_excel.
|
||||
|
@ -2838,6 +2838,7 @@
|
|||
lo_data_validation TYPE REF TO zcl_excel_data_validation,
|
||||
lo_table TYPE REF TO zcl_excel_table,
|
||||
row_dimension TYPE REF TO zcl_excel_worksheet_rowdimensi,
|
||||
lo_row_dim_empty TYPE REF TO zcl_excel_worksheet_rowdimensi,
|
||||
default_col_dimension TYPE REF TO zcl_excel_worksheet_columndime,
|
||||
default_row_dimension TYPE REF TO zcl_excel_worksheet_rowdimensi.
|
||||
|
||||
|
@ -2870,6 +2871,10 @@
|
|||
lv_relation_id TYPE i VALUE 0,
|
||||
outline_level_row TYPE i VALUE 0,
|
||||
outline_level_col TYPE i VALUE 0,
|
||||
lv_current_row TYPE i,
|
||||
lv_next_row TYPE i,
|
||||
ls_sheet_content LIKE LINE OF io_worksheet->sheet_content,
|
||||
ls_sheet_content_empty LIKE LINE OF io_worksheet->sheet_content,
|
||||
col_count TYPE int4,
|
||||
merge_count TYPE int4,
|
||||
write_current_row TYPE boolean,
|
||||
|
@ -3353,12 +3358,40 @@
|
|||
* issue #220 - If cell in tables-area don't use default from row or column or sheet - Coding 1 - end
|
||||
*--------------------------------------------------------------------*
|
||||
|
||||
LOOP AT io_worksheet->sheet_content ASSIGNING <ls_sheet_content>.
|
||||
LOOP AT io_worksheet->sheet_content INTO ls_sheet_content.
|
||||
READ TABLE lt_values INTO ls_values WITH KEY column = ls_last_row-cell_column.
|
||||
IF sy-subrc = 0 AND ls_values-value = ls_last_row-cell_value.
|
||||
CLEAR l_autofilter_hidden.
|
||||
ENDIF.
|
||||
CLEAR ls_style_mapping.
|
||||
* Create row element
|
||||
* issues #346,#154, #195 - problems when we have information in row_dimension but no cell content in that row
|
||||
* Get next line that may have to be added. If we have empty lines this is the next line after previous cell content
|
||||
* Otherwise it is the line of the current cell content
|
||||
lv_current_row = ls_last_row-cell_row + 1.
|
||||
IF lv_current_row > ls_sheet_content-cell_row.
|
||||
lv_current_row = ls_sheet_content-cell_row.
|
||||
ENDIF.
|
||||
* Fill in empty lines if necessary - assign an emtpy sheet content
|
||||
lv_next_row = lv_current_row.
|
||||
WHILE lv_next_row <= ls_sheet_content-cell_row.
|
||||
lv_current_row = lv_next_row.
|
||||
lv_next_row = lv_current_row + 1.
|
||||
IF lv_current_row = ls_sheet_content-cell_row. " cell value found in this row
|
||||
ASSIGN ls_sheet_content TO <ls_sheet_content>.
|
||||
ELSE.
|
||||
* Check if empty row is really necessary - this is basically the case when we have information in row_dimension
|
||||
lo_row_dim_empty = io_worksheet->get_row_dimension( lv_current_row ).
|
||||
CHECK lo_row_dim_empty->get_row_height( ) >= 0 OR
|
||||
lo_row_dim_empty->get_collapsed( ) = abap_true OR
|
||||
lo_row_dim_empty->get_outline_level( ) > 0 OR
|
||||
lo_row_dim_empty->get_xf_index( ) <> 0.
|
||||
" Dummyentry A1
|
||||
ls_sheet_content_empty-cell_row = lv_current_row.
|
||||
ls_sheet_content_empty-cell_column = 1.
|
||||
ASSIGN ls_sheet_content_empty TO <ls_sheet_content>.
|
||||
ENDIF.
|
||||
|
||||
IF ls_last_row-cell_row NE <ls_sheet_content>-cell_row.
|
||||
IF lo_autofilter IS BOUND.
|
||||
IF ls_area-row_start >= ls_last_row-cell_row OR " One less for header
|
||||
|
@ -3426,6 +3459,7 @@
|
|||
ENDIF.
|
||||
l_autofilter_hidden = abap_true. " First default is not showing
|
||||
ENDIF.
|
||||
ENDWHILE.
|
||||
|
||||
lo_element_3 = lo_document->create_simple_element( name = lc_xml_node_c
|
||||
parent = lo_document ).
|
||||
|
@ -3508,7 +3542,7 @@
|
|||
lo_element_4 = lo_document->create_simple_element( name = lc_xml_node_v
|
||||
parent = lo_document ).
|
||||
|
||||
IF <ls_sheet_content>-data_type EQ 's' or <ls_sheet_content>-data_type EQ 's_leading_blanks'.
|
||||
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 ).
|
||||
|
@ -6174,10 +6208,10 @@ ENDMETHOD.</source>
|
|||
ENDIF.
|
||||
endmethod.</source>
|
||||
</method>
|
||||
<method CLSNAME="ZCL_EXCEL_WRITER_2007" CMPNAME="GET_SHARED_STRING_INDEX" VERSION="1" LANGU="E" DESCRIPT="Get shared string index" EXPOSURE="0" STATE="1" EDITORDER="20 " DISPID="0 " MTDTYPE="0" MTDDECLTYP="0" BCMTDCAT="00" BCMTDSYN="0">
|
||||
<method CLSNAME="ZCL_EXCEL_WRITER_2007" CMPNAME="GET_SHARED_STRING_INDEX" VERSION="1" LANGU="E" DESCRIPT="Get shared string index" EXPOSURE="1" STATE="1" EDITORDER="20 " DISPID="0 " MTDTYPE="0" MTDDECLTYP="0" BCMTDCAT="00" BCMTDSYN="0">
|
||||
<parameter CLSNAME="ZCL_EXCEL_WRITER_2007" CMPNAME="GET_SHARED_STRING_INDEX" SCONAME="IP_CELL_VALUE" VERSION="1" LANGU="E" DESCRIPT="Cell Value" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="ZEXCEL_CELL_VALUE"/>
|
||||
<parameter CLSNAME="ZCL_EXCEL_WRITER_2007" CMPNAME="GET_SHARED_STRING_INDEX" SCONAME="EP_INDEX" VERSION="1" LANGU="E" DESCRIPT="Natural Number" CMPTYPE="1" MTDTYPE="0" EDITORDER="2 " DISPID="0 " PARDECLTYP="3" PARPASSTYP="0" TYPTYPE="1" TYPE="INT4"/>
|
||||
<source>method GET_SHARED_STRING_INDEX.
|
||||
<source>METHOD get_shared_string_index.
|
||||
|
||||
|
||||
DATA ls_shared_string TYPE zexcel_s_shared_string.
|
||||
|
@ -6185,6 +6219,6 @@ ENDMETHOD.</source>
|
|||
READ TABLE shared_strings INTO ls_shared_string WITH KEY string_value = ip_cell_value BINARY SEARCH.
|
||||
ep_index = ls_shared_string-string_no.
|
||||
|
||||
endmethod.</source>
|
||||
ENDMETHOD.</source>
|
||||
</method>
|
||||
</CLAS>
|
||||
|
|
Loading…
Reference in New Issue
Block a user