Merge branch 'master' into hvam/unit0511

This commit is contained in:
Lars Hvam 2021-12-20 06:59:16 +01:00 committed by GitHub
commit 295b6b840f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
55 changed files with 3841 additions and 1344 deletions

12
.apack-manifest.xml Normal file
View File

@ -0,0 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
<asx:values>
<DATA>
<GROUP_ID>github.com/abap2xlsx/abap2xlsx</GROUP_ID>
<ARTIFACT_ID>abap2xlsx</ARTIFACT_ID>
<VERSION>7.14.0</VERSION>
<REPOSITORY_TYPE>abapGit</REPOSITORY_TYPE>
<GIT_URL>https://github.com/abap2xlsx/abap2xlsx.git</GIT_URL>
</DATA>
</asx:values>
</asx:abap>

View File

@ -1,6 +1,6 @@
# abap2xlsx - Read and generate Excel Spreadsheets with ABAP # abap2xlsx - Read and generate Excel Spreadsheets with ABAP
For general information please refer to the blog series [abap2xlsx - Generate your professional Excel spreadsheet from ABAP](http://scn.sap.com/community/abap/blog/2010/07/12/abap2xlsx--generate-your-professional-excel-spreadsheet-from-abap) and the [documentation](https://sapmentors.github.io/abap2xlsx/). For general information please refer to the blog series [abap2xlsx - Generate your professional Excel spreadsheet from ABAP](http://scn.sap.com/community/abap/blog/2010/07/12/abap2xlsx--generate-your-professional-excel-spreadsheet-from-abap) and the [documentation](https://abap2xlsx.github.io/abap2xlsx/).
Please refer to the official wiki for the [abapGit installation guide](https://sapmentors.github.io/abap2xlsx/abapGit-installation). Please refer to the official wiki for the [abapGit installation guide](https://abap2xlsx.github.io/abap2xlsx/abapGit-installation).
For questions, bug reports and more information on contributing to the project, please refer to the [contributing guidelines](./CONTRIBUTING.md). For questions, bug reports and more information on contributing to the project, please refer to the [contributing guidelines](./CONTRIBUTING.md).

122
changelog.txt Normal file
View File

@ -0,0 +1,122 @@
abapGit changelog
=================
Legend
------
* : fixed
! : changed
+ : added
- : removed
2021-11-11 v7.14.0
------------------
+ changelog
! Refactor ABAP Cloud: column width based on SAP font
! Refactor ABAP Cloud: DDIC references changed
! Refactor ABAP Cloud: collection classes
! Refactor: split unit tests into one method per case
! pretty print zcl_excel_worksheet
* SET_CELL_FORMULA: set formula even if cell was uninitialized
! Refactor: replace all macros with methods
+ Add ability to generate report from template
* Read range of print titles
+ Multiple Styles in One Cell ("rich text format")
+ Bind ALV with non-displayed SALV data
+ new feature "Ignored Errors"
* Ignore invalid Excel Table names
+ new feature "Calculated Columns"
* better error message for ZDEMO_EXCEL25
2021-10-11 v7.13.0
------------------
! zcl_excel_common: refactor unit tests
! Refactor: replace zcl_excel_aunit with cl_abap_unit_assert
! Refactor ABAP Cloud: DDIC references changed
* clear Style exporting parameter in GET_CELL
+ Conditional Formatting for Cells that "Begin With" and more
- Delete unused customui objects
* ZDEMO_EXCEL37 incorrect screen field labels
* SHIFT_FORMULA
! Refactor: replace macro with method in zcl_excel_style_number_format
* autofilter messed up if several sheets
* autofilter + filtering value, then read it, the filtering value is lost
* autofilter on row 2 is incorrectly set on row 1
! Refactor: change EXIT to RETURN, where applicable
! Refactor: zcl_excel_common: refactor STATICS to CLASS-DATA
* Writer: trailing spaces of cell values lost
! Refactor: move zexcel_s_org_rel to demos
! update to latest abapGit format
! abaplint to not change sy fields anymore
! Refactor: Do not change sy fields anymore
! abapGit diff says zdemo_calendar_classes has changed
! update abaplint configuration to latest
! Refactor: Move non-Cloud code to separate package (#795) …
* Reader: empty Excel date -> ABAP 00000000
2021-09-11 v7.12.0
------------------
! First draft of the contributing guidelines
! Refactor: remove usage of CHAR07 domain
2021-08-11 v7.11.0
------------------
! Pretty print on all source code
! Create coding-guidelines.md
! remove usage of CHAR08 DTEL
! remove usage of CHAR10 domain
! remove usage of OS_BOOLEAN
2021-07-11 v7.10.0
------------------
! remove unused DOMA
! Reader: wrong worksheet dimension
* GET_TABLE: support fields of type date
* Vietnamese, Emoji and other characters not rendered in old SAP versions
* SET_TABLE: support table headers with newline
* SET_CELL: support values with wildcard format like `_x0041_`
2021-06-11 v7.9.0
------------------
! update linter config to latest
+ Remove 15 chars. limit at encrypt password
+ Reader to read range of hyperlinks and new method SET_AREA_HYPERLINK
* Vietnamese, Emoji and other characters not rendered
* Update of ZDEMO_EXCEL31 to use CALCULATE_COLUMN_WIDTHS
! remove CHAR01
2021-05-11 v7.8.0
------------------
! remove "BOOLEAN" domain
! replace messages with ones from ZABAP2XLSX message class
2021-04-11 v7.7.0
------------------
! remove CHAR_02 domain
! abapGit format update
2021-03-11 v7.6.0
------------------
! AUnit warning zcl excel reader huge file "# au > "#au
! Remove doma ZEXCEL_BOOLE01
2021-02-11 v7.5.0
------------------
+ Possibility to get the fieldcatalog with mandt
! cleanup types in zif_excel_book_protection
2021-01-11 v7.4.0
------------------
! warning about SAPLink in documentation, and replace obsolete links in zangry_birds and zdemo_excel1
! remove XFELD usage
! Dynamic prefill of date in zdemo_calendar
2020-12-11 v7.3.0
------------------
* Fix in ZDEMO_EXCEL11: Field-symbol usage
! Update abapGit-installation.md
2020-11-11 v7.2.0
------------------
! Improve Documentaiton
! Fix package errors
+ Feature: Enable custom converters

View File

@ -4,7 +4,7 @@
## Procedure ## Procedure
Execute abapGit using the report **ZABAPGIT_FULL**, click on *New Online*, fill the field *Git repository URL* with *https://github.com/sapmentors/abap2xlsx.git*, package with *$abap2xls* if you just want to test. If you want to transport abap2xlsx to production then use a non local package. Click *Create package* if the package doesn't exist yet. Then click *Clone online repo* Execute abapGit using the report **ZABAPGIT_FULL**, click on *New Online*, fill the field *Git repository URL* with *https://github.com/abap2xlsx/abap2xlsx.git*, package with *$abap2xls* if you just want to test. If you want to transport abap2xlsx to production then use a non local package. Click *Create package* if the package doesn't exist yet. Then click *Clone online repo*
![abapGit New Online Repository](new-online-abap2xlsx.png) ![abapGit New Online Repository](new-online-abap2xlsx.png)

View File

@ -1,6 +1,6 @@
# Naming convention of variables, etc. # Naming convention of variables, etc.
In abap2xlsx, over time, alas, the ABAP code came to mix different [naming standards](https://github.com/sapmentors/abap2xlsx/issues/773). Naming standards may vary from one class to another, but one naming standards is usually correctly applied in each class. In abap2xlsx, over time, alas, the ABAP code came to mix different [naming standards](https://github.com/abap2xlsx/abap2xlsx/issues/773). Naming standards may vary from one class to another, but one naming standards is usually correctly applied in each class.
It's not possible to impose one naming standards by fixing the existing names, because clients may have developed custom programs which may already refer to them. It's not possible to impose one naming standards by fixing the existing names, because clients may have developed custom programs which may already refer to them.
When it's about adding a new variable, parameter or type in an existing object or method, it's embarrassing to impose one naming standards because that could be inconsistent with the variables, parameters or types which already exist at this place. When it's about adding a new variable, parameter or type in an existing object or method, it's embarrassing to impose one naming standards because that could be inconsistent with the variables, parameters or types which already exist at this place.

View File

@ -722,10 +722,10 @@ START-OF-SELECTION.
ip_value = 'Created with abap2xlsx' ip_value = 'Created with abap2xlsx'
ip_style = lv_style_credit_guid ). ip_style = lv_style_credit_guid ).
lo_hyperlink = zcl_excel_hyperlink=>create_external_link( iv_url = 'https://sapmentors.github.io/abap2xlsx' ). lo_hyperlink = zcl_excel_hyperlink=>create_external_link( iv_url = 'https://abap2xlsx.github.io/abap2xlsx' ).
lo_worksheet->set_cell( ip_column = 'AP' lo_worksheet->set_cell( ip_column = 'AP'
ip_row = 24 ip_row = 24
ip_value = 'https://sapmentors.github.io/abap2xlsx' ip_value = 'https://abap2xlsx.github.io/abap2xlsx'
ip_style = lv_style_link_guid ip_style = lv_style_link_guid
ip_hyperlink = lo_hyperlink ). ip_hyperlink = lo_hyperlink ).

View File

@ -26,7 +26,7 @@
<item> <item>
<ID>I</ID> <ID>I</ID>
<KEY>002</KEY> <KEY>002</KEY>
<ENTRY>Created with abap2xlsx. Find more information at https://github.com/sapmentors/abap2xlsx.</ENTRY> <ENTRY>Created with abap2xlsx. Find more information at https://github.com/abap2xlsx/abap2xlsx.</ENTRY>
<LENGTH>132</LENGTH> <LENGTH>132</LENGTH>
</item> </item>
<item> <item>
@ -84,7 +84,7 @@
<item> <item>
<ID>I</ID> <ID>I</ID>
<KEY>002</KEY> <KEY>002</KEY>
<ENTRY>Erzeugt mit abap2xlsx. Weitere Informationen unter https://github.com/sapmentors/abap2xlsx.</ENTRY> <ENTRY>Erzeugt mit abap2xlsx. Weitere Informationen unter https://github.com/abap2xlsx/abap2xlsx.</ENTRY>
<LENGTH>132</LENGTH> <LENGTH>132</LENGTH>
</item> </item>
<item> <item>

View File

@ -347,8 +347,8 @@ CLASS zcl_helper IMPLEMENTATION.
DATA: value TYPE string, DATA: value TYPE string,
hyperlink TYPE REF TO zcl_excel_hyperlink. hyperlink TYPE REF TO zcl_excel_hyperlink.
value = 'Created with abap2xlsx. Find more information at https://github.com/sapmentors/abap2xlsx.'(002). value = 'Created with abap2xlsx. Find more information at https://github.com/abap2xlsx/abap2xlsx.'(002).
hyperlink = zcl_excel_hyperlink=>create_external_link( 'https://github.com/sapmentors/abap2xlsx' ). "#EC NOTEXT hyperlink = zcl_excel_hyperlink=>create_external_link( 'https://github.com/abap2xlsx/abap2xlsx' ). "#EC NOTEXT
c_worksheet->set_cell( c_worksheet->set_cell(
EXPORTING EXPORTING
ip_column = i_from_col " Cell Column ip_column = i_from_col " Cell Column

View File

@ -28,7 +28,7 @@ START-OF-SELECTION.
lo_worksheet->set_cell( ip_column = 'B' ip_row = 2 ip_value = 'Hello world' ). lo_worksheet->set_cell( ip_column = 'B' ip_row = 2 ip_value = 'Hello world' ).
lo_worksheet->set_cell( ip_column = 'B' ip_row = 3 ip_value = sy-datum ). lo_worksheet->set_cell( ip_column = 'B' ip_row = 3 ip_value = sy-datum ).
lo_worksheet->set_cell( ip_column = 'C' ip_row = 3 ip_value = sy-uzeit ). lo_worksheet->set_cell( ip_column = 'C' ip_row = 3 ip_value = sy-uzeit ).
lo_hyperlink = zcl_excel_hyperlink=>create_external_link( iv_url = 'https://sapmentors.github.io/abap2xlsx' ). lo_hyperlink = zcl_excel_hyperlink=>create_external_link( iv_url = 'https://abap2xlsx.github.io/abap2xlsx' ).
lo_worksheet->set_cell( ip_column = 'B' ip_row = 4 ip_value = 'Click here to visit abap2xlsx homepage' ip_hyperlink = lo_hyperlink ). lo_worksheet->set_cell( ip_column = 'B' ip_row = 4 ip_value = 'Click here to visit abap2xlsx homepage' ip_hyperlink = lo_hyperlink ).
lo_worksheet->set_cell( ip_column = 'B' ip_row = 6 ip_value = '你好,世界' ). lo_worksheet->set_cell( ip_column = 'B' ip_row = 6 ip_value = '你好,世界' ).

View File

@ -96,6 +96,8 @@ START-OF-SELECTION.
* ALV user command * ALV user command
*--------------------------------------------------------------------* *--------------------------------------------------------------------*
FORM user_command . FORM user_command .
DATA: lo_error TYPE REF TO zcx_excel,
lv_message TYPE string.
IF sy-ucomm = 'EXCEL'. IF sy-ucomm = 'EXCEL'.
* get save file path * get save file path
@ -118,7 +120,12 @@ FORM user_command .
INTO l_path. INTO l_path.
* export file to save file path * export file to save file path
TRY.
PERFORM export_to_excel. PERFORM export_to_excel.
CATCH zcx_excel INTO lo_error.
lv_message = lo_error->get_text( ).
MESSAGE lv_message TYPE 'I' DISPLAY LIKE 'E'.
ENDTRY.
ENDIF. ENDIF.
ENDFORM. " USER_COMMAND ENDFORM. " USER_COMMAND
@ -129,6 +136,9 @@ ENDFORM. " USER_COMMAND
* This subroutine is principal demo session * This subroutine is principal demo session
*--------------------------------------------------------------------* *--------------------------------------------------------------------*
FORM export_to_excel RAISING zcx_excel. FORM export_to_excel RAISING zcx_excel.
DATA: lo_error TYPE REF TO zcx_excel,
lv_message TYPE string.
* create zcl_excel_worksheet object * create zcl_excel_worksheet object
CREATE OBJECT lo_excel. CREATE OBJECT lo_excel.
@ -136,15 +146,12 @@ FORM export_to_excel RAISING zcx_excel.
lo_worksheet->set_title( ip_title = 'Sheet1' ). lo_worksheet->set_title( ip_title = 'Sheet1' ).
* write to excel using method Bin_object * write to excel using method Bin_object
TRY.
lo_worksheet->bind_alv( lo_worksheet->bind_alv(
io_alv = lo_salv io_alv = lo_salv
it_table = gt_sbook it_table = gt_sbook
i_top = 2 i_top = 2
i_left = 1 i_left = 1
). ).
CATCH zcx_excel .
ENDTRY.
PERFORM write_file. PERFORM write_file.
@ -157,7 +164,7 @@ ENDFORM. "EXPORT_TO_EXCEL
* --> p1 text * --> p1 text
* <-- p2 text * <-- p2 text
*----------------------------------------------------------------------* *----------------------------------------------------------------------*
FORM write_file . FORM write_file RAISING zcx_excel.
DATA: lt_file TYPE solix_tab, DATA: lt_file TYPE solix_tab,
l_bytecount TYPE i, l_bytecount TYPE i,
l_file TYPE xstring. l_file TYPE xstring.

View File

@ -10,7 +10,9 @@ REPORT zdemo_excel27.
CLASS lcl_app DEFINITION. CLASS lcl_app DEFINITION.
PUBLIC SECTION. PUBLIC SECTION.
METHODS main. METHODS main
RAISING
zcx_excel.
PRIVATE SECTION. PRIVATE SECTION.
METHODS conditional_formatting_cellis METHODS conditional_formatting_cellis
IMPORTING IMPORTING
@ -20,14 +22,18 @@ CLASS lcl_app DEFINITION.
op TYPE zexcel_condition_operator op TYPE zexcel_condition_operator
f TYPE zexcel_style_formula f TYPE zexcel_style_formula
f2 TYPE zexcel_style_formula f2 TYPE zexcel_style_formula
numfmt TYPE string. numfmt TYPE string
RAISING
zcx_excel.
METHODS conditional_formatting_textfun METHODS conditional_formatting_textfun
IMPORTING IMPORTING
column TYPE simple column TYPE simple
row TYPE zexcel_cell_row row TYPE zexcel_cell_row
txtfun TYPE zcl_excel_style_cond=>tv_textfunction txtfun TYPE zcl_excel_style_cond=>tv_textfunction
text TYPE string text TYPE string
numfmt TYPE string. numfmt TYPE string
RAISING
zcx_excel.
ENDCLASS. ENDCLASS.
CONSTANTS: c_fish TYPE string VALUE 'Fish'. CONSTANTS: c_fish TYPE string VALUE 'Fish'.
@ -53,8 +59,16 @@ INCLUDE zdemo_excel_outputopt_incl.
START-OF-SELECTION. START-OF-SELECTION.
DATA: lo_error TYPE REF TO zcx_excel,
lv_message TYPE string.
CREATE OBJECT lo_app. CREATE OBJECT lo_app.
TRY.
lo_app->main( ). lo_app->main( ).
CATCH zcx_excel INTO lo_error.
lv_message = lo_error->get_text( ).
MESSAGE lv_message TYPE 'I' DISPLAY LIKE 'E'.
ENDTRY.
CLASS lcl_app IMPLEMENTATION. CLASS lcl_app IMPLEMENTATION.

View File

@ -97,6 +97,8 @@ START-OF-SELECTION.
* ALV user command * ALV user command
*--------------------------------------------------------------------* *--------------------------------------------------------------------*
FORM user_command . FORM user_command .
DATA: lo_error TYPE REF TO zcx_excel,
lv_message TYPE string.
* get save file path * get save file path
cl_gui_frontend_services=>get_sapgui_workdir( CHANGING sapworkdir = l_path ). cl_gui_frontend_services=>get_sapgui_workdir( CHANGING sapworkdir = l_path ).
@ -117,6 +119,7 @@ FORM user_command .
* export file to save file path * export file to save file path
TRY.
CASE sy-ucomm. CASE sy-ucomm.
WHEN 'EXCELBIND'. WHEN 'EXCELBIND'.
CONCATENATE l_path lv_file_separator lv_default_file_name CONCATENATE l_path lv_file_separator lv_default_file_name
@ -130,6 +133,12 @@ FORM user_command .
PERFORM export_to_excel_conv. PERFORM export_to_excel_conv.
ENDCASE. ENDCASE.
CATCH zcx_excel INTO lo_error.
lv_message = lo_error->get_text( ).
MESSAGE lv_message TYPE 'I' DISPLAY LIKE 'E'.
ENDTRY.
ENDFORM. " USER_COMMAND ENDFORM. " USER_COMMAND
*--------------------------------------------------------------------* *--------------------------------------------------------------------*
* FORM EXPORT_TO_EXCEL_CONV * FORM EXPORT_TO_EXCEL_CONV
@ -193,7 +202,7 @@ ENDFORM. "EXPORT_TO_EXCEL_BIND
* --> p1 text * --> p1 text
* <-- p2 text * <-- p2 text
*----------------------------------------------------------------------* *----------------------------------------------------------------------*
FORM write_file . FORM write_file RAISING zcx_excel.
DATA: lt_file TYPE solix_tab, DATA: lt_file TYPE solix_tab,
l_bytecount TYPE i, l_bytecount TYPE i,
l_file TYPE xstring. l_file TYPE xstring.
@ -216,7 +225,7 @@ FORM write_file .
RECEIVING RECEIVING
et_solix = lt_file. et_solix = lt_file.
l_bytecount = XSTRLEN( l_file ). l_bytecount = xstrlen( l_file ).
ELSE. ELSE.
" Convert to binary " Convert to binary
CALL FUNCTION 'SCMS_XSTRING_TO_BINARY' CALL FUNCTION 'SCMS_XSTRING_TO_BINARY'

View File

@ -15,60 +15,60 @@ REPORT zdemo_excel_fill_template.
* on the Excel file ZDEMO_EXCEL_TEMPLATE * on the Excel file ZDEMO_EXCEL_TEMPLATE
* from SMW0. * from SMW0.
*================= *=================
TYPES t_number TYPE p length 16 decimals 4. TYPES t_number TYPE p LENGTH 16 DECIMALS 4.
TYPES: TYPES:
begin of t_TABLE1, BEGIN OF t_table1,
PERSON type string, person TYPE string,
SALARY type t_number, salary TYPE t_number,
end of t_TABLE1, END OF t_table1,
tt_TABLE1 type standard table of t_TABLE1 with default key, tt_table1 TYPE STANDARD TABLE OF t_table1 WITH DEFAULT KEY,
begin of t_LINE1, BEGIN OF t_line1,
CARRID type string, carrid TYPE string,
CONNID type string, connid TYPE string,
FLDATE type d, fldate TYPE d,
PRICE type t_number, price TYPE t_number,
end of t_LINE1, END OF t_line1,
tt_LINE1 type standard table of t_LINE1 with default key, tt_line1 TYPE STANDARD TABLE OF t_line1 WITH DEFAULT KEY,
begin of t_TABLE2, BEGIN OF t_table2,
CARRID type string, carrid TYPE string,
PRICE type t_number, price TYPE t_number,
LINE1 type tt_LINE1, line1 TYPE tt_line1,
end of t_TABLE2, END OF t_table2,
tt_TABLE2 type standard table of t_TABLE2 with default key, tt_table2 TYPE STANDARD TABLE OF t_table2 WITH DEFAULT KEY,
begin of t_Sheet1, BEGIN OF t_sheet1,
DATE type d, date TYPE d,
TIME type t, time TYPE t,
USER type string, user TYPE string,
TOTAL type t_number, total TYPE t_number,
PRICE type t_number, price TYPE t_number,
TABLE1 type tt_TABLE1, table1 TYPE tt_table1,
TABLE2 type tt_TABLE2, table2 TYPE tt_table2,
end of t_Sheet1, END OF t_sheet1,
begin of t_TABLE3, BEGIN OF t_table3,
PERSON type string, person TYPE string,
SALARY type t_number, salary TYPE t_number,
end of t_TABLE3, END OF t_table3,
tt_TABLE3 type standard table of t_TABLE3 with default key, tt_table3 TYPE STANDARD TABLE OF t_table3 WITH DEFAULT KEY,
begin of t_Sheet2, BEGIN OF t_sheet2,
DATE type d, date TYPE d,
TIME type t, time TYPE t,
USER type string, user TYPE string,
TOTAL type t_number, total TYPE t_number,
TABLE3 type tt_TABLE3, table3 TYPE tt_table3,
end of t_Sheet2. END OF t_sheet2.
DATA: lo_data type ref to ZCL_EXCEL_TEMPLATE_DATA. DATA: lo_data TYPE REF TO zcl_excel_template_data.
*================= *=================
* End of generated code * End of generated code
*================= *=================

View File

@ -5,7 +5,8 @@ CLASS lcl_output DEFINITION CREATE PRIVATE.
PUBLIC SECTION. PUBLIC SECTION.
CLASS-METHODS: CLASS-METHODS:
output IMPORTING cl_excel TYPE REF TO zcl_excel output IMPORTING cl_excel TYPE REF TO zcl_excel
iv_writerclass_name TYPE clike OPTIONAL, iv_writerclass_name TYPE clike OPTIONAL
RAISING zcx_excel,
f4_path RETURNING VALUE(selected_folder) TYPE string, f4_path RETURNING VALUE(selected_folder) TYPE string,
parametertexts. parametertexts.

View File

@ -969,148 +969,176 @@
<CONTROLLER_NAME>V_MAIN</CONTROLLER_NAME> <CONTROLLER_NAME>V_MAIN</CONTROLLER_NAME>
<CMPNAME>ONACTIONBTN_DOWNLOAD</CMPNAME> <CMPNAME>ONACTIONBTN_DOWNLOAD</CMPNAME>
<LINE_NUMBER>8</LINE_NUMBER> <LINE_NUMBER>8</LINE_NUMBER>
<SOURCE_LINE> CREATE OBJECT lo_excel.</SOURCE_LINE> <SOURCE_LINE> TRY.</SOURCE_LINE>
</WDY_CTLR_COMPO_SOURCE_VRS> </WDY_CTLR_COMPO_SOURCE_VRS>
<WDY_CTLR_COMPO_SOURCE_VRS> <WDY_CTLR_COMPO_SOURCE_VRS>
<COMPONENT_NAME>ZDEMO_EXCEL_WDA01</COMPONENT_NAME> <COMPONENT_NAME>ZDEMO_EXCEL_WDA01</COMPONENT_NAME>
<CONTROLLER_NAME>V_MAIN</CONTROLLER_NAME> <CONTROLLER_NAME>V_MAIN</CONTROLLER_NAME>
<CMPNAME>ONACTIONBTN_DOWNLOAD</CMPNAME> <CMPNAME>ONACTIONBTN_DOWNLOAD</CMPNAME>
<LINE_NUMBER>9</LINE_NUMBER> <LINE_NUMBER>9</LINE_NUMBER>
<SOURCE_LINE> lo_worksheet = lo_excel-&gt;get_active_worksheet( ).</SOURCE_LINE> <SOURCE_LINE> CREATE OBJECT lo_excel.</SOURCE_LINE>
</WDY_CTLR_COMPO_SOURCE_VRS> </WDY_CTLR_COMPO_SOURCE_VRS>
<WDY_CTLR_COMPO_SOURCE_VRS> <WDY_CTLR_COMPO_SOURCE_VRS>
<COMPONENT_NAME>ZDEMO_EXCEL_WDA01</COMPONENT_NAME> <COMPONENT_NAME>ZDEMO_EXCEL_WDA01</COMPONENT_NAME>
<CONTROLLER_NAME>V_MAIN</CONTROLLER_NAME> <CONTROLLER_NAME>V_MAIN</CONTROLLER_NAME>
<CMPNAME>ONACTIONBTN_DOWNLOAD</CMPNAME> <CMPNAME>ONACTIONBTN_DOWNLOAD</CMPNAME>
<LINE_NUMBER>10</LINE_NUMBER> <LINE_NUMBER>10</LINE_NUMBER>
<SOURCE_LINE> lo_worksheet = lo_excel-&gt;get_active_worksheet( ).</SOURCE_LINE>
</WDY_CTLR_COMPO_SOURCE_VRS> </WDY_CTLR_COMPO_SOURCE_VRS>
<WDY_CTLR_COMPO_SOURCE_VRS> <WDY_CTLR_COMPO_SOURCE_VRS>
<COMPONENT_NAME>ZDEMO_EXCEL_WDA01</COMPONENT_NAME> <COMPONENT_NAME>ZDEMO_EXCEL_WDA01</COMPONENT_NAME>
<CONTROLLER_NAME>V_MAIN</CONTROLLER_NAME> <CONTROLLER_NAME>V_MAIN</CONTROLLER_NAME>
<CMPNAME>ONACTIONBTN_DOWNLOAD</CMPNAME> <CMPNAME>ONACTIONBTN_DOWNLOAD</CMPNAME>
<LINE_NUMBER>11</LINE_NUMBER> <LINE_NUMBER>11</LINE_NUMBER>
<SOURCE_LINE> lo_worksheet-&gt;set_cell( ip_column = &apos;B&apos;</SOURCE_LINE>
</WDY_CTLR_COMPO_SOURCE_VRS> </WDY_CTLR_COMPO_SOURCE_VRS>
<WDY_CTLR_COMPO_SOURCE_VRS> <WDY_CTLR_COMPO_SOURCE_VRS>
<COMPONENT_NAME>ZDEMO_EXCEL_WDA01</COMPONENT_NAME> <COMPONENT_NAME>ZDEMO_EXCEL_WDA01</COMPONENT_NAME>
<CONTROLLER_NAME>V_MAIN</CONTROLLER_NAME> <CONTROLLER_NAME>V_MAIN</CONTROLLER_NAME>
<CMPNAME>ONACTIONBTN_DOWNLOAD</CMPNAME> <CMPNAME>ONACTIONBTN_DOWNLOAD</CMPNAME>
<LINE_NUMBER>12</LINE_NUMBER> <LINE_NUMBER>12</LINE_NUMBER>
<SOURCE_LINE> ip_row = &apos;2&apos;</SOURCE_LINE> <SOURCE_LINE> lo_worksheet-&gt;set_cell( ip_column = &apos;B&apos;</SOURCE_LINE>
</WDY_CTLR_COMPO_SOURCE_VRS> </WDY_CTLR_COMPO_SOURCE_VRS>
<WDY_CTLR_COMPO_SOURCE_VRS> <WDY_CTLR_COMPO_SOURCE_VRS>
<COMPONENT_NAME>ZDEMO_EXCEL_WDA01</COMPONENT_NAME> <COMPONENT_NAME>ZDEMO_EXCEL_WDA01</COMPONENT_NAME>
<CONTROLLER_NAME>V_MAIN</CONTROLLER_NAME> <CONTROLLER_NAME>V_MAIN</CONTROLLER_NAME>
<CMPNAME>ONACTIONBTN_DOWNLOAD</CMPNAME> <CMPNAME>ONACTIONBTN_DOWNLOAD</CMPNAME>
<LINE_NUMBER>13</LINE_NUMBER> <LINE_NUMBER>13</LINE_NUMBER>
<SOURCE_LINE> ip_value = &apos;Welcome to Web Dynpro and abap2xlsx.&apos; ).</SOURCE_LINE> <SOURCE_LINE> ip_row = &apos;2&apos;</SOURCE_LINE>
</WDY_CTLR_COMPO_SOURCE_VRS> </WDY_CTLR_COMPO_SOURCE_VRS>
<WDY_CTLR_COMPO_SOURCE_VRS> <WDY_CTLR_COMPO_SOURCE_VRS>
<COMPONENT_NAME>ZDEMO_EXCEL_WDA01</COMPONENT_NAME> <COMPONENT_NAME>ZDEMO_EXCEL_WDA01</COMPONENT_NAME>
<CONTROLLER_NAME>V_MAIN</CONTROLLER_NAME> <CONTROLLER_NAME>V_MAIN</CONTROLLER_NAME>
<CMPNAME>ONACTIONBTN_DOWNLOAD</CMPNAME> <CMPNAME>ONACTIONBTN_DOWNLOAD</CMPNAME>
<LINE_NUMBER>14</LINE_NUMBER> <LINE_NUMBER>14</LINE_NUMBER>
<SOURCE_LINE> ip_value = &apos;Welcome to Web Dynpro and abap2xlsx.&apos; ).</SOURCE_LINE>
</WDY_CTLR_COMPO_SOURCE_VRS> </WDY_CTLR_COMPO_SOURCE_VRS>
<WDY_CTLR_COMPO_SOURCE_VRS> <WDY_CTLR_COMPO_SOURCE_VRS>
<COMPONENT_NAME>ZDEMO_EXCEL_WDA01</COMPONENT_NAME> <COMPONENT_NAME>ZDEMO_EXCEL_WDA01</COMPONENT_NAME>
<CONTROLLER_NAME>V_MAIN</CONTROLLER_NAME> <CONTROLLER_NAME>V_MAIN</CONTROLLER_NAME>
<CMPNAME>ONACTIONBTN_DOWNLOAD</CMPNAME> <CMPNAME>ONACTIONBTN_DOWNLOAD</CMPNAME>
<LINE_NUMBER>15</LINE_NUMBER> <LINE_NUMBER>15</LINE_NUMBER>
<SOURCE_LINE> CREATE OBJECT lo_excel_writer.</SOURCE_LINE>
</WDY_CTLR_COMPO_SOURCE_VRS> </WDY_CTLR_COMPO_SOURCE_VRS>
<WDY_CTLR_COMPO_SOURCE_VRS> <WDY_CTLR_COMPO_SOURCE_VRS>
<COMPONENT_NAME>ZDEMO_EXCEL_WDA01</COMPONENT_NAME> <COMPONENT_NAME>ZDEMO_EXCEL_WDA01</COMPONENT_NAME>
<CONTROLLER_NAME>V_MAIN</CONTROLLER_NAME> <CONTROLLER_NAME>V_MAIN</CONTROLLER_NAME>
<CMPNAME>ONACTIONBTN_DOWNLOAD</CMPNAME> <CMPNAME>ONACTIONBTN_DOWNLOAD</CMPNAME>
<LINE_NUMBER>16</LINE_NUMBER> <LINE_NUMBER>16</LINE_NUMBER>
<SOURCE_LINE> lv_content = lo_excel_writer-&gt;zif_excel_writer~write_file( lo_excel ).</SOURCE_LINE> <SOURCE_LINE> CREATE OBJECT lo_excel_writer.</SOURCE_LINE>
</WDY_CTLR_COMPO_SOURCE_VRS> </WDY_CTLR_COMPO_SOURCE_VRS>
<WDY_CTLR_COMPO_SOURCE_VRS> <WDY_CTLR_COMPO_SOURCE_VRS>
<COMPONENT_NAME>ZDEMO_EXCEL_WDA01</COMPONENT_NAME> <COMPONENT_NAME>ZDEMO_EXCEL_WDA01</COMPONENT_NAME>
<CONTROLLER_NAME>V_MAIN</CONTROLLER_NAME> <CONTROLLER_NAME>V_MAIN</CONTROLLER_NAME>
<CMPNAME>ONACTIONBTN_DOWNLOAD</CMPNAME> <CMPNAME>ONACTIONBTN_DOWNLOAD</CMPNAME>
<LINE_NUMBER>17</LINE_NUMBER> <LINE_NUMBER>17</LINE_NUMBER>
<SOURCE_LINE> lv_content = lo_excel_writer-&gt;zif_excel_writer~write_file( lo_excel ).</SOURCE_LINE>
</WDY_CTLR_COMPO_SOURCE_VRS> </WDY_CTLR_COMPO_SOURCE_VRS>
<WDY_CTLR_COMPO_SOURCE_VRS> <WDY_CTLR_COMPO_SOURCE_VRS>
<COMPONENT_NAME>ZDEMO_EXCEL_WDA01</COMPONENT_NAME> <COMPONENT_NAME>ZDEMO_EXCEL_WDA01</COMPONENT_NAME>
<CONTROLLER_NAME>V_MAIN</CONTROLLER_NAME> <CONTROLLER_NAME>V_MAIN</CONTROLLER_NAME>
<CMPNAME>ONACTIONBTN_DOWNLOAD</CMPNAME> <CMPNAME>ONACTIONBTN_DOWNLOAD</CMPNAME>
<LINE_NUMBER>18</LINE_NUMBER> <LINE_NUMBER>18</LINE_NUMBER>
<SOURCE_LINE> DATA: lv_filename TYPE string.</SOURCE_LINE> <SOURCE_LINE> CATCH zcx_excel.</SOURCE_LINE>
</WDY_CTLR_COMPO_SOURCE_VRS> </WDY_CTLR_COMPO_SOURCE_VRS>
<WDY_CTLR_COMPO_SOURCE_VRS> <WDY_CTLR_COMPO_SOURCE_VRS>
<COMPONENT_NAME>ZDEMO_EXCEL_WDA01</COMPONENT_NAME> <COMPONENT_NAME>ZDEMO_EXCEL_WDA01</COMPONENT_NAME>
<CONTROLLER_NAME>V_MAIN</CONTROLLER_NAME> <CONTROLLER_NAME>V_MAIN</CONTROLLER_NAME>
<CMPNAME>ONACTIONBTN_DOWNLOAD</CMPNAME> <CMPNAME>ONACTIONBTN_DOWNLOAD</CMPNAME>
<LINE_NUMBER>19</LINE_NUMBER> <LINE_NUMBER>19</LINE_NUMBER>
<SOURCE_LINE> lv_filename = &apos;wda01.xlsx&apos;.</SOURCE_LINE> <SOURCE_LINE> &quot;Unlikely, ignore to keep demo simple.</SOURCE_LINE>
</WDY_CTLR_COMPO_SOURCE_VRS> </WDY_CTLR_COMPO_SOURCE_VRS>
<WDY_CTLR_COMPO_SOURCE_VRS> <WDY_CTLR_COMPO_SOURCE_VRS>
<COMPONENT_NAME>ZDEMO_EXCEL_WDA01</COMPONENT_NAME> <COMPONENT_NAME>ZDEMO_EXCEL_WDA01</COMPONENT_NAME>
<CONTROLLER_NAME>V_MAIN</CONTROLLER_NAME> <CONTROLLER_NAME>V_MAIN</CONTROLLER_NAME>
<CMPNAME>ONACTIONBTN_DOWNLOAD</CMPNAME> <CMPNAME>ONACTIONBTN_DOWNLOAD</CMPNAME>
<LINE_NUMBER>20</LINE_NUMBER> <LINE_NUMBER>20</LINE_NUMBER>
<SOURCE_LINE> ENDTRY.</SOURCE_LINE>
</WDY_CTLR_COMPO_SOURCE_VRS> </WDY_CTLR_COMPO_SOURCE_VRS>
<WDY_CTLR_COMPO_SOURCE_VRS> <WDY_CTLR_COMPO_SOURCE_VRS>
<COMPONENT_NAME>ZDEMO_EXCEL_WDA01</COMPONENT_NAME> <COMPONENT_NAME>ZDEMO_EXCEL_WDA01</COMPONENT_NAME>
<CONTROLLER_NAME>V_MAIN</CONTROLLER_NAME> <CONTROLLER_NAME>V_MAIN</CONTROLLER_NAME>
<CMPNAME>ONACTIONBTN_DOWNLOAD</CMPNAME> <CMPNAME>ONACTIONBTN_DOWNLOAD</CMPNAME>
<LINE_NUMBER>21</LINE_NUMBER> <LINE_NUMBER>21</LINE_NUMBER>
<SOURCE_LINE> CALL METHOD cl_wd_runtime_services=&gt;attach_file_to_response</SOURCE_LINE>
</WDY_CTLR_COMPO_SOURCE_VRS> </WDY_CTLR_COMPO_SOURCE_VRS>
<WDY_CTLR_COMPO_SOURCE_VRS> <WDY_CTLR_COMPO_SOURCE_VRS>
<COMPONENT_NAME>ZDEMO_EXCEL_WDA01</COMPONENT_NAME> <COMPONENT_NAME>ZDEMO_EXCEL_WDA01</COMPONENT_NAME>
<CONTROLLER_NAME>V_MAIN</CONTROLLER_NAME> <CONTROLLER_NAME>V_MAIN</CONTROLLER_NAME>
<CMPNAME>ONACTIONBTN_DOWNLOAD</CMPNAME> <CMPNAME>ONACTIONBTN_DOWNLOAD</CMPNAME>
<LINE_NUMBER>22</LINE_NUMBER> <LINE_NUMBER>22</LINE_NUMBER>
<SOURCE_LINE> EXPORTING</SOURCE_LINE> <SOURCE_LINE> DATA: lv_filename TYPE string.</SOURCE_LINE>
</WDY_CTLR_COMPO_SOURCE_VRS> </WDY_CTLR_COMPO_SOURCE_VRS>
<WDY_CTLR_COMPO_SOURCE_VRS> <WDY_CTLR_COMPO_SOURCE_VRS>
<COMPONENT_NAME>ZDEMO_EXCEL_WDA01</COMPONENT_NAME> <COMPONENT_NAME>ZDEMO_EXCEL_WDA01</COMPONENT_NAME>
<CONTROLLER_NAME>V_MAIN</CONTROLLER_NAME> <CONTROLLER_NAME>V_MAIN</CONTROLLER_NAME>
<CMPNAME>ONACTIONBTN_DOWNLOAD</CMPNAME> <CMPNAME>ONACTIONBTN_DOWNLOAD</CMPNAME>
<LINE_NUMBER>23</LINE_NUMBER> <LINE_NUMBER>23</LINE_NUMBER>
<SOURCE_LINE> i_filename = lv_filename</SOURCE_LINE> <SOURCE_LINE> lv_filename = &apos;wda01.xlsx&apos;.</SOURCE_LINE>
</WDY_CTLR_COMPO_SOURCE_VRS> </WDY_CTLR_COMPO_SOURCE_VRS>
<WDY_CTLR_COMPO_SOURCE_VRS> <WDY_CTLR_COMPO_SOURCE_VRS>
<COMPONENT_NAME>ZDEMO_EXCEL_WDA01</COMPONENT_NAME> <COMPONENT_NAME>ZDEMO_EXCEL_WDA01</COMPONENT_NAME>
<CONTROLLER_NAME>V_MAIN</CONTROLLER_NAME> <CONTROLLER_NAME>V_MAIN</CONTROLLER_NAME>
<CMPNAME>ONACTIONBTN_DOWNLOAD</CMPNAME> <CMPNAME>ONACTIONBTN_DOWNLOAD</CMPNAME>
<LINE_NUMBER>24</LINE_NUMBER> <LINE_NUMBER>24</LINE_NUMBER>
<SOURCE_LINE> i_content = lv_content</SOURCE_LINE>
</WDY_CTLR_COMPO_SOURCE_VRS> </WDY_CTLR_COMPO_SOURCE_VRS>
<WDY_CTLR_COMPO_SOURCE_VRS> <WDY_CTLR_COMPO_SOURCE_VRS>
<COMPONENT_NAME>ZDEMO_EXCEL_WDA01</COMPONENT_NAME> <COMPONENT_NAME>ZDEMO_EXCEL_WDA01</COMPONENT_NAME>
<CONTROLLER_NAME>V_MAIN</CONTROLLER_NAME> <CONTROLLER_NAME>V_MAIN</CONTROLLER_NAME>
<CMPNAME>ONACTIONBTN_DOWNLOAD</CMPNAME> <CMPNAME>ONACTIONBTN_DOWNLOAD</CMPNAME>
<LINE_NUMBER>25</LINE_NUMBER> <LINE_NUMBER>25</LINE_NUMBER>
<SOURCE_LINE> i_mime_type = &apos;EXCEL&apos;</SOURCE_LINE> <SOURCE_LINE> CALL METHOD cl_wd_runtime_services=&gt;attach_file_to_response</SOURCE_LINE>
</WDY_CTLR_COMPO_SOURCE_VRS> </WDY_CTLR_COMPO_SOURCE_VRS>
<WDY_CTLR_COMPO_SOURCE_VRS> <WDY_CTLR_COMPO_SOURCE_VRS>
<COMPONENT_NAME>ZDEMO_EXCEL_WDA01</COMPONENT_NAME> <COMPONENT_NAME>ZDEMO_EXCEL_WDA01</COMPONENT_NAME>
<CONTROLLER_NAME>V_MAIN</CONTROLLER_NAME> <CONTROLLER_NAME>V_MAIN</CONTROLLER_NAME>
<CMPNAME>ONACTIONBTN_DOWNLOAD</CMPNAME> <CMPNAME>ONACTIONBTN_DOWNLOAD</CMPNAME>
<LINE_NUMBER>26</LINE_NUMBER> <LINE_NUMBER>26</LINE_NUMBER>
<SOURCE_LINE> i_in_new_window = abap_false</SOURCE_LINE> <SOURCE_LINE> EXPORTING</SOURCE_LINE>
</WDY_CTLR_COMPO_SOURCE_VRS> </WDY_CTLR_COMPO_SOURCE_VRS>
<WDY_CTLR_COMPO_SOURCE_VRS> <WDY_CTLR_COMPO_SOURCE_VRS>
<COMPONENT_NAME>ZDEMO_EXCEL_WDA01</COMPONENT_NAME> <COMPONENT_NAME>ZDEMO_EXCEL_WDA01</COMPONENT_NAME>
<CONTROLLER_NAME>V_MAIN</CONTROLLER_NAME> <CONTROLLER_NAME>V_MAIN</CONTROLLER_NAME>
<CMPNAME>ONACTIONBTN_DOWNLOAD</CMPNAME> <CMPNAME>ONACTIONBTN_DOWNLOAD</CMPNAME>
<LINE_NUMBER>27</LINE_NUMBER> <LINE_NUMBER>27</LINE_NUMBER>
<SOURCE_LINE> i_inplace = abap_false.</SOURCE_LINE> <SOURCE_LINE> i_filename = lv_filename</SOURCE_LINE>
</WDY_CTLR_COMPO_SOURCE_VRS> </WDY_CTLR_COMPO_SOURCE_VRS>
<WDY_CTLR_COMPO_SOURCE_VRS> <WDY_CTLR_COMPO_SOURCE_VRS>
<COMPONENT_NAME>ZDEMO_EXCEL_WDA01</COMPONENT_NAME> <COMPONENT_NAME>ZDEMO_EXCEL_WDA01</COMPONENT_NAME>
<CONTROLLER_NAME>V_MAIN</CONTROLLER_NAME> <CONTROLLER_NAME>V_MAIN</CONTROLLER_NAME>
<CMPNAME>ONACTIONBTN_DOWNLOAD</CMPNAME> <CMPNAME>ONACTIONBTN_DOWNLOAD</CMPNAME>
<LINE_NUMBER>28</LINE_NUMBER> <LINE_NUMBER>28</LINE_NUMBER>
<SOURCE_LINE> i_content = lv_content</SOURCE_LINE>
</WDY_CTLR_COMPO_SOURCE_VRS> </WDY_CTLR_COMPO_SOURCE_VRS>
<WDY_CTLR_COMPO_SOURCE_VRS> <WDY_CTLR_COMPO_SOURCE_VRS>
<COMPONENT_NAME>ZDEMO_EXCEL_WDA01</COMPONENT_NAME> <COMPONENT_NAME>ZDEMO_EXCEL_WDA01</COMPONENT_NAME>
<CONTROLLER_NAME>V_MAIN</CONTROLLER_NAME> <CONTROLLER_NAME>V_MAIN</CONTROLLER_NAME>
<CMPNAME>ONACTIONBTN_DOWNLOAD</CMPNAME> <CMPNAME>ONACTIONBTN_DOWNLOAD</CMPNAME>
<LINE_NUMBER>29</LINE_NUMBER> <LINE_NUMBER>29</LINE_NUMBER>
<SOURCE_LINE> i_mime_type = &apos;EXCEL&apos;</SOURCE_LINE>
</WDY_CTLR_COMPO_SOURCE_VRS>
<WDY_CTLR_COMPO_SOURCE_VRS>
<COMPONENT_NAME>ZDEMO_EXCEL_WDA01</COMPONENT_NAME>
<CONTROLLER_NAME>V_MAIN</CONTROLLER_NAME>
<CMPNAME>ONACTIONBTN_DOWNLOAD</CMPNAME>
<LINE_NUMBER>30</LINE_NUMBER>
<SOURCE_LINE> i_in_new_window = abap_false</SOURCE_LINE>
</WDY_CTLR_COMPO_SOURCE_VRS>
<WDY_CTLR_COMPO_SOURCE_VRS>
<COMPONENT_NAME>ZDEMO_EXCEL_WDA01</COMPONENT_NAME>
<CONTROLLER_NAME>V_MAIN</CONTROLLER_NAME>
<CMPNAME>ONACTIONBTN_DOWNLOAD</CMPNAME>
<LINE_NUMBER>31</LINE_NUMBER>
<SOURCE_LINE> i_inplace = abap_false.</SOURCE_LINE>
</WDY_CTLR_COMPO_SOURCE_VRS>
<WDY_CTLR_COMPO_SOURCE_VRS>
<COMPONENT_NAME>ZDEMO_EXCEL_WDA01</COMPONENT_NAME>
<CONTROLLER_NAME>V_MAIN</CONTROLLER_NAME>
<CMPNAME>ONACTIONBTN_DOWNLOAD</CMPNAME>
<LINE_NUMBER>32</LINE_NUMBER>
</WDY_CTLR_COMPO_SOURCE_VRS>
<WDY_CTLR_COMPO_SOURCE_VRS>
<COMPONENT_NAME>ZDEMO_EXCEL_WDA01</COMPONENT_NAME>
<CONTROLLER_NAME>V_MAIN</CONTROLLER_NAME>
<CMPNAME>ONACTIONBTN_DOWNLOAD</CMPNAME>
<LINE_NUMBER>33</LINE_NUMBER>
<SOURCE_LINE>ENDMETHOD.</SOURCE_LINE> <SOURCE_LINE>ENDMETHOD.</SOURCE_LINE>
</WDY_CTLR_COMPO_SOURCE_VRS> </WDY_CTLR_COMPO_SOURCE_VRS>
<WDY_CTLR_COMPO_SOURCE_VRS> <WDY_CTLR_COMPO_SOURCE_VRS>

View File

@ -147,8 +147,8 @@ CLASS zcl_excel DEFINITION
IMPORTING IMPORTING
!io_theme TYPE REF TO zcl_excel_theme . !io_theme TYPE REF TO zcl_excel_theme .
METHODS fill_template METHODS fill_template
importing IMPORTING
!iv_data TYPE REF TO ZCL_EXCEL_TEMPLATE_DATA !iv_data TYPE REF TO zcl_excel_template_data
RAISING RAISING
zcx_excel . zcx_excel .
PROTECTED SECTION. PROTECTED SECTION.
@ -156,7 +156,7 @@ CLASS zcl_excel DEFINITION
DATA worksheets TYPE REF TO zcl_excel_worksheets . DATA worksheets TYPE REF TO zcl_excel_worksheets .
PRIVATE SECTION. PRIVATE SECTION.
CONSTANTS version TYPE c LENGTH 10 VALUE '7.2.0'. "#EC NOTEXT CONSTANTS version TYPE c LENGTH 10 VALUE '7.14.0'. "#EC NOTEXT
DATA autofilters TYPE REF TO zcl_excel_autofilters . DATA autofilters TYPE REF TO zcl_excel_autofilters .
DATA charts TYPE REF TO zcl_excel_drawings . DATA charts TYPE REF TO zcl_excel_drawings .
DATA default_style TYPE zexcel_cell_style . DATA default_style TYPE zexcel_cell_style .

View File

@ -0,0 +1,32 @@
CLASS zcl_excel_apack DEFINITION
PUBLIC
FINAL
CREATE PUBLIC .
PUBLIC SECTION.
INTERFACES if_apack_manifest.
METHODS: constructor.
ALIASES descriptor FOR if_apack_manifest~descriptor.
PROTECTED SECTION.
PRIVATE SECTION.
ENDCLASS.
CLASS zcl_excel_apack IMPLEMENTATION.
METHOD constructor.
descriptor-group_id = 'github.com/abap2xlsx/abap2xlsx'.
descriptor-artifact_id = 'abap2xlsx'.
descriptor-version = '7.14.0'.
descriptor-repository_type = 'abapGit'.
descriptor-git_url = 'https://github.com/abap2xlsx/abap2xlsx.git'.
ENDMETHOD.
ENDCLASS.

View File

@ -0,0 +1,16 @@
<?xml version="1.0" encoding="utf-8"?>
<abapGit version="v1.0.0" serializer="LCL_OBJECT_CLAS" serializer_version="v1.0.0">
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
<asx:values>
<VSEOCLASS>
<CLSNAME>ZCL_EXCEL_APACK</CLSNAME>
<LANGU>E</LANGU>
<DESCRIPT>abap2xlsx version and dependencies</DESCRIPT>
<STATE>1</STATE>
<CLSCCINCL>X</CLSCCINCL>
<FIXPT>X</FIXPT>
<UNICODE>X</UNICODE>
</VSEOCLASS>
</asx:values>
</asx:abap>
</abapGit>

View File

@ -33,7 +33,9 @@ CLASS zcl_excel_autofilter DEFINITION
!io_sheet TYPE REF TO zcl_excel_worksheet . !io_sheet TYPE REF TO zcl_excel_worksheet .
METHODS get_filter_area METHODS get_filter_area
RETURNING RETURNING
VALUE(rs_area) TYPE zexcel_s_autofilter_area . VALUE(rs_area) TYPE zexcel_s_autofilter_area
RAISING
zcx_excel .
METHODS get_filter_range METHODS get_filter_range
RETURNING RETURNING
VALUE(r_range) TYPE zexcel_cell_value VALUE(r_range) TYPE zexcel_cell_value

View File

@ -37,7 +37,7 @@ ENDCLASS.
CLASS ZCL_EXCEL_COLLECTION IMPLEMENTATION. CLASS zcl_excel_collection IMPLEMENTATION.
METHOD add . METHOD add .

View File

@ -15,7 +15,7 @@ CLASS zcl_excel_collection_iterator DEFINITION
VALUE(object) TYPE REF TO object. VALUE(object) TYPE REF TO object.
METHODS constructor METHODS constructor
IMPORTING IMPORTING
collection TYPE REF TO zCL_excel_COLLECTION. collection TYPE REF TO zcl_excel_collection.
PROTECTED SECTION. PROTECTED SECTION.
PRIVATE SECTION. PRIVATE SECTION.
DATA index TYPE i VALUE 0. DATA index TYPE i VALUE 0.
@ -24,7 +24,7 @@ ENDCLASS.
CLASS ZCL_EXCEL_COLLECTION_ITERATOR IMPLEMENTATION. CLASS zcl_excel_collection_iterator IMPLEMENTATION.
METHOD constructor . METHOD constructor .

View File

@ -12,7 +12,9 @@ CLASS zcl_excel_column DEFINITION
IMPORTING IMPORTING
!ip_index TYPE zexcel_cell_column_alpha !ip_index TYPE zexcel_cell_column_alpha
!ip_worksheet TYPE REF TO zcl_excel_worksheet !ip_worksheet TYPE REF TO zcl_excel_worksheet
!ip_excel TYPE REF TO zcl_excel . !ip_excel TYPE REF TO zcl_excel
RAISING
zcx_excel .
METHODS get_auto_size METHODS get_auto_size
RETURNING RETURNING
VALUE(r_auto_size) TYPE abap_bool . VALUE(r_auto_size) TYPE abap_bool .
@ -48,7 +50,9 @@ CLASS zcl_excel_column DEFINITION
IMPORTING IMPORTING
!ip_index TYPE zexcel_cell_column_alpha !ip_index TYPE zexcel_cell_column_alpha
RETURNING RETURNING
VALUE(io_column) TYPE REF TO zcl_excel_column . VALUE(io_column) TYPE REF TO zcl_excel_column
RAISING
zcx_excel .
METHODS set_outline_level METHODS set_outline_level
IMPORTING IMPORTING
!ip_outline_level TYPE int4 . !ip_outline_level TYPE int4 .

View File

@ -221,7 +221,7 @@ ENDCLASS.
CLASS ZCL_EXCEL_COMMON IMPLEMENTATION. CLASS zcl_excel_common IMPLEMENTATION.
METHOD calculate_cell_distance. METHOD calculate_cell_distance.

View File

@ -19,7 +19,10 @@ CLASS lcl_excel_common_test DEFINITION FOR TESTING
f_cut TYPE REF TO zcl_excel_common. "class under test f_cut TYPE REF TO zcl_excel_common. "class under test
METHODS: setup. METHODS: setup.
METHODS: convert_column2alpha FOR TESTING. METHODS: convert_column2alpha_simple FOR TESTING.
METHODS: convert_column2alpha_maxcol FOR TESTING.
METHODS: convert_column2alpha_last FOR TESTING.
METHODS: convert_column2alpha_oob FOR TESTING.
METHODS convert_column2int_basic FOR TESTING. METHODS convert_column2int_basic FOR TESTING.
METHODS convert_column2int_maxcol FOR TESTING. METHODS convert_column2int_maxcol FOR TESTING.
METHODS convert_column2int_oob_empty FOR TESTING. METHODS convert_column2int_oob_empty FOR TESTING.
@ -118,7 +121,7 @@ CLASS lcl_excel_common_test IMPLEMENTATION.
ENDMETHOD. "setup ENDMETHOD. "setup
METHOD convert_column2alpha. METHOD convert_column2alpha_simple.
* ============================ * ============================
DATA ep_column TYPE zexcel_cell_column_alpha. DATA ep_column TYPE zexcel_cell_column_alpha.
@ -138,6 +141,12 @@ CLASS lcl_excel_common_test IMPLEMENTATION.
level = if_aunit_constants=>critical " Error Severity level = if_aunit_constants=>critical " Error Severity
). ).
ENDTRY. ENDTRY.
ENDMETHOD. "convert_column2alpha_simple
METHOD convert_column2alpha_maxcol.
* ============================
DATA ep_column TYPE zexcel_cell_column_alpha.
* Test 2. Max column for OXML #16,384 = XFD * Test 2. Max column for OXML #16,384 = XFD
TRY. TRY.
@ -155,6 +164,12 @@ CLASS lcl_excel_common_test IMPLEMENTATION.
level = if_aunit_constants=>critical " Error Severity level = if_aunit_constants=>critical " Error Severity
). ).
ENDTRY. ENDTRY.
ENDMETHOD. "convert_column2alpha_maxcol
METHOD convert_column2alpha_last.
* ============================
DATA ep_column TYPE zexcel_cell_column_alpha.
* Test 3. Index 0 is out of bounds * Test 3. Index 0 is out of bounds
TRY. TRY.
@ -172,6 +187,12 @@ CLASS lcl_excel_common_test IMPLEMENTATION.
level = if_aunit_constants=>fatal level = if_aunit_constants=>fatal
). ).
ENDTRY. ENDTRY.
ENDMETHOD. "convert_column2alpha_last
METHOD convert_column2alpha_oob.
* ============================
DATA ep_column TYPE zexcel_cell_column_alpha.
* Test 4. Exception should be thrown index out of bounds * Test 4. Exception should be thrown index out of bounds
TRY. TRY.
@ -191,7 +212,7 @@ CLASS lcl_excel_common_test IMPLEMENTATION.
level = if_aunit_constants=>tolerable level = if_aunit_constants=>tolerable
). ).
ENDTRY. ENDTRY.
ENDMETHOD. "convert_Column2alpha ENDMETHOD. "convert_Column2alpha_oob
METHOD convert_column2int_basic. METHOD convert_column2int_basic.
@ -1384,7 +1405,7 @@ CLASS lcl_excel_common_test IMPLEMENTATION.
METHOD shift_formula_sheet_nodigit. METHOD shift_formula_sheet_nodigit.
" Sheet name not ending with digit " Sheet name not ending with digit
macro_shift_formula( macro_shift_formula(
iv_reference_formula = 'Sheet!A1' iv_reference_formula = 'Sheet!A1'
iv_shift_cols = 1 iv_shift_cols = 1
@ -1395,7 +1416,7 @@ CLASS lcl_excel_common_test IMPLEMENTATION.
METHOD shift_formula_sheet_nodig. METHOD shift_formula_sheet_nodig.
" Sheet name ending with digit " Sheet name ending with digit
macro_shift_formula( macro_shift_formula(
iv_reference_formula = 'Sheet2!A1' iv_reference_formula = 'Sheet2!A1'
iv_shift_cols = 1 iv_shift_cols = 1
@ -1406,7 +1427,7 @@ CLASS lcl_excel_common_test IMPLEMENTATION.
METHOD shift_formula_sheet_special. METHOD shift_formula_sheet_special.
" Sheet name with special characters " Sheet name with special characters
macro_shift_formula( macro_shift_formula(
iv_reference_formula = |'Sheet name'!A1| iv_reference_formula = |'Sheet name'!A1|
iv_shift_cols = 1 iv_shift_cols = 1
@ -1417,7 +1438,7 @@ CLASS lcl_excel_common_test IMPLEMENTATION.
METHOD shift_formula_resp_blanks_1. METHOD shift_formula_resp_blanks_1.
" Respecting blanks " Respecting blanks
macro_shift_formula( macro_shift_formula(
iv_reference_formula = 'SUBTOTAL(109,Table1[SUM 1])' iv_reference_formula = 'SUBTOTAL(109,Table1[SUM 1])'
iv_shift_cols = 1 iv_shift_cols = 1
@ -1428,7 +1449,7 @@ CLASS lcl_excel_common_test IMPLEMENTATION.
METHOD shift_formula_resp_blanks_2. METHOD shift_formula_resp_blanks_2.
" Respecting blanks " Respecting blanks
macro_shift_formula( macro_shift_formula(
iv_reference_formula = 'B4 & C4' iv_reference_formula = 'B4 & C4'
iv_shift_cols = 0 iv_shift_cols = 0
@ -1439,7 +1460,7 @@ CLASS lcl_excel_common_test IMPLEMENTATION.
METHOD shift_formula_range. METHOD shift_formula_range.
" F_1 is a range name, not a cell address " F_1 is a range name, not a cell address
macro_shift_formula( macro_shift_formula(
iv_reference_formula = 'SUM(F_1,F_2)' iv_reference_formula = 'SUM(F_1,F_2)'
iv_shift_cols = 1 iv_shift_cols = 1
@ -1449,7 +1470,7 @@ CLASS lcl_excel_common_test IMPLEMENTATION.
ENDMETHOD. ENDMETHOD.
METHOD shift_formula_notcols. METHOD shift_formula_notcols.
" RC are not columns " RC are not columns
macro_shift_formula( macro_shift_formula(
iv_reference_formula = 'INDIRECT("RC[4]",FALSE)' iv_reference_formula = 'INDIRECT("RC[4]",FALSE)'
iv_shift_cols = 1 iv_shift_cols = 1
@ -1460,7 +1481,7 @@ CLASS lcl_excel_common_test IMPLEMENTATION.
METHOD shift_formula_name. METHOD shift_formula_name.
" A1 is a sheet name " A1 is a sheet name
macro_shift_formula( macro_shift_formula(
iv_reference_formula = |'A1'!$A$1| iv_reference_formula = |'A1'!$A$1|
iv_shift_cols = 1 iv_shift_cols = 1
@ -1471,7 +1492,7 @@ CLASS lcl_excel_common_test IMPLEMENTATION.
METHOD shift_formula_refcolumn1. METHOD shift_formula_refcolumn1.
" Reference to another column in the same row of a Table, with a space in the column name " Reference to another column in the same row of a Table, with a space in the column name
macro_shift_formula( macro_shift_formula(
iv_reference_formula = 'Tbl[[#This Row],[Air fare]]' iv_reference_formula = 'Tbl[[#This Row],[Air fare]]'
iv_shift_cols = 1 iv_shift_cols = 1
@ -1482,7 +1503,7 @@ CLASS lcl_excel_common_test IMPLEMENTATION.
METHOD shift_formula_refcolumn2. METHOD shift_formula_refcolumn2.
" Reference to another column in the same row of a Table, inside more complex expression " Reference to another column in the same row of a Table, inside more complex expression
macro_shift_formula( macro_shift_formula(
iv_reference_formula = 'Tbl[[#This Row],[Air]]+A1' iv_reference_formula = 'Tbl[[#This Row],[Air]]+A1'
iv_shift_cols = 1 iv_shift_cols = 1

View File

@ -34,17 +34,23 @@ CLASS zcl_excel_converter DEFINITION
EXPORTING EXPORTING
!e_bytecount TYPE i !e_bytecount TYPE i
!et_file TYPE solix_tab !et_file TYPE solix_tab
!e_file TYPE xstring . !e_file TYPE xstring
RAISING
zcx_excel .
METHODS get_option METHODS get_option
RETURNING RETURNING
VALUE(rs_option) TYPE zexcel_s_converter_option . VALUE(rs_option) TYPE zexcel_s_converter_option .
METHODS open_file . METHODS open_file
RAISING
zcx_excel .
METHODS set_option METHODS set_option
IMPORTING IMPORTING
!is_option TYPE zexcel_s_converter_option . !is_option TYPE zexcel_s_converter_option .
METHODS write_file METHODS write_file
IMPORTING IMPORTING
!i_path TYPE string OPTIONAL . !i_path TYPE string OPTIONAL
RAISING
zcx_excel .
*"* protected components of class ZCL_EXCEL_CONVERTER *"* protected components of class ZCL_EXCEL_CONVERTER
*"* do not include other source files here!!! *"* do not include other source files here!!!
PROTECTED SECTION. PROTECTED SECTION.
@ -249,7 +255,7 @@ ENDCLASS.
CLASS ZCL_EXCEL_CONVERTER IMPLEMENTATION. CLASS zcl_excel_converter IMPLEMENTATION.
METHOD ask_option. METHOD ask_option.

View File

@ -825,8 +825,10 @@ CLASS zcl_excel_drawing IMPLEMENTATION.
node ?= node->find_from_name( name = 'lineChart' namespace = 'c' ). node ?= node->find_from_name( name = 'lineChart' namespace = 'c' ).
node2 ?= node->find_from_name( name = 'marker' namespace = 'c' depth = '1' ). node2 ?= node->find_from_name( name = 'marker' namespace = 'c' depth = '1' ).
IF node2 IS BOUND.
zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ).
lo_linechart->ns_markerval = ls_prop-val. lo_linechart->ns_markerval = ls_prop-val.
ENDIF.
node2 ?= node->find_from_name( name = 'smooth' namespace = 'c' depth = '1' ). node2 ?= node->find_from_name( name = 'smooth' namespace = 'c' depth = '1' ).
zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ).
lo_linechart->ns_smoothval = ls_prop-val. lo_linechart->ns_smoothval = ls_prop-val.
@ -973,25 +975,37 @@ CLASS zcl_excel_drawing IMPLEMENTATION.
CASE me->graph_type. CASE me->graph_type.
WHEN c_graph_bars. WHEN c_graph_bars.
node2 ?= node->find_from_name( name = 'legendPos' namespace = 'c' ). node2 ?= node->find_from_name( name = 'legendPos' namespace = 'c' ).
IF node2 IS BOUND.
zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ).
lo_barchart->ns_legendposval = ls_prop-val. lo_barchart->ns_legendposval = ls_prop-val.
ENDIF.
node2 ?= node->find_from_name( name = 'overlay' namespace = 'c' ). node2 ?= node->find_from_name( name = 'overlay' namespace = 'c' ).
IF node2 IS BOUND.
zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ).
lo_barchart->ns_overlayval = ls_prop-val. lo_barchart->ns_overlayval = ls_prop-val.
ENDIF.
WHEN c_graph_line. WHEN c_graph_line.
node2 ?= node->find_from_name( name = 'legendPos' namespace = 'c' ). node2 ?= node->find_from_name( name = 'legendPos' namespace = 'c' ).
IF node2 IS BOUND.
zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ).
lo_linechart->ns_legendposval = ls_prop-val. lo_linechart->ns_legendposval = ls_prop-val.
ENDIF.
node2 ?= node->find_from_name( name = 'overlay' namespace = 'c' ). node2 ?= node->find_from_name( name = 'overlay' namespace = 'c' ).
IF node2 IS BOUND.
zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ).
lo_linechart->ns_overlayval = ls_prop-val. lo_linechart->ns_overlayval = ls_prop-val.
ENDIF.
WHEN c_graph_pie. WHEN c_graph_pie.
node2 ?= node->find_from_name( name = 'legendPos' namespace = 'c' ). node2 ?= node->find_from_name( name = 'legendPos' namespace = 'c' ).
IF node2 IS BOUND.
zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ).
lo_piechart->ns_legendposval = ls_prop-val. lo_piechart->ns_legendposval = ls_prop-val.
ENDIF.
node2 ?= node->find_from_name( name = 'overlay' namespace = 'c' ). node2 ?= node->find_from_name( name = 'overlay' namespace = 'c' ).
IF node2 IS BOUND.
zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ).
lo_piechart->ns_overlayval = ls_prop-val. lo_piechart->ns_overlayval = ls_prop-val.
ENDIF.
node2 ?= node->find_from_name( name = 'pPr' namespace = 'a' ). node2 ?= node->find_from_name( name = 'pPr' namespace = 'a' ).
zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ).
lo_piechart->ns_pprrtl = ls_prop-rtl. lo_piechart->ns_pprrtl = ls_prop-rtl.

View File

@ -0,0 +1,183 @@
CLASS zcl_excel_font DEFINITION
PUBLIC
FINAL
CREATE PUBLIC .
PUBLIC SECTION.
TYPES:
BEGIN OF mty_s_font_metric,
char TYPE c LENGTH 1,
char_width TYPE tdcwidths,
END OF mty_s_font_metric .
TYPES:
mty_th_font_metrics
TYPE HASHED TABLE OF mty_s_font_metric
WITH UNIQUE KEY char .
TYPES:
BEGIN OF mty_s_font_cache,
font_name TYPE zexcel_style_font_name,
font_height TYPE tdfontsize,
flag_bold TYPE abap_bool,
flag_italic TYPE abap_bool,
th_font_metrics TYPE mty_th_font_metrics,
END OF mty_s_font_cache .
TYPES:
mty_th_font_cache
TYPE HASHED TABLE OF mty_s_font_cache
WITH UNIQUE KEY font_name font_height flag_bold flag_italic .
CONSTANTS lc_default_font_height TYPE tdfontsize VALUE '110' ##NO_TEXT.
CONSTANTS lc_default_font_name TYPE zexcel_style_font_name VALUE 'Calibri' ##NO_TEXT.
CLASS-DATA mth_font_cache TYPE mty_th_font_cache .
CLASS-METHODS calculate_text_width
IMPORTING
!iv_font_name TYPE zexcel_style_font_name
!iv_font_height TYPE tdfontsize
!iv_flag_bold TYPE abap_bool
!iv_flag_italic TYPE abap_bool
!iv_cell_value TYPE zexcel_cell_value
RETURNING
VALUE(rv_width) TYPE float .
PROTECTED SECTION.
PRIVATE SECTION.
ENDCLASS.
CLASS zcl_excel_font IMPLEMENTATION.
METHOD calculate_text_width.
CONSTANTS lc_excel_cell_padding TYPE float VALUE '0.75'.
DATA: ld_current_character TYPE c LENGTH 1,
lt_itcfc TYPE STANDARD TABLE OF itcfc,
ld_offset TYPE i,
ld_length TYPE i,
ld_uccp TYPE i,
ls_font_metric TYPE mty_s_font_metric,
ld_width_from_font_metrics TYPE i,
ld_font_family TYPE itcfh-tdfamily,
lt_font_families LIKE STANDARD TABLE OF ld_font_family,
ls_font_cache TYPE mty_s_font_cache.
FIELD-SYMBOLS: <ls_font_cache> TYPE mty_s_font_cache,
<ls_font_metric> TYPE mty_s_font_metric,
<ls_itcfc> TYPE itcfc.
" Check if the same font (font name and font attributes) was already
" used before
READ TABLE mth_font_cache
WITH TABLE KEY
font_name = iv_font_name
font_height = iv_font_height
flag_bold = iv_flag_bold
flag_italic = iv_flag_italic
ASSIGNING <ls_font_cache>.
IF sy-subrc <> 0.
" Font is used for the first time
" Add the font to our local font cache
ls_font_cache-font_name = iv_font_name.
ls_font_cache-font_height = iv_font_height.
ls_font_cache-flag_bold = iv_flag_bold.
ls_font_cache-flag_italic = iv_flag_italic.
INSERT ls_font_cache INTO TABLE mth_font_cache
ASSIGNING <ls_font_cache>.
" Determine the SAPscript font family name from the Excel
" font name
SELECT tdfamily
FROM tfo01
INTO TABLE lt_font_families
UP TO 1 ROWS
WHERE tdtext = iv_font_name
ORDER BY PRIMARY KEY.
" Check if a matching font family was found
" Fonts can be uploaded from TTF files using transaction SE73
IF lines( lt_font_families ) > 0.
READ TABLE lt_font_families INDEX 1 INTO ld_font_family.
" Load font metrics (returns a table with the size of each letter
" in the font)
CALL FUNCTION 'LOAD_FONT'
EXPORTING
family = ld_font_family
height = iv_font_height
printer = 'SWIN'
bold = iv_flag_bold
italic = iv_flag_italic
TABLES
metric = lt_itcfc
EXCEPTIONS
font_family = 1
codepage = 2
device_type = 3
OTHERS = 4.
IF sy-subrc <> 0.
CLEAR lt_itcfc.
ENDIF.
" For faster access, convert each character number to the actual
" character, and store the characters and their sizes in a hash
" table
LOOP AT lt_itcfc ASSIGNING <ls_itcfc>.
ld_uccp = <ls_itcfc>-cpcharno.
ls_font_metric-char =
cl_abap_conv_in_ce=>uccpi( ld_uccp ).
ls_font_metric-char_width = <ls_itcfc>-tdcwidths.
INSERT ls_font_metric
INTO TABLE <ls_font_cache>-th_font_metrics.
ENDLOOP.
ENDIF.
ENDIF.
" Calculate the cell width
" If available, use font metrics
IF lines( <ls_font_cache>-th_font_metrics ) = 0.
" Font metrics are not available
" -> Calculate the cell width using only the font size
ld_length = strlen( iv_cell_value ).
rv_width = ld_length * iv_font_height / lc_default_font_height + lc_excel_cell_padding.
ELSE.
" Font metrics are available
" Calculate the size of the text by adding the sizes of each
" letter
ld_length = strlen( iv_cell_value ).
DO ld_length TIMES.
" Subtract 1, because the first character is at offset 0
ld_offset = sy-index - 1.
" Read the current character from the cell value
ld_current_character = iv_cell_value+ld_offset(1).
" Look up the size of the current letter
READ TABLE <ls_font_cache>-th_font_metrics
WITH TABLE KEY char = ld_current_character
ASSIGNING <ls_font_metric>.
IF sy-subrc = 0.
" The size of the letter is known
" -> Add the actual size of the letter
ADD <ls_font_metric>-char_width TO ld_width_from_font_metrics.
ELSE.
" The size of the letter is unknown
" -> Add the font height as the default letter size
ADD iv_font_height TO ld_width_from_font_metrics.
ENDIF.
ENDDO.
" Add cell padding (Excel makes columns a bit wider than the space
" that is needed for the text itself) and convert unit
" (division by 100)
rv_width = ld_width_from_font_metrics / 100 + lc_excel_cell_padding.
ENDIF.
ENDMETHOD.
ENDCLASS.

View File

@ -0,0 +1,27 @@
CLASS ltcl_test DEFINITION FOR TESTING DURATION SHORT RISK LEVEL HARMLESS FINAL.
PRIVATE SECTION.
METHODS calculate FOR TESTING RAISING cx_static_check.
ENDCLASS.
CLASS ltcl_test IMPLEMENTATION.
METHOD calculate.
DATA lv_width TYPE f.
lv_width = zcl_excel_font=>calculate_text_width(
iv_font_name = 'foobar'
iv_font_height = 20
iv_flag_bold = abap_false
iv_flag_italic = abap_false
iv_cell_value = 'hello world' ).
cl_abap_unit_assert=>assert_equals(
act = lv_width
exp = '2.75' ).
ENDMETHOD.
ENDCLASS.

View File

@ -0,0 +1,17 @@
<?xml version="1.0" encoding="utf-8"?>
<abapGit version="v1.0.0" serializer="LCL_OBJECT_CLAS" serializer_version="v1.0.0">
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
<asx:values>
<VSEOCLASS>
<CLSNAME>ZCL_EXCEL_FONT</CLSNAME>
<LANGU>E</LANGU>
<DESCRIPT>abap2xlsx - Font Logic</DESCRIPT>
<STATE>1</STATE>
<CLSCCINCL>X</CLSCCINCL>
<FIXPT>X</FIXPT>
<UNICODE>X</UNICODE>
<WITH_UNIT_TESTS>X</WITH_UNIT_TESTS>
</VSEOCLASS>
</asx:values>
</asx:abap>
</abapGit>

View File

@ -254,7 +254,9 @@ CLASS zcl_excel_reader_2007 DEFINITION
METHODS load_worksheet_autofilter METHODS load_worksheet_autofilter
IMPORTING IMPORTING
io_ixml_worksheet TYPE REF TO if_ixml_document io_ixml_worksheet TYPE REF TO if_ixml_document
io_worksheet TYPE REF TO zcl_excel_worksheet. io_worksheet TYPE REF TO zcl_excel_worksheet
RAISING
zcx_excel.
METHODS load_worksheet_pagemargins METHODS load_worksheet_pagemargins
IMPORTING IMPORTING
!io_ixml_worksheet TYPE REF TO if_ixml_document !io_ixml_worksheet TYPE REF TO if_ixml_document
@ -276,7 +278,9 @@ CLASS zcl_excel_reader_2007 DEFINITION
METHODS load_theme METHODS load_theme
IMPORTING IMPORTING
VALUE(iv_path) TYPE string VALUE(iv_path) TYPE string
!ip_excel TYPE REF TO zcl_excel . !ip_excel TYPE REF TO zcl_excel
RAISING
zcx_excel .
PRIVATE SECTION. PRIVATE SECTION.
DATA zip TYPE REF TO lcl_zip_archive . DATA zip TYPE REF TO lcl_zip_archive .
@ -872,7 +876,7 @@ CLASS zcl_excel_reader_2007 IMPLEMENTATION.
lo_node_si TYPE REF TO if_ixml_element, lo_node_si TYPE REF TO if_ixml_element,
lo_node_si_child TYPE REF TO if_ixml_element, lo_node_si_child TYPE REF TO if_ixml_element,
lo_node_r_child_t TYPE REF TO if_ixml_element, lo_node_r_child_t TYPE REF TO if_ixml_element,
lo_node_r_child_rPr TYPE REF TO if_ixml_element, lo_node_r_child_rpr TYPE REF TO if_ixml_element,
lo_font TYPE REF TO zcl_excel_style_font, lo_font TYPE REF TO zcl_excel_style_font,
ls_rtf TYPE zexcel_s_rtf, ls_rtf TYPE zexcel_s_rtf,
lv_current_offset TYPE int2, lv_current_offset TYPE int2,
@ -2208,6 +2212,7 @@ CLASS zcl_excel_reader_2007 IMPLEMENTATION.
zoomscalenormal TYPE string, zoomscalenormal TYPE string,
workbookviewid TYPE string, workbookviewid TYPE string,
showrowcolheaders TYPE string, showrowcolheaders TYPE string,
righttoleft TYPE string,
END OF lty_sheetview. END OF lty_sheetview.
TYPES: BEGIN OF lty_mergecell, TYPES: BEGIN OF lty_mergecell,
@ -2724,6 +2729,10 @@ CLASS zcl_excel_reader_2007 IMPLEMENTATION.
ls_sheetview-showgridlines = abap_false. ls_sheetview-showgridlines = abap_false.
ENDIF. ENDIF.
io_worksheet->set_show_gridlines( ls_sheetview-showgridlines ). io_worksheet->set_show_gridlines( ls_sheetview-showgridlines ).
IF ls_sheetview-righttoleft = lc_xml_attr_true
OR ls_sheetview-righttoleft = lc_xml_attr_true_int.
io_worksheet->zif_excel_sheet_properties~set_right_to_left( abap_true ).
ENDIF.
"Add merge cell information "Add merge cell information

View File

@ -68,7 +68,9 @@ CLASS zcl_excel_reader_huge_file DEFINITION
METHODS put_cell_to_worksheet METHODS put_cell_to_worksheet
IMPORTING IMPORTING
!io_worksheet TYPE REF TO zcl_excel_worksheet !io_worksheet TYPE REF TO zcl_excel_worksheet
!is_cell TYPE t_cell . !is_cell TYPE t_cell
RAISING
zcx_excel.
METHODS get_shared_string METHODS get_shared_string
IMPORTING IMPORTING
!iv_index TYPE any !iv_index TYPE any
@ -88,7 +90,8 @@ CLASS zcl_excel_reader_huge_file DEFINITION
!io_reader TYPE REF TO if_sxml_reader !io_reader TYPE REF TO if_sxml_reader
!io_worksheet TYPE REF TO zcl_excel_worksheet !io_worksheet TYPE REF TO zcl_excel_worksheet
RAISING RAISING
lcx_not_found . lcx_not_found
zcx_excel .
METHODS get_sxml_reader METHODS get_sxml_reader
IMPORTING IMPORTING
!iv_path TYPE string !iv_path TYPE string
@ -246,16 +249,20 @@ CLASS zcl_excel_reader_huge_file IMPLEMENTATION.
WHILE io_reader->node_type NE c_end_of_stream. WHILE io_reader->node_type NE c_end_of_stream.
io_reader->next_node( ). io_reader->next_node( ).
IF io_reader->name EQ `t`. CASE io_reader->name.
WHEN 'si'.
CASE io_reader->node_type . CASE io_reader->node_type .
WHEN c_element_open . WHEN c_element_open .
CLEAR lv_value . CLEAR lv_value .
WHEN c_node_value .
lv_value = lv_value && io_reader->value .
WHEN c_element_close . WHEN c_element_close .
APPEND lv_value TO et_shared_strings. APPEND lv_value TO et_shared_strings.
ENDCASE . ENDCASE .
ENDIF. WHEN 't'.
CASE io_reader->node_type .
WHEN c_node_value .
lv_value = lv_value && io_reader->value .
ENDCASE .
ENDCASE .
ENDWHILE. ENDWHILE.
ENDMETHOD. ENDMETHOD.

View File

@ -1,133 +1,134 @@
*"* use this source file for your ABAP unit test classes *"* use this source file for your ABAP unit test classes
class lcl_test definition deferred. CLASS lcl_test DEFINITION DEFERRED.
class zcl_excel_reader_huge_file definition local friends lcl_test. CLASS zcl_excel_reader_huge_file DEFINITION LOCAL FRIENDS lcl_test.
* *
class lcl_test definition for testing CLASS lcl_test DEFINITION FOR TESTING
risk level harmless RISK LEVEL HARMLESS
duration short. DURATION SHORT.
private section. PRIVATE SECTION.
data: DATA:
out type ref to zcl_excel_reader_huge_file, " object under test out TYPE REF TO zcl_excel_reader_huge_file, " object under test
excel type ref to zcl_excel, excel TYPE REF TO zcl_excel,
worksheet type ref to zcl_excel_worksheet. worksheet TYPE REF TO zcl_excel_worksheet.
methods: METHODS:
setup raising cx_static_check, setup RAISING cx_static_check,
test_number for testing raising cx_static_check, test_number FOR TESTING RAISING cx_static_check,
test_shared_string for testing raising cx_static_check, test_shared_string FOR TESTING RAISING cx_static_check,
test_shared_string_missing for testing raising cx_static_check, test_shared_string_missing FOR TESTING RAISING cx_static_check,
test_inline_string for testing raising cx_static_check, test_inline_string FOR TESTING RAISING cx_static_check,
test_empty_cells for testing raising cx_static_check, test_empty_cells FOR TESTING RAISING cx_static_check,
test_boolean for testing raising cx_static_check, test_boolean FOR TESTING RAISING cx_static_check,
test_style for testing raising cx_static_check, test_style FOR TESTING RAISING cx_static_check,
test_style_missing for testing raising cx_static_check, test_style_missing FOR TESTING RAISING cx_static_check,
test_formula for testing raising cx_static_check, test_formula FOR TESTING RAISING cx_static_check,
test_read_shared_strings for testing raising cx_static_check, test_read_shared_strings FOR TESTING RAISING cx_static_check,
test_shared_string_some_empty for testing raising cx_static_check, test_shared_string_some_empty FOR TESTING RAISING cx_static_check,
test_skip_to_inexistent for testing raising cx_static_check, test_shared_string_multi_style FOR TESTING RAISING cx_static_check,
get_reader importing iv_xml type string returning value(eo_reader) type ref to if_sxml_reader, test_skip_to_inexistent FOR TESTING RAISING cx_static_check,
assert_value_equals importing iv_row type i default 1 iv_col type i default 1 iv_value type string, get_reader IMPORTING iv_xml TYPE string RETURNING VALUE(eo_reader) TYPE REF TO if_sxml_reader,
assert_formula_equals importing iv_row type i default 1 iv_col type i default 1 iv_formula type string, assert_value_equals IMPORTING iv_row TYPE i DEFAULT 1 iv_col TYPE i DEFAULT 1 iv_value TYPE string,
assert_style_equals importing iv_row type i default 1 iv_col type i default 1 iv_style type ZEXCEL_CELL_STYLE, assert_formula_equals IMPORTING iv_row TYPE i DEFAULT 1 iv_col TYPE i DEFAULT 1 iv_formula TYPE string,
assert_datatype_equals importing iv_row type i default 1 iv_col type i default 1 iv_datatype type string. assert_style_equals IMPORTING iv_row TYPE i DEFAULT 1 iv_col TYPE i DEFAULT 1 iv_style TYPE zexcel_cell_style,
assert_datatype_equals IMPORTING iv_row TYPE i DEFAULT 1 iv_col TYPE i DEFAULT 1 iv_datatype TYPE string.
endclass. "lcl_test DEFINITION ENDCLASS. "lcl_test DEFINITION
* *
class lcl_test implementation. CLASS lcl_test IMPLEMENTATION.
* *
method test_number. METHOD test_number.
data lo_reader type ref to if_sxml_reader. DATA lo_reader TYPE REF TO if_sxml_reader.
lo_reader = get_reader( lo_reader = get_reader(
`<c r="A1" t="n"><v>17</v></c>` `<c r="A1" t="n"><v>17</v></c>`
). ).
out->read_worksheet_data( io_reader = lo_reader io_worksheet = worksheet ). out->read_worksheet_data( io_reader = lo_reader io_worksheet = worksheet ).
assert_value_equals( `17` ). assert_value_equals( `17` ).
assert_datatype_equals( `n` ). assert_datatype_equals( `n` ).
endmethod. "test_shared_string ENDMETHOD. "test_shared_string
* *
method test_shared_string. METHOD test_shared_string.
data lo_reader type ref to if_sxml_reader. DATA lo_reader TYPE REF TO if_sxml_reader.
data: ls_shared_string type zcl_excel_reader_huge_file=>t_shared_string. DATA: ls_shared_string TYPE zcl_excel_reader_huge_file=>t_shared_string.
ls_shared_string-value = `Test1`. ls_shared_string-value = `Test1`.
append ls_shared_string to out->shared_strings. APPEND ls_shared_string TO out->shared_strings.
ls_shared_string-value = `Test2`. ls_shared_string-value = `Test2`.
append ls_shared_string to out->shared_strings. APPEND ls_shared_string TO out->shared_strings.
lo_reader = get_reader( lo_reader = get_reader(
`<c r="A1" t="s"><v>1</v></c>` `<c r="A1" t="s"><v>1</v></c>`
). ).
out->read_worksheet_data( io_reader = lo_reader io_worksheet = worksheet ). out->read_worksheet_data( io_reader = lo_reader io_worksheet = worksheet ).
assert_value_equals( `Test2` ). assert_value_equals( `Test2` ).
assert_datatype_equals( `s` ). assert_datatype_equals( `s` ).
endmethod. "test_shared_string ENDMETHOD. "test_shared_string
* *
method test_shared_string_missing. METHOD test_shared_string_missing.
data: lo_reader type ref to if_sxml_reader, DATA: lo_reader TYPE REF TO if_sxml_reader,
lo_ex type ref to lcx_not_found, lo_ex TYPE REF TO lcx_not_found,
lv_text type string. lv_text TYPE string.
data: ls_shared_string type zcl_excel_reader_huge_file=>t_shared_string. DATA: ls_shared_string TYPE zcl_excel_reader_huge_file=>t_shared_string.
ls_shared_string-value = `Test`. ls_shared_string-value = `Test`.
append ls_shared_string to out->shared_strings. APPEND ls_shared_string TO out->shared_strings.
lo_reader = get_reader( lo_reader = get_reader(
`<c r="A1" t="s"><v>1</v></c>` `<c r="A1" t="s"><v>1</v></c>`
). ).
try. TRY.
out->read_worksheet_data( io_reader = lo_reader io_worksheet = worksheet ). out->read_worksheet_data( io_reader = lo_reader io_worksheet = worksheet ).
CL_ABAP_UNIT_ASSERT=>fail( `Index to non-existent shared string should give an error` ). cl_abap_unit_assert=>fail( `Index to non-existent shared string should give an error` ).
catch lcx_not_found into lo_ex. CATCH lcx_not_found INTO lo_ex.
lv_text = lo_ex->get_text( ). " >>> May inspect the message in the debugger lv_text = lo_ex->get_text( ). " >>> May inspect the message in the debugger
endtry. ENDTRY.
endmethod. ENDMETHOD.
* *
method test_inline_string. METHOD test_inline_string.
data lo_reader type ref to if_sxml_reader. DATA lo_reader TYPE REF TO if_sxml_reader.
lo_reader = get_reader( lo_reader = get_reader(
`<c r="A1" t="inlineStr"><is><t>Alpha</t></is></c>` `<c r="A1" t="inlineStr"><is><t>Alpha</t></is></c>`
). ).
out->read_worksheet_data( io_reader = lo_reader io_worksheet = worksheet ). out->read_worksheet_data( io_reader = lo_reader io_worksheet = worksheet ).
assert_value_equals( `Alpha` ). assert_value_equals( `Alpha` ).
assert_datatype_equals( `inlineStr` ). assert_datatype_equals( `inlineStr` ).
endmethod. "test_inline_string ENDMETHOD. "test_inline_string
* *
method test_boolean. METHOD test_boolean.
data lo_reader type ref to if_sxml_reader. DATA lo_reader TYPE REF TO if_sxml_reader.
lo_reader = get_reader( lo_reader = get_reader(
`<c r="A1" t="b"><v>1</v></c>` `<c r="A1" t="b"><v>1</v></c>`
). ).
out->read_worksheet_data( io_reader = lo_reader io_worksheet = worksheet ). out->read_worksheet_data( io_reader = lo_reader io_worksheet = worksheet ).
assert_value_equals( `1` ). assert_value_equals( `1` ).
assert_datatype_equals( `b` ). assert_datatype_equals( `b` ).
endmethod. "test_boolean ENDMETHOD. "test_boolean
* *
method test_formula. METHOD test_formula.
data lo_reader type ref to if_sxml_reader. DATA lo_reader TYPE REF TO if_sxml_reader.
lo_reader = get_reader( lo_reader = get_reader(
`<c r="A1" t="n"><f>A2*A2</f></c>` `<c r="A1" t="n"><f>A2*A2</f></c>`
). ).
out->read_worksheet_data( io_reader = lo_reader io_worksheet = worksheet ). out->read_worksheet_data( io_reader = lo_reader io_worksheet = worksheet ).
assert_formula_equals( `A2*A2` ). assert_formula_equals( `A2*A2` ).
assert_datatype_equals( `n` ). assert_datatype_equals( `n` ).
endmethod. "test_formula ENDMETHOD. "test_formula
* *
method test_empty_cells. METHOD test_empty_cells.
* There is no need to store an empty cell in the ABAP worksheet structure * There is no need to store an empty cell in the ABAP worksheet structure
data: lo_reader type ref to if_sxml_reader. DATA: lo_reader TYPE REF TO if_sxml_reader.
data: ls_shared_string type zcl_excel_reader_huge_file=>t_shared_string. DATA: ls_shared_string TYPE zcl_excel_reader_huge_file=>t_shared_string.
ls_shared_string-value = ``. ls_shared_string-value = ``.
append ls_shared_string to out->shared_strings. APPEND ls_shared_string TO out->shared_strings.
ls_shared_string-value = `t`. ls_shared_string-value = `t`.
append ls_shared_string to out->shared_strings. APPEND ls_shared_string TO out->shared_strings.
lo_reader = get_reader( lo_reader = get_reader(
`<c r="A1" t="s"><v>0</v></c>` & `<c r="A1" t="s"><v>0</v></c>` &
`<c r="A2" t="inlineStr"><is><t></t></is></c>` & `<c r="A2" t="inlineStr"><is><t></t></is></c>` &
@ -140,16 +141,16 @@ class lcl_test implementation.
assert_value_equals( iv_row = 2 iv_col = 1 iv_value = `` ). assert_value_equals( iv_row = 2 iv_col = 1 iv_value = `` ).
assert_value_equals( iv_row = 3 iv_col = 1 iv_value = `t` ). assert_value_equals( iv_row = 3 iv_col = 1 iv_value = `t` ).
endmethod. ENDMETHOD.
* *
method test_style. METHOD test_style.
data: DATA:
lo_reader type ref to if_sxml_reader, lo_reader TYPE REF TO if_sxml_reader,
lo_style type ref to zcl_excel_style, lo_style TYPE REF TO zcl_excel_style,
lv_guid type ZEXCEL_CELL_STYLE. lv_guid TYPE zexcel_cell_style.
create object lo_style. CREATE OBJECT lo_style.
append lo_style to out->styles. APPEND lo_style TO out->styles.
lv_guid = lo_style->get_guid( ). lv_guid = lo_style->get_guid( ).
lo_reader = get_reader( lo_reader = get_reader(
@ -159,173 +160,196 @@ class lcl_test implementation.
assert_style_equals( lv_guid ). assert_style_equals( lv_guid ).
endmethod. "test_style ENDMETHOD. "test_style
* *
method test_style_missing. METHOD test_style_missing.
data: DATA:
lo_reader type ref to if_sxml_reader, lo_reader TYPE REF TO if_sxml_reader,
lo_ex type ref to lcx_not_found, lo_ex TYPE REF TO lcx_not_found,
lv_text type string. lv_text TYPE string.
lo_reader = get_reader( lo_reader = get_reader(
`<c r="A1" s="0"><v>18</v></c>` `<c r="A1" s="0"><v>18</v></c>`
). ).
try. TRY.
out->read_worksheet_data( io_reader = lo_reader io_worksheet = worksheet ). out->read_worksheet_data( io_reader = lo_reader io_worksheet = worksheet ).
CL_ABAP_UNIT_ASSERT=>fail( `Reference to non-existent style should throw an lcx_not_found exception` ). cl_abap_unit_assert=>fail( `Reference to non-existent style should throw an lcx_not_found exception` ).
catch lcx_not_found into lo_ex. CATCH lcx_not_found INTO lo_ex.
lv_text = lo_ex->get_text( ). " >>> May inspect the message in the debugger lv_text = lo_ex->get_text( ). " >>> May inspect the message in the debugger
endtry. ENDTRY.
endmethod. "test_style ENDMETHOD. "test_style
* *
method test_read_shared_strings. METHOD test_read_shared_strings.
data: lo_c2x type ref to cl_abap_conv_out_ce, DATA: lo_c2x TYPE REF TO cl_abap_conv_out_ce,
lv_xstring type xstring, lv_xstring TYPE xstring,
lo_reader type ref to if_sxml_reader, lo_reader TYPE REF TO if_sxml_reader,
lt_act type stringtab, lt_act TYPE stringtab,
lt_exp type stringtab. lt_exp TYPE stringtab.
lo_c2x = cl_abap_conv_out_ce=>create( ). lo_c2x = cl_abap_conv_out_ce=>create( ).
lo_c2x->convert( exporting data = `<sst><si><t/></si><si><t>Alpha</t></si><si><t>Bravo</t></si></sst>` lo_c2x->convert( EXPORTING data = `<sst><si><t/></si><si><t>Alpha</t></si><si><t>Bravo</t></si></sst>`
importing buffer = lv_xstring ). IMPORTING buffer = lv_xstring ).
lo_reader = cl_sxml_string_reader=>create( lv_xstring ). lo_reader = cl_sxml_string_reader=>create( lv_xstring ).
append : APPEND :
`` to lt_exp, `` TO lt_exp,
`Alpha` to lt_exp, `Alpha` TO lt_exp,
`Bravo` to lt_exp. `Bravo` TO lt_exp.
lt_act = out->read_shared_strings( lo_reader ). lt_act = out->read_shared_strings( lo_reader ).
CL_ABAP_UNIT_ASSERT=>assert_equals( act = lt_act cl_abap_unit_assert=>assert_equals( act = lt_act
exp = lt_exp ). exp = lt_exp ).
endmethod. ENDMETHOD.
* *
method test_shared_string_some_empty. METHOD test_shared_string_some_empty.
data: lo_reader type ref to if_sxml_reader, DATA: lo_reader TYPE REF TO if_sxml_reader,
lt_act type stringtab, lt_act TYPE stringtab,
lt_exp type stringtab. lt_exp TYPE stringtab.
lo_reader = cl_sxml_string_reader=>create( cl_abap_codepage=>convert_to( lo_reader = cl_sxml_string_reader=>create( cl_abap_codepage=>convert_to(
`<sst><si><t/></si>` & `<sst><si><t/></si>` &
`<si><t>Alpha</t></si>` & `<si><t>Alpha</t></si>` &
`<si><t/></si>` & `<si><t/></si>` &
`<si><t>Bravo</t></si></sst>` `<si><t>Bravo</t></si></sst>`
) ). ) ).
append : APPEND :
`` to lt_exp, `` TO lt_exp,
`Alpha` to lt_exp, `Alpha` TO lt_exp,
`` to lt_exp, `` TO lt_exp,
`Bravo` to lt_exp. `Bravo` TO lt_exp.
lt_act = out->read_shared_strings( lo_reader ). lt_act = out->read_shared_strings( lo_reader ).
CL_ABAP_UNIT_ASSERT=>assert_equals( act = lt_act cl_abap_unit_assert=>assert_equals( act = lt_act
exp = lt_exp ). exp = lt_exp ).
endmethod. ENDMETHOD.
*
METHOD test_shared_string_multi_style.
DATA: lo_reader TYPE REF TO if_sxml_reader,
lt_act TYPE stringtab,
lt_exp TYPE stringtab.
lo_reader = cl_sxml_string_reader=>create( cl_abap_codepage=>convert_to(
`<sst>` &&
`<si><t>Cell A2</t></si>` &&
`<si><r><t>the following coloured part</t></r><r><rPr><sz val="11"/><color rgb="FFFF0000"/><rFont val="Calibri"/><family val="2"/><scheme val="minor"/></rPr><t xml:space="preserve"> will be preserved</t></r></si>` &&
`<si><t>Cell A3</t></si>` &&
`</sst>` ) ).
APPEND :
`Cell A2` TO lt_exp,
`the following coloured part will be preserved` TO lt_exp,
`Cell A3` TO lt_exp.
lt_act = out->read_shared_strings( lo_reader ).
cl_abap_unit_assert=>assert_equals( act = lt_act
exp = lt_exp ).
ENDMETHOD.
* *
method test_skip_to_inexistent. METHOD test_skip_to_inexistent.
data: lo_c2x type ref to cl_abap_conv_out_ce, DATA: lo_c2x TYPE REF TO cl_abap_conv_out_ce,
lv_xstring type xstring, lv_xstring TYPE xstring,
lo_reader type ref to if_sxml_reader, lo_reader TYPE REF TO if_sxml_reader,
lo_ex type ref to lcx_not_found, lo_ex TYPE REF TO lcx_not_found,
lv_text type string. lv_text TYPE string.
lo_c2x = cl_abap_conv_out_ce=>create( ). lo_c2x = cl_abap_conv_out_ce=>create( ).
lo_c2x->convert( exporting data = `<sst><si><t/></si><si><t>Alpha</t></si><si><t>Bravo</t></si></sst>` lo_c2x->convert( EXPORTING data = `<sst><si><t/></si><si><t>Alpha</t></si><si><t>Bravo</t></si></sst>`
importing buffer = lv_xstring ). IMPORTING buffer = lv_xstring ).
lo_reader = cl_sxml_string_reader=>create( lv_xstring ). lo_reader = cl_sxml_string_reader=>create( lv_xstring ).
try. TRY.
out->skip_to( iv_element_name = `nonExistingElement` io_reader = lo_reader ). out->skip_to( iv_element_name = `nonExistingElement` io_reader = lo_reader ).
CL_ABAP_UNIT_ASSERT=>fail( `Skipping to non-existing element must raise lcx_not_found exception` ). cl_abap_unit_assert=>fail( `Skipping to non-existing element must raise lcx_not_found exception` ).
catch lcx_not_found into lo_ex. CATCH lcx_not_found INTO lo_ex.
lv_text = lo_ex->get_text( ). " May inspect exception text in debugger lv_text = lo_ex->get_text( ). " May inspect exception text in debugger
endtry. ENDTRY.
endmethod. ENDMETHOD.
* *
method get_reader. METHOD get_reader.
data: lv_full type string, DATA: lv_full TYPE string,
lo_c2x type ref to cl_abap_conv_out_ce, lo_c2x TYPE REF TO cl_abap_conv_out_ce,
lv_xstring type xstring. lv_xstring TYPE xstring.
concatenate `<root><sheetData><row>` iv_xml `</row></sheetData></root>` into lv_full. CONCATENATE `<root><sheetData><row>` iv_xml `</row></sheetData></root>` INTO lv_full.
lo_c2x = cl_abap_conv_out_ce=>create( ). lo_c2x = cl_abap_conv_out_ce=>create( ).
lo_c2x->convert( exporting data = lv_full lo_c2x->convert( EXPORTING data = lv_full
importing buffer = lv_xstring ). IMPORTING buffer = lv_xstring ).
eo_reader = cl_sxml_string_reader=>create( lv_xstring ). eo_reader = cl_sxml_string_reader=>create( lv_xstring ).
endmethod. "get_reader ENDMETHOD. "get_reader
* *
method assert_value_equals. METHOD assert_value_equals.
constants: lc_empty_string type string value is initial. CONSTANTS: lc_empty_string TYPE string VALUE IS INITIAL.
field-symbols: <ls_cell_data> type zexcel_s_cell_data, FIELD-SYMBOLS: <ls_cell_data> TYPE zexcel_s_cell_data,
<lv_value> type string. <lv_value> TYPE string.
read table worksheet->sheet_content assigning <ls_cell_data> READ TABLE worksheet->sheet_content ASSIGNING <ls_cell_data>
with table key cell_row = iv_row cell_column = iv_col. WITH TABLE KEY cell_row = iv_row cell_column = iv_col.
if sy-subrc eq 0. IF sy-subrc EQ 0.
assign <ls_cell_data>-cell_value to <lv_value>. ASSIGN <ls_cell_data>-cell_value TO <lv_value>.
else. ELSE.
assign lc_empty_string to <lv_value>. ASSIGN lc_empty_string TO <lv_value>.
endif. ENDIF.
CL_ABAP_UNIT_ASSERT=>assert_equals( act = <lv_value> cl_abap_unit_assert=>assert_equals( act = <lv_value>
exp = iv_value ). exp = iv_value ).
endmethod. "assert_value_equals ENDMETHOD. "assert_value_equals
** **
method assert_formula_equals. METHOD assert_formula_equals.
field-symbols: <ls_cell_data> type zexcel_s_cell_data. FIELD-SYMBOLS: <ls_cell_data> TYPE zexcel_s_cell_data.
read table worksheet->sheet_content assigning <ls_cell_data> READ TABLE worksheet->sheet_content ASSIGNING <ls_cell_data>
with table key cell_row = iv_row cell_column = iv_col. WITH TABLE KEY cell_row = iv_row cell_column = iv_col.
CL_ABAP_UNIT_ASSERT=>assert_subrc( sy-subrc ). cl_abap_unit_assert=>assert_subrc( sy-subrc ).
CL_ABAP_UNIT_ASSERT=>assert_equals( act = <ls_cell_data>-cell_formula cl_abap_unit_assert=>assert_equals( act = <ls_cell_data>-cell_formula
exp = iv_formula ). exp = iv_formula ).
endmethod. "assert_formula_equals ENDMETHOD. "assert_formula_equals
* *
method assert_style_equals. METHOD assert_style_equals.
field-symbols: <ls_cell_data> type zexcel_s_cell_data. FIELD-SYMBOLS: <ls_cell_data> TYPE zexcel_s_cell_data.
read table worksheet->sheet_content assigning <ls_cell_data> READ TABLE worksheet->sheet_content ASSIGNING <ls_cell_data>
with table key cell_row = iv_row cell_column = iv_col. WITH TABLE KEY cell_row = iv_row cell_column = iv_col.
CL_ABAP_UNIT_ASSERT=>assert_subrc( sy-subrc ). cl_abap_unit_assert=>assert_subrc( sy-subrc ).
CL_ABAP_UNIT_ASSERT=>assert_equals( act = <ls_cell_data>-cell_style cl_abap_unit_assert=>assert_equals( act = <ls_cell_data>-cell_style
exp = iv_style ). exp = iv_style ).
endmethod. ENDMETHOD.
* *
method assert_datatype_equals. METHOD assert_datatype_equals.
field-symbols: <ls_cell_data> type zexcel_s_cell_data. FIELD-SYMBOLS: <ls_cell_data> TYPE zexcel_s_cell_data.
read table worksheet->sheet_content assigning <ls_cell_data> READ TABLE worksheet->sheet_content ASSIGNING <ls_cell_data>
with table key cell_row = iv_row cell_column = iv_col. WITH TABLE KEY cell_row = iv_row cell_column = iv_col.
CL_ABAP_UNIT_ASSERT=>assert_subrc( sy-subrc ). cl_abap_unit_assert=>assert_subrc( sy-subrc ).
CL_ABAP_UNIT_ASSERT=>assert_equals( act = <ls_cell_data>-data_type cl_abap_unit_assert=>assert_equals( act = <ls_cell_data>-data_type
exp = iv_datatype ). exp = iv_datatype ).
endmethod. "assert_datatype_equals ENDMETHOD. "assert_datatype_equals
method setup. METHOD setup.
create object out. CREATE OBJECT out.
create object excel. CREATE OBJECT excel.
create object worksheet CREATE OBJECT worksheet
exporting EXPORTING
ip_excel = excel. ip_excel = excel.
endmethod. "setup ENDMETHOD. "setup
endclass. "lcl_test IMPLEMENTATION ENDCLASS. "lcl_test IMPLEMENTATION

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,16 @@
<?xml version="1.0" encoding="utf-8"?>
<abapGit version="v1.0.0" serializer="LCL_OBJECT_CLAS" serializer_version="v1.0.0">
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
<asx:values>
<VSEOCLASS>
<CLSNAME>ZCL_EXCEL_STYLE_CHANGER</CLSNAME>
<LANGU>E</LANGU>
<DESCRIPT>Style changer</DESCRIPT>
<STATE>1</STATE>
<CLSCCINCL>X</CLSCCINCL>
<FIXPT>X</FIXPT>
<UNICODE>X</UNICODE>
</VSEOCLASS>
</asx:values>
</asx:abap>
</abapGit>

File diff suppressed because it is too large Load Diff

View File

@ -15,9 +15,9 @@ CLASS lcl_excel_worksheet_test DEFINITION FOR TESTING
CLASS-METHODS: class_teardown. CLASS-METHODS: class_teardown.
METHODS: setup. METHODS: setup.
METHODS: teardown. METHODS: teardown.
METHODS: set_merge FOR TESTING. METHODS: set_merge FOR TESTING RAISING cx_static_check.
METHODS: delete_merge FOR TESTING. METHODS: delete_merge FOR TESTING RAISING cx_static_check.
METHODS: get_dimension_range FOR TESTING. METHODS: get_dimension_range FOR TESTING RAISING cx_static_check.
ENDCLASS. "lcl_Excel_Worksheet_Test ENDCLASS. "lcl_Excel_Worksheet_Test
@ -78,9 +78,13 @@ CLASS lcl_excel_worksheet_test IMPLEMENTATION.
CREATE OBJECT lo_excel. CREATE OBJECT lo_excel.
TRY.
CREATE OBJECT f_cut CREATE OBJECT f_cut
EXPORTING EXPORTING
ip_excel = lo_excel. ip_excel = lo_excel.
CATCH zcx_excel.
cl_abap_unit_assert=>fail( 'Could not create instance' ).
ENDTRY.
ENDMETHOD. "setup ENDMETHOD. "setup

View File

@ -753,12 +753,6 @@
<LANGU>E</LANGU> <LANGU>E</LANGU>
<DESCRIPT>Pagebreaks</DESCRIPT> <DESCRIPT>Pagebreaks</DESCRIPT>
</SEOCOMPOTX> </SEOCOMPOTX>
<SEOCOMPOTX>
<CLSNAME>ZCL_EXCEL_WORKSHEET</CLSNAME>
<CMPNAME>MTH_FONT_CACHE</CMPNAME>
<LANGU>E</LANGU>
<DESCRIPT>Hash table containing fonts and their metrics</DESCRIPT>
</SEOCOMPOTX>
<SEOCOMPOTX> <SEOCOMPOTX>
<CLSNAME>ZCL_EXCEL_WORKSHEET</CLSNAME> <CLSNAME>ZCL_EXCEL_WORKSHEET</CLSNAME>
<CMPNAME>MTY_MERGE</CMPNAME> <CMPNAME>MTY_MERGE</CMPNAME>

View File

@ -48,13 +48,17 @@ CLASS zcl_excel_writer_2007 DEFINITION
!io_document TYPE REF TO if_ixml_document !io_document TYPE REF TO if_ixml_document
!io_worksheet TYPE REF TO zcl_excel_worksheet !io_worksheet TYPE REF TO zcl_excel_worksheet
RETURNING RETURNING
VALUE(rv_ixml_sheet_data_root) TYPE REF TO if_ixml_element . VALUE(rv_ixml_sheet_data_root) TYPE REF TO if_ixml_element
RAISING
zcx_excel .
METHODS add_further_data_to_zip METHODS add_further_data_to_zip
IMPORTING IMPORTING
!io_zip TYPE REF TO cl_abap_zip . !io_zip TYPE REF TO cl_abap_zip .
METHODS create METHODS create
RETURNING RETURNING
VALUE(ep_excel) TYPE xstring . VALUE(ep_excel) TYPE xstring
RAISING
zcx_excel .
METHODS create_content_types METHODS create_content_types
RETURNING RETURNING
VALUE(ep_content) TYPE xstring . VALUE(ep_content) TYPE xstring .
@ -108,7 +112,9 @@ CLASS zcl_excel_writer_2007 DEFINITION
IMPORTING IMPORTING
!io_worksheet TYPE REF TO zcl_excel_worksheet !io_worksheet TYPE REF TO zcl_excel_worksheet
RETURNING RETURNING
VALUE(ep_content) TYPE xstring . VALUE(ep_content) TYPE xstring
RAISING
zcx_excel .
METHODS create_xl_relationships METHODS create_xl_relationships
RETURNING RETURNING
VALUE(ep_content) TYPE xstring . VALUE(ep_content) TYPE xstring .
@ -161,13 +167,17 @@ CLASS zcl_excel_writer_2007 DEFINITION
IMPORTING IMPORTING
!io_table TYPE REF TO zcl_excel_table !io_table TYPE REF TO zcl_excel_table
RETURNING RETURNING
VALUE(ep_content) TYPE xstring . VALUE(ep_content) TYPE xstring
RAISING
zcx_excel .
METHODS create_xl_theme METHODS create_xl_theme
RETURNING RETURNING
VALUE(ep_content) TYPE xstring . VALUE(ep_content) TYPE xstring .
METHODS create_xl_workbook METHODS create_xl_workbook
RETURNING RETURNING
VALUE(ep_content) TYPE xstring . VALUE(ep_content) TYPE xstring
RAISING
zcx_excel .
METHODS get_shared_string_index METHODS get_shared_string_index
IMPORTING IMPORTING
!ip_cell_value TYPE zexcel_cell_value !ip_cell_value TYPE zexcel_cell_value
@ -3836,7 +3846,7 @@ CLASS zcl_excel_writer_2007 IMPLEMENTATION.
lc_xml_attr_priority TYPE string VALUE 'priority', lc_xml_attr_priority TYPE string VALUE 'priority',
lc_xml_attr_operator TYPE string VALUE 'operator', lc_xml_attr_operator TYPE string VALUE 'operator',
lc_xml_attr_text TYPE string VALUE 'text', lc_xml_attr_text TYPE string VALUE 'text',
lc_xml_attr_notContainsText TYPE string VALUE 'notContainsText', lc_xml_attr_notcontainstext TYPE string VALUE 'notContainsText',
lc_xml_attr_allowblank TYPE string VALUE 'allowBlank', lc_xml_attr_allowblank TYPE string VALUE 'allowBlank',
lc_xml_attr_showinputmessage TYPE string VALUE 'showInputMessage', lc_xml_attr_showinputmessage TYPE string VALUE 'showInputMessage',
lc_xml_attr_showerrormessage TYPE string VALUE 'showErrorMessage', lc_xml_attr_showerrormessage TYPE string VALUE 'showErrorMessage',
@ -4078,6 +4088,10 @@ CLASS zcl_excel_writer_2007 IMPLEMENTATION.
lo_element_2->set_attribute_ns( name = lc_xml_attr_zoomscalesheetview lo_element_2->set_attribute_ns( name = lc_xml_attr_zoomscalesheetview
value = lv_value ). value = lv_value ).
ENDIF. ENDIF.
IF io_worksheet->zif_excel_sheet_properties~get_right_to_left( ) EQ abap_true.
lo_element_2->set_attribute_ns( name = 'rightToLeft'
value = '1' ).
ENDIF.
lo_element_2->set_attribute_ns( name = lc_xml_attr_workbookviewid lo_element_2->set_attribute_ns( name = lc_xml_attr_workbookviewid
value = '0' ). value = '0' ).
" showGridLines attribute " showGridLines attribute

View File

@ -53,7 +53,7 @@ ENDCLASS.
CLASS ZCL_EXCEL_WRITER_CSV IMPLEMENTATION. CLASS zcl_excel_writer_csv IMPLEMENTATION.
METHOD create. METHOD create.

View File

@ -69,7 +69,7 @@ CLASS zcl_excel_writer_huge_file IMPLEMENTATION.
********************************************************************** **********************************************************************
* STEP 0: Build Regex for invalid characters * STEP 0: Build Regex for invalid characters
" uccpi returns 2 chars but for this specific input 1 char is enough " uccpi returns 2 chars but for this specific input 1 char is enough
CASE cl_abap_char_utilities=>charsize. CASE cl_abap_char_utilities=>charsize.
WHEN 1.lv_last_allowed_char = cl_abap_conv_in_ce=>uccpi( 255 ). " FF in non-Unicode WHEN 1.lv_last_allowed_char = cl_abap_conv_in_ce=>uccpi( 255 ). " FF in non-Unicode
WHEN 2.lv_last_allowed_char = cl_abap_conv_in_ce=>uccpi( 65533 )." FFFD in Unicode WHEN 2.lv_last_allowed_char = cl_abap_conv_in_ce=>uccpi( 65533 )." FFFD in Unicode
@ -209,6 +209,7 @@ CLASS zcl_excel_writer_huge_file IMPLEMENTATION.
zoomscalenormal TYPE i, zoomscalenormal TYPE i,
zoomscalepageview TYPE i, zoomscalepageview TYPE i,
zoomscalesheetview TYPE i, zoomscalesheetview TYPE i,
righttoleft TYPE i,
workbookviewid TYPE c, workbookviewid TYPE c,
showgridlines TYPE c, showgridlines TYPE c,
showrowcolheaders TYPE c, showrowcolheaders TYPE c,
@ -249,7 +250,6 @@ CLASS zcl_excel_writer_huge_file IMPLEMENTATION.
draft TYPE c, draft TYPE c,
errors TYPE string, errors TYPE string,
firstpagenumber TYPE i, firstpagenumber TYPE i,
fittopage TYPE c,
fittoheight TYPE i, fittoheight TYPE i,
fittowidth TYPE i, fittowidth TYPE i,
horizontaldpi TYPE i, horizontaldpi TYPE i,
@ -381,6 +381,12 @@ CLASS zcl_excel_writer_huge_file IMPLEMENTATION.
l_worksheet-zoomscalesheetview = io_worksheet->zif_excel_sheet_properties~zoomscale_sheetlayoutview. l_worksheet-zoomscalesheetview = io_worksheet->zif_excel_sheet_properties~zoomscale_sheetlayoutview.
ENDIF. ENDIF.
IF io_worksheet->zif_excel_sheet_properties~get_right_to_left( ) EQ abap_true.
l_worksheet-righttoleft = lc_one.
ELSE.
l_worksheet-righttoleft = lc_zero.
ENDIF.
l_worksheet-workbookviewid = lc_zero. l_worksheet-workbookviewid = lc_zero.
IF io_worksheet->show_gridlines = abap_true. IF io_worksheet->show_gridlines = abap_true.
@ -676,7 +682,6 @@ CLASS zcl_excel_writer_huge_file IMPLEMENTATION.
l_worksheet-pagesetup-cellcomments = io_worksheet->sheet_setup->cell_comments. l_worksheet-pagesetup-cellcomments = io_worksheet->sheet_setup->cell_comments.
l_worksheet-pagesetup-copies = io_worksheet->sheet_setup->copies. l_worksheet-pagesetup-copies = io_worksheet->sheet_setup->copies.
l_worksheet-pagesetup-firstpagenumber = io_worksheet->sheet_setup->first_page_number. l_worksheet-pagesetup-firstpagenumber = io_worksheet->sheet_setup->first_page_number.
l_worksheet-pagesetup-fittopage = io_worksheet->sheet_setup->fit_to_page.
l_worksheet-pagesetup-fittoheight = io_worksheet->sheet_setup->fit_to_height. l_worksheet-pagesetup-fittoheight = io_worksheet->sheet_setup->fit_to_height.
l_worksheet-pagesetup-fittowidth = io_worksheet->sheet_setup->fit_to_width. l_worksheet-pagesetup-fittowidth = io_worksheet->sheet_setup->fit_to_width.
l_worksheet-pagesetup-horizontaldpi = io_worksheet->sheet_setup->horizontal_dpi. l_worksheet-pagesetup-horizontaldpi = io_worksheet->sheet_setup->horizontal_dpi.

View File

@ -7,7 +7,7 @@
<DDLANGUAGE>E</DDLANGUAGE> <DDLANGUAGE>E</DDLANGUAGE>
<TABCLASS>INTTAB</TABCLASS> <TABCLASS>INTTAB</TABCLASS>
<DDTEXT>Changeflag for Cells - border</DDTEXT> <DDTEXT>Changeflag for Cells - border</DDTEXT>
<EXCLASS>4</EXCLASS> <EXCLASS>2</EXCLASS>
</DD02V> </DD02V>
<DD03P_TABLE> <DD03P_TABLE>
<DD03P> <DD03P>

View File

@ -7,7 +7,7 @@
<DDLANGUAGE>E</DDLANGUAGE> <DDLANGUAGE>E</DDLANGUAGE>
<TABCLASS>INTTAB</TABCLASS> <TABCLASS>INTTAB</TABCLASS>
<DDTEXT>Changeflag for Cellstyles - Borders</DDTEXT> <DDTEXT>Changeflag for Cellstyles - Borders</DDTEXT>
<EXCLASS>4</EXCLASS> <EXCLASS>2</EXCLASS>
</DD02V> </DD02V>
<DD03P_TABLE> <DD03P_TABLE>
<DD03P> <DD03P>

View File

@ -7,7 +7,8 @@
<DDLANGUAGE>E</DDLANGUAGE> <DDLANGUAGE>E</DDLANGUAGE>
<TABCLASS>INTTAB</TABCLASS> <TABCLASS>INTTAB</TABCLASS>
<DDTEXT>Changeflag Color</DDTEXT> <DDTEXT>Changeflag Color</DDTEXT>
<EXCLASS>4</EXCLASS> <MASTERLANG>E</MASTERLANG>
<EXCLASS>2</EXCLASS>
</DD02V> </DD02V>
<DD03P_TABLE> <DD03P_TABLE>
<DD03P> <DD03P>

View File

@ -7,7 +7,7 @@
<DDLANGUAGE>E</DDLANGUAGE> <DDLANGUAGE>E</DDLANGUAGE>
<TABCLASS>INTTAB</TABCLASS> <TABCLASS>INTTAB</TABCLASS>
<DDTEXT>Changeflag for Cellstyles - Fill</DDTEXT> <DDTEXT>Changeflag for Cellstyles - Fill</DDTEXT>
<EXCLASS>4</EXCLASS> <EXCLASS>2</EXCLASS>
</DD02V> </DD02V>
<DD03P_TABLE> <DD03P_TABLE>
<DD03P> <DD03P>

View File

@ -18,9 +18,11 @@
</DD03P> </DD03P>
<DD03P> <DD03P>
<FIELDNAME>TABLE_NAME</FIELDNAME> <FIELDNAME>TABLE_NAME</FIELDNAME>
<ROLLNAME>DSTRING</ROLLNAME>
<ADMINFIELD>0</ADMINFIELD> <ADMINFIELD>0</ADMINFIELD>
<COMPTYPE>E</COMPTYPE> <INTTYPE>g</INTTYPE>
<INTLEN>000008</INTLEN>
<DATATYPE>STRG</DATATYPE>
<MASK> STRG</MASK>
</DD03P> </DD03P>
<DD03P> <DD03P>
<FIELDNAME>TOP_LEFT_COLUMN</FIELDNAME> <FIELDNAME>TOP_LEFT_COLUMN</FIELDNAME>

View File

@ -12,9 +12,11 @@
<DD03P_TABLE> <DD03P_TABLE>
<DD03P> <DD03P>
<FIELDNAME>LEFT_VALUE</FIELDNAME> <FIELDNAME>LEFT_VALUE</FIELDNAME>
<ROLLNAME>DSTRING</ROLLNAME>
<ADMINFIELD>0</ADMINFIELD> <ADMINFIELD>0</ADMINFIELD>
<COMPTYPE>E</COMPTYPE> <INTTYPE>g</INTTYPE>
<INTLEN>000008</INTLEN>
<DATATYPE>STRG</DATATYPE>
<MASK> STRG</MASK>
</DD03P> </DD03P>
<DD03P> <DD03P>
<FIELDNAME>LEFT_FONT</FIELDNAME> <FIELDNAME>LEFT_FONT</FIELDNAME>
@ -26,9 +28,11 @@
</DD03P> </DD03P>
<DD03P> <DD03P>
<FIELDNAME>CENTER_VALUE</FIELDNAME> <FIELDNAME>CENTER_VALUE</FIELDNAME>
<ROLLNAME>DSTRING</ROLLNAME>
<ADMINFIELD>0</ADMINFIELD> <ADMINFIELD>0</ADMINFIELD>
<COMPTYPE>E</COMPTYPE> <INTTYPE>g</INTTYPE>
<INTLEN>000008</INTLEN>
<DATATYPE>STRG</DATATYPE>
<MASK> STRG</MASK>
</DD03P> </DD03P>
<DD03P> <DD03P>
<FIELDNAME>CENTER_FONT</FIELDNAME> <FIELDNAME>CENTER_FONT</FIELDNAME>
@ -40,9 +44,11 @@
</DD03P> </DD03P>
<DD03P> <DD03P>
<FIELDNAME>RIGHT_VALUE</FIELDNAME> <FIELDNAME>RIGHT_VALUE</FIELDNAME>
<ROLLNAME>DSTRING</ROLLNAME>
<ADMINFIELD>0</ADMINFIELD> <ADMINFIELD>0</ADMINFIELD>
<COMPTYPE>E</COMPTYPE> <INTTYPE>g</INTTYPE>
<INTLEN>000008</INTLEN>
<DATATYPE>STRG</DATATYPE>
<MASK> STRG</MASK>
</DD03P> </DD03P>
<DD03P> <DD03P>
<FIELDNAME>RIGHT_FONT</FIELDNAME> <FIELDNAME>RIGHT_FONT</FIELDNAME>

View File

@ -5,7 +5,6 @@
<DD04V> <DD04V>
<ROLLNAME>ZEXCEL_SHEET_ZOOMSCALE</ROLLNAME> <ROLLNAME>ZEXCEL_SHEET_ZOOMSCALE</ROLLNAME>
<DDLANGUAGE>E</DDLANGUAGE> <DDLANGUAGE>E</DDLANGUAGE>
<DOMNAME>INT2</DOMNAME>
<HEADLEN>16</HEADLEN> <HEADLEN>16</HEADLEN>
<SCRLEN1>10</SCRLEN1> <SCRLEN1>10</SCRLEN1>
<SCRLEN2>16</SCRLEN2> <SCRLEN2>16</SCRLEN2>
@ -16,7 +15,9 @@
<SCRTEXT_M>Sheet Zoom Scale</SCRTEXT_M> <SCRTEXT_M>Sheet Zoom Scale</SCRTEXT_M>
<SCRTEXT_L>Sheet Zoom Scale</SCRTEXT_L> <SCRTEXT_L>Sheet Zoom Scale</SCRTEXT_L>
<DTELMASTER>E</DTELMASTER> <DTELMASTER>E</DTELMASTER>
<REFKIND>D</REFKIND> <DATATYPE>INT2</DATATYPE>
<LENG>000005</LENG>
<OUTPUTLEN>000006</OUTPUTLEN>
</DD04V> </DD04V>
</asx:values> </asx:values>
</asx:abap> </asx:abap>

View File

@ -27,12 +27,12 @@
<tt:attribute name="summaryRight" value-ref="WORKSHEET.SUMMARYRIGHT" /> <tt:attribute name="summaryRight" value-ref="WORKSHEET.SUMMARYRIGHT" />
<tt:attribute name="summaryBelow" value-ref="WORKSHEET.SUMMARYBELOW" /> <tt:attribute name="summaryBelow" value-ref="WORKSHEET.SUMMARYBELOW" />
</outlinePr> </outlinePr>
</sheetPr>
<tt:cond check="not-initial(WORKSHEET.FITTOPAGE)"> <tt:cond check="not-initial(WORKSHEET.FITTOPAGE)">
<pageSetupPr> <pageSetUpPr>
<tt:attribute name="fitToPage" value-ref="WORKSHEET.FITTOPAGE" /> <tt:attribute name="fitToPage" value-ref="WORKSHEET.FITTOPAGE"/>
</pageSetupPr> </pageSetUpPr>
</tt:cond> </tt:cond>
</sheetPr>
<dimension> <dimension>
<tt:attribute name="ref" value-ref="WORKSHEET.DIMENSION" /> <tt:attribute name="ref" value-ref="WORKSHEET.DIMENSION" />
</dimension> </dimension>
@ -48,6 +48,7 @@
<tt:attribute name="zoomScalePageLayoutView" value-ref="WORKSHEET.ZOOMSCALEPAGEVIEW" /> <tt:attribute name="zoomScalePageLayoutView" value-ref="WORKSHEET.ZOOMSCALEPAGEVIEW" />
</tt:cond> </tt:cond>
<tt:attribute name="zoomScaleSheetLayoutView" value-ref="WORKSHEET.ZOOMSCALESHEETVIEW" /> <tt:attribute name="zoomScaleSheetLayoutView" value-ref="WORKSHEET.ZOOMSCALESHEETVIEW" />
<tt:attribute name="rightToLeft" value-ref="WORKSHEET.RIGHTTOLEFT" />
<tt:attribute name="workbookViewId" value-ref="WORKSHEET.WORKBOOKVIEWID" /> <tt:attribute name="workbookViewId" value-ref="WORKSHEET.WORKBOOKVIEWID" />
<tt:attribute name="showGridLines" value-ref="WORKSHEET.SHOWGRIDLINES" /> <tt:attribute name="showGridLines" value-ref="WORKSHEET.SHOWGRIDLINES" />
<tt:attribute name="showRowColHeaders" value-ref="WORKSHEET.SHOWROWCOLHEADERS" /> <tt:attribute name="showRowColHeaders" value-ref="WORKSHEET.SHOWROWCOLHEADERS" />
@ -112,8 +113,8 @@
<tt:attribute name="hidden" value-ref="HIDDEN" /> <tt:attribute name="hidden" value-ref="HIDDEN" />
</tt:cond> </tt:cond>
<tt:cond check="not-initial(CUSTOMHEIGHT)"> <tt:cond check="not-initial(CUSTOMHEIGHT)">
<tt:attribute name="customHeight" value-ref="CUSTOMHIGHT" /> <tt:attribute name="customHeight" value-ref="CUSTOMHEIGHT" />
<tt:attribute name="ht" value-ref="HIGHT" /> <tt:attribute name="ht" value-ref="HEIGHT" />
</tt:cond> </tt:cond>
<tt:cond check="not-initial(COLLAPSED)"> <tt:cond check="not-initial(COLLAPSED)">
<tt:attribute name="collapsed" value-ref="COLLAPSED" /> <tt:attribute name="collapsed" value-ref="COLLAPSED" />
@ -229,8 +230,8 @@
<tt:cond check="FIRSTPAGENUMBER != 0"> <tt:cond check="FIRSTPAGENUMBER != 0">
<tt:attribute name="firstPageNumber" value-ref="FIRSTPAGENUMBER" /> <tt:attribute name="firstPageNumber" value-ref="FIRSTPAGENUMBER" />
</tt:cond> </tt:cond>
<tt:cond check="not-initial(FITTOPAGE)"> <tt:cond check="not-initial(ref('.WORKSHEET.FITTOPAGE'))">
<tt:attribute name="fitToHeight" value-ref="FITTOHIGHT" /> <tt:attribute name="fitToHeight" value-ref="FITTOHEIGHT" />
<tt:attribute name="fitToWidth" value-ref="FITTOWIDTH" /> <tt:attribute name="fitToWidth" value-ref="FITTOWIDTH" />
</tt:cond> </tt:cond>
<tt:cond check="HORIZONTALDPI != 0"> <tt:cond check="HORIZONTALDPI != 0">

View File

@ -25,9 +25,15 @@ INTERFACE zif_excel_sheet_properties
DATA hide_columns_from TYPE zexcel_cell_column_alpha . DATA hide_columns_from TYPE zexcel_cell_column_alpha .
METHODS initialize . METHODS initialize .
METHODS get_right_to_left
RETURNING
VALUE(result) TYPE abap_bool.
METHODS get_style METHODS get_style
RETURNING RETURNING
VALUE(ep_style) TYPE zexcel_cell_style . VALUE(ep_style) TYPE zexcel_cell_style .
METHODS set_right_to_left
IMPORTING
!right_to_left TYPE abap_bool .
METHODS set_style METHODS set_style
IMPORTING IMPORTING
!ip_style TYPE zexcel_cell_style . !ip_style TYPE zexcel_cell_style .

View File

@ -0,0 +1,495 @@
INTERFACE zif_excel_style_changer
PUBLIC .
METHODS apply
IMPORTING
ip_worksheet TYPE REF TO zcl_excel_worksheet
ip_column TYPE simple
ip_row TYPE zexcel_cell_row
RETURNING
VALUE(ep_guid) TYPE zexcel_cell_style
RAISING
zcx_excel.
METHODS get_guid
RETURNING
VALUE(result) TYPE zexcel_cell_style.
METHODS set_complete
IMPORTING
ip_complete TYPE zexcel_s_cstyle_complete
ip_xcomplete TYPE zexcel_s_cstylex_complete
RETURNING
VALUE(result) TYPE REF TO zif_excel_style_changer.
METHODS set_complete_font
IMPORTING
ip_font TYPE zexcel_s_cstyle_font
ip_xfont TYPE zexcel_s_cstylex_font OPTIONAL
RETURNING
VALUE(result) TYPE REF TO zif_excel_style_changer.
METHODS set_complete_fill
IMPORTING
ip_fill TYPE zexcel_s_cstyle_fill
ip_xfill TYPE zexcel_s_cstylex_fill OPTIONAL
RETURNING
VALUE(result) TYPE REF TO zif_excel_style_changer.
METHODS set_complete_borders
IMPORTING
ip_borders TYPE zexcel_s_cstyle_borders
ip_xborders TYPE zexcel_s_cstylex_borders OPTIONAL
RETURNING
VALUE(result) TYPE REF TO zif_excel_style_changer.
METHODS set_complete_alignment
IMPORTING
ip_alignment TYPE zexcel_s_cstyle_alignment
ip_xalignment TYPE zexcel_s_cstylex_alignment OPTIONAL
RETURNING
VALUE(result) TYPE REF TO zif_excel_style_changer.
METHODS set_complete_protection
IMPORTING
ip_protection TYPE zexcel_s_cstyle_protection
ip_xprotection TYPE zexcel_s_cstylex_protection OPTIONAL
RETURNING
VALUE(result) TYPE REF TO zif_excel_style_changer.
METHODS set_complete_borders_all
IMPORTING
ip_borders_allborders TYPE zexcel_s_cstyle_border
ip_xborders_allborders TYPE zexcel_s_cstylex_border OPTIONAL
RETURNING
VALUE(result) TYPE REF TO zif_excel_style_changer.
METHODS set_complete_borders_diagonal
IMPORTING
ip_borders_diagonal TYPE zexcel_s_cstyle_border
ip_xborders_diagonal TYPE zexcel_s_cstylex_border OPTIONAL
RETURNING
VALUE(result) TYPE REF TO zif_excel_style_changer.
METHODS set_complete_borders_down
IMPORTING
ip_borders_down TYPE zexcel_s_cstyle_border
ip_xborders_down TYPE zexcel_s_cstylex_border OPTIONAL
RETURNING
VALUE(result) TYPE REF TO zif_excel_style_changer.
METHODS set_complete_borders_left
IMPORTING
ip_borders_left TYPE zexcel_s_cstyle_border
ip_xborders_left TYPE zexcel_s_cstylex_border OPTIONAL
RETURNING
VALUE(result) TYPE REF TO zif_excel_style_changer.
METHODS set_complete_borders_right
IMPORTING
ip_borders_right TYPE zexcel_s_cstyle_border
ip_xborders_right TYPE zexcel_s_cstylex_border OPTIONAL
RETURNING
VALUE(result) TYPE REF TO zif_excel_style_changer.
METHODS set_complete_borders_top
IMPORTING
ip_borders_top TYPE zexcel_s_cstyle_border
ip_xborders_top TYPE zexcel_s_cstylex_border OPTIONAL
RETURNING
VALUE(result) TYPE REF TO zif_excel_style_changer.
METHODS set_number_format
IMPORTING
value TYPE zexcel_number_format
RETURNING
VALUE(result) TYPE REF TO zif_excel_style_changer.
METHODS set_font_bold
IMPORTING
value TYPE flag
RETURNING
VALUE(result) TYPE REF TO zif_excel_style_changer.
METHODS set_font_color
IMPORTING
value TYPE zexcel_s_style_color
RETURNING
VALUE(result) TYPE REF TO zif_excel_style_changer.
METHODS set_font_color_rgb
IMPORTING
value TYPE zexcel_style_color_argb
RETURNING
VALUE(result) TYPE REF TO zif_excel_style_changer.
METHODS set_font_color_indexed
IMPORTING
value TYPE zexcel_style_color_indexed
RETURNING
VALUE(result) TYPE REF TO zif_excel_style_changer.
METHODS set_font_color_theme
IMPORTING
value TYPE zexcel_style_color_theme
RETURNING
VALUE(result) TYPE REF TO zif_excel_style_changer.
METHODS set_font_color_tint
IMPORTING
value TYPE zexcel_style_color_tint
RETURNING
VALUE(result) TYPE REF TO zif_excel_style_changer.
METHODS set_font_family
IMPORTING
value TYPE zexcel_style_font_family
RETURNING
VALUE(result) TYPE REF TO zif_excel_style_changer.
METHODS set_font_italic
IMPORTING
value TYPE flag
RETURNING
VALUE(result) TYPE REF TO zif_excel_style_changer.
METHODS set_font_name
IMPORTING
value TYPE zexcel_style_font_name
RETURNING
VALUE(result) TYPE REF TO zif_excel_style_changer.
METHODS set_font_scheme
IMPORTING
value TYPE zexcel_style_font_scheme
RETURNING
VALUE(result) TYPE REF TO zif_excel_style_changer.
METHODS set_font_size
IMPORTING
value TYPE numeric
RETURNING
VALUE(result) TYPE REF TO zif_excel_style_changer.
METHODS set_font_strikethrough
IMPORTING
value TYPE flag
RETURNING
VALUE(result) TYPE REF TO zif_excel_style_changer.
METHODS set_font_underline
IMPORTING
value TYPE flag
RETURNING
VALUE(result) TYPE REF TO zif_excel_style_changer.
METHODS set_font_underline_mode
IMPORTING
value TYPE zexcel_style_font_underline
RETURNING
VALUE(result) TYPE REF TO zif_excel_style_changer.
METHODS set_fill_filltype
IMPORTING
value TYPE zexcel_fill_type
RETURNING
VALUE(result) TYPE REF TO zif_excel_style_changer.
METHODS set_fill_rotation
IMPORTING
value TYPE zexcel_rotation
RETURNING
VALUE(result) TYPE REF TO zif_excel_style_changer.
METHODS set_fill_fgcolor
IMPORTING
value TYPE zexcel_s_style_color
RETURNING
VALUE(result) TYPE REF TO zif_excel_style_changer.
METHODS set_fill_fgcolor_rgb
IMPORTING
value TYPE zexcel_style_color_argb
RETURNING
VALUE(result) TYPE REF TO zif_excel_style_changer.
METHODS set_fill_fgcolor_indexed
IMPORTING
value TYPE zexcel_style_color_indexed
RETURNING
VALUE(result) TYPE REF TO zif_excel_style_changer.
METHODS set_fill_fgcolor_theme
IMPORTING
value TYPE zexcel_style_color_theme
RETURNING
VALUE(result) TYPE REF TO zif_excel_style_changer.
METHODS set_fill_fgcolor_tint
IMPORTING
value TYPE zexcel_style_color_tint
RETURNING
VALUE(result) TYPE REF TO zif_excel_style_changer.
METHODS set_fill_bgcolor
IMPORTING
value TYPE zexcel_s_style_color
RETURNING
VALUE(result) TYPE REF TO zif_excel_style_changer.
METHODS set_fill_bgcolor_rgb
IMPORTING
value TYPE zexcel_style_color_argb
RETURNING
VALUE(result) TYPE REF TO zif_excel_style_changer.
METHODS set_fill_bgcolor_indexed
IMPORTING
value TYPE zexcel_style_color_indexed
RETURNING
VALUE(result) TYPE REF TO zif_excel_style_changer.
METHODS set_fill_bgcolor_theme
IMPORTING
value TYPE zexcel_style_color_theme
RETURNING
VALUE(result) TYPE REF TO zif_excel_style_changer.
METHODS set_fill_bgcolor_tint
IMPORTING
value TYPE zexcel_style_color_tint
RETURNING
VALUE(result) TYPE REF TO zif_excel_style_changer.
METHODS set_fill_gradtype_type
IMPORTING
value TYPE zexcel_s_gradient_type-type
RETURNING
VALUE(result) TYPE REF TO zif_excel_style_changer.
METHODS set_fill_gradtype_degree
IMPORTING
value TYPE zexcel_s_gradient_type-degree
RETURNING
VALUE(result) TYPE REF TO zif_excel_style_changer.
METHODS set_fill_gradtype_bottom
IMPORTING
value TYPE zexcel_s_gradient_type-bottom
RETURNING
VALUE(result) TYPE REF TO zif_excel_style_changer.
METHODS set_fill_gradtype_left
IMPORTING
value TYPE zexcel_s_gradient_type-left
RETURNING
VALUE(result) TYPE REF TO zif_excel_style_changer.
METHODS set_fill_gradtype_top
IMPORTING
value TYPE zexcel_s_gradient_type-top
RETURNING
VALUE(result) TYPE REF TO zif_excel_style_changer.
METHODS set_fill_gradtype_right
IMPORTING
value TYPE zexcel_s_gradient_type-right
RETURNING
VALUE(result) TYPE REF TO zif_excel_style_changer.
METHODS set_fill_gradtype_position1
IMPORTING
value TYPE zexcel_s_gradient_type-position1
RETURNING
VALUE(result) TYPE REF TO zif_excel_style_changer.
METHODS set_fill_gradtype_position2
IMPORTING
value TYPE zexcel_s_gradient_type-position2
RETURNING
VALUE(result) TYPE REF TO zif_excel_style_changer.
METHODS set_fill_gradtype_position3
IMPORTING
value TYPE zexcel_s_gradient_type-position3
RETURNING
VALUE(result) TYPE REF TO zif_excel_style_changer.
METHODS set_borders_diagonal_mode
IMPORTING
value TYPE zexcel_diagonal
RETURNING
VALUE(result) TYPE REF TO zif_excel_style_changer.
METHODS set_alignment_horizontal
IMPORTING
value TYPE zexcel_alignment
RETURNING
VALUE(result) TYPE REF TO zif_excel_style_changer.
METHODS set_alignment_vertical
IMPORTING
value TYPE zexcel_alignment
RETURNING
VALUE(result) TYPE REF TO zif_excel_style_changer.
METHODS set_alignment_textrotation
IMPORTING
value TYPE zexcel_text_rotation
RETURNING
VALUE(result) TYPE REF TO zif_excel_style_changer.
METHODS set_alignment_wraptext
IMPORTING
value TYPE flag
RETURNING
VALUE(result) TYPE REF TO zif_excel_style_changer.
METHODS set_alignment_shrinktofit
IMPORTING
value TYPE flag
RETURNING
VALUE(result) TYPE REF TO zif_excel_style_changer.
METHODS set_alignment_indent
IMPORTING
value TYPE zexcel_indent
RETURNING
VALUE(result) TYPE REF TO zif_excel_style_changer.
METHODS set_protection_hidden
IMPORTING
value TYPE zexcel_cell_protection
RETURNING
VALUE(result) TYPE REF TO zif_excel_style_changer.
METHODS set_protection_locked
IMPORTING
value TYPE zexcel_cell_protection
RETURNING
VALUE(result) TYPE REF TO zif_excel_style_changer.
METHODS set_borders_allborders_style
IMPORTING
value TYPE zexcel_border
RETURNING
VALUE(result) TYPE REF TO zif_excel_style_changer.
METHODS set_borders_allborders_color
IMPORTING
value TYPE zexcel_s_style_color
RETURNING
VALUE(result) TYPE REF TO zif_excel_style_changer.
METHODS set_borders_allbo_color_rgb
IMPORTING
value TYPE zexcel_style_color_argb
RETURNING
VALUE(result) TYPE REF TO zif_excel_style_changer.
METHODS set_borders_allbo_color_indexe
IMPORTING
value TYPE zexcel_style_color_indexed
RETURNING
VALUE(result) TYPE REF TO zif_excel_style_changer.
METHODS set_borders_allbo_color_theme
IMPORTING
value TYPE zexcel_style_color_theme
RETURNING
VALUE(result) TYPE REF TO zif_excel_style_changer.
METHODS set_borders_allbo_color_tint
IMPORTING
value TYPE zexcel_style_color_tint
RETURNING
VALUE(result) TYPE REF TO zif_excel_style_changer.
METHODS set_borders_diagonal_style
IMPORTING
value TYPE zexcel_border
RETURNING
VALUE(result) TYPE REF TO zif_excel_style_changer.
METHODS set_borders_diagonal_color
IMPORTING
value TYPE zexcel_s_style_color
RETURNING
VALUE(result) TYPE REF TO zif_excel_style_changer.
METHODS set_borders_diagonal_color_rgb
IMPORTING
value TYPE zexcel_style_color_argb
RETURNING
VALUE(result) TYPE REF TO zif_excel_style_changer.
METHODS set_borders_diagonal_color_ind
IMPORTING
value TYPE zexcel_style_color_indexed
RETURNING
VALUE(result) TYPE REF TO zif_excel_style_changer.
METHODS set_borders_diagonal_color_the
IMPORTING
value TYPE zexcel_style_color_theme
RETURNING
VALUE(result) TYPE REF TO zif_excel_style_changer.
METHODS set_borders_diagonal_color_tin
IMPORTING
value TYPE zexcel_style_color_tint
RETURNING
VALUE(result) TYPE REF TO zif_excel_style_changer.
METHODS set_borders_down_style
IMPORTING
value TYPE zexcel_border
RETURNING
VALUE(result) TYPE REF TO zif_excel_style_changer.
METHODS set_borders_down_color
IMPORTING
value TYPE zexcel_s_style_color
RETURNING
VALUE(result) TYPE REF TO zif_excel_style_changer.
METHODS set_borders_down_color_rgb
IMPORTING
value TYPE zexcel_style_color_argb
RETURNING
VALUE(result) TYPE REF TO zif_excel_style_changer.
METHODS set_borders_down_color_indexed
IMPORTING
value TYPE zexcel_style_color_indexed
RETURNING
VALUE(result) TYPE REF TO zif_excel_style_changer.
METHODS set_borders_down_color_theme
IMPORTING
value TYPE zexcel_style_color_theme
RETURNING
VALUE(result) TYPE REF TO zif_excel_style_changer.
METHODS set_borders_down_color_tint
IMPORTING
value TYPE zexcel_style_color_tint
RETURNING
VALUE(result) TYPE REF TO zif_excel_style_changer.
METHODS set_borders_left_style
IMPORTING
value TYPE zexcel_border
RETURNING
VALUE(result) TYPE REF TO zif_excel_style_changer.
METHODS set_borders_left_color
IMPORTING
value TYPE zexcel_s_style_color
RETURNING
VALUE(result) TYPE REF TO zif_excel_style_changer.
METHODS set_borders_left_color_rgb
IMPORTING
value TYPE zexcel_style_color_argb
RETURNING
VALUE(result) TYPE REF TO zif_excel_style_changer.
METHODS set_borders_left_color_indexed
IMPORTING
value TYPE zexcel_style_color_indexed
RETURNING
VALUE(result) TYPE REF TO zif_excel_style_changer.
METHODS set_borders_left_color_theme
IMPORTING
value TYPE zexcel_style_color_theme
RETURNING
VALUE(result) TYPE REF TO zif_excel_style_changer.
METHODS set_borders_left_color_tint
IMPORTING
value TYPE zexcel_style_color_tint
RETURNING
VALUE(result) TYPE REF TO zif_excel_style_changer.
METHODS set_borders_right_style
IMPORTING
value TYPE zexcel_border
RETURNING
VALUE(result) TYPE REF TO zif_excel_style_changer.
METHODS set_borders_right_color
IMPORTING
value TYPE zexcel_s_style_color
RETURNING
VALUE(result) TYPE REF TO zif_excel_style_changer.
METHODS set_borders_right_color_rgb
IMPORTING
value TYPE zexcel_style_color_argb
RETURNING
VALUE(result) TYPE REF TO zif_excel_style_changer.
METHODS set_borders_right_color_indexe
IMPORTING
value TYPE zexcel_style_color_indexed
RETURNING
VALUE(result) TYPE REF TO zif_excel_style_changer.
METHODS set_borders_right_color_theme
IMPORTING
value TYPE zexcel_style_color_theme
RETURNING
VALUE(result) TYPE REF TO zif_excel_style_changer.
METHODS set_borders_right_color_tint
IMPORTING
value TYPE zexcel_style_color_tint
RETURNING
VALUE(result) TYPE REF TO zif_excel_style_changer.
METHODS set_borders_top_style
IMPORTING
value TYPE zexcel_border
RETURNING
VALUE(result) TYPE REF TO zif_excel_style_changer.
METHODS set_borders_top_color
IMPORTING
value TYPE zexcel_s_style_color
RETURNING
VALUE(result) TYPE REF TO zif_excel_style_changer.
METHODS set_borders_top_color_rgb
IMPORTING
value TYPE zexcel_style_color_argb
RETURNING
VALUE(result) TYPE REF TO zif_excel_style_changer.
METHODS set_borders_top_color_indexed
IMPORTING
value TYPE zexcel_style_color_indexed
RETURNING
VALUE(result) TYPE REF TO zif_excel_style_changer.
METHODS set_borders_top_color_theme
IMPORTING
value TYPE zexcel_style_color_theme
RETURNING
VALUE(result) TYPE REF TO zif_excel_style_changer.
METHODS set_borders_top_color_tint
IMPORTING
value TYPE zexcel_style_color_tint
RETURNING
VALUE(result) TYPE REF TO zif_excel_style_changer.
DATA: complete_style TYPE zexcel_s_cstyle_complete READ-ONLY,
complete_stylex TYPE zexcel_s_cstylex_complete READ-ONLY.
ENDINTERFACE.

View File

@ -0,0 +1,15 @@
<?xml version="1.0" encoding="utf-8"?>
<abapGit version="v1.0.0" serializer="LCL_OBJECT_INTF" serializer_version="v1.0.0">
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
<asx:values>
<VSEOINTERF>
<CLSNAME>ZIF_EXCEL_STYLE_CHANGER</CLSNAME>
<LANGU>E</LANGU>
<DESCRIPT>Excel style</DESCRIPT>
<EXPOSURE>2</EXPOSURE>
<STATE>1</STATE>
<UNICODE>X</UNICODE>
</VSEOINTERF>
</asx:values>
</asx:abap>
</abapGit>