mirror of
https://github.com/abap2xlsx/abap2xlsx.git
synced 2025-05-05 05:46:35 +08:00

git-svn-id: https://subversion.assembla.com/svn/abap2xlsx/trunk@372 b7d68dce-7c3c-4a99-8ce0-9ea847f5d049
102 lines
4.0 KiB
XML
102 lines
4.0 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
|
<PROG NAME="ZDEMO_EXCEL37" VARCL="X" SUBC="1" RSTAT="T" RMAND="100" RLOAD="E" FIXPT="X" UCCHECK="X">
|
|
<textPool>
|
|
<language SPRAS="D">
|
|
<textElement ID="R" ENTRY="Xlsx-Datei lesen und dann wieder ausgeben" LENGTH="70 "/>
|
|
<textElement ID="S" KEY="P_UPFILE" ENTRY=" Hochzuladende Datei" LENGTH="27 "/>
|
|
</language>
|
|
<language SPRAS="E">
|
|
<textElement ID="R" ENTRY="Read xlsx-file and output" LENGTH="25 "/>
|
|
<textElement ID="S" KEY="P_UPFILE" ENTRY=" File to upload" LENGTH="22 "/>
|
|
</language>
|
|
</textPool>
|
|
<source>REPORT zdemo_excel37.
|
|
|
|
DATA: excel TYPE REF TO zcl_excel,
|
|
reader TYPE REF TO zif_excel_reader,
|
|
go_error TYPE REF TO cx_root,
|
|
gv_message type string.
|
|
|
|
|
|
CONSTANTS: gc_save_file_name TYPE string VALUE '37-passthrough.xlsx'.
|
|
|
|
SELECTION-SCREEN BEGIN OF BLOCK blx WITH FRAME.
|
|
PARAMETERS: p_upfile TYPE string DEFAULT 'c:\temp\whatever.xlsx' LOWER CASE.
|
|
SELECTION-SCREEN END OF BLOCK blx.
|
|
|
|
INCLUDE zdemo_excel_outputopt_incl.
|
|
|
|
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_upfile.
|
|
PERFORM f4_p_upfile CHANGING p_upfile.
|
|
|
|
|
|
START-OF-SELECTION.
|
|
|
|
TRY.
|
|
CREATE OBJECT reader TYPE zcl_excel_reader_2007.
|
|
* CREATE OBJECT reader TYPE zcl_excel_reader_xlsm.
|
|
excel = reader->load_file( p_upfile ).
|
|
|
|
"Use template for charts
|
|
excel->use_template = abap_true.
|
|
*--------------------------------------------------------------------*
|
|
* CL_ABAP_ZIP may have problems reading LibreOffice generated files
|
|
* You may have to use alternate ZIP-Class - see comments in issue #234 in abap2xlsx at developers network
|
|
* excel = reader->load_file( i_filename = p_upfile
|
|
* iv_use_alternate_zip = 'ZCL_EXCEL_ABAP_ZIP' ).
|
|
*--------------------------------------------------------------------*
|
|
|
|
*** Create output
|
|
lcl_output=>output( excel ).
|
|
CATCH cx_root INTO go_error.
|
|
MESSAGE 'Error reading excelfile' TYPE 'I'.
|
|
gv_message = go_error->get_text( ).
|
|
IF gv_message IS NOT INITIAL.
|
|
MESSAGE gv_message TYPE 'I'.
|
|
ENDIF.
|
|
ENDTRY.
|
|
|
|
|
|
*&---------------------------------------------------------------------*
|
|
*& Form F4_P_UPFILE
|
|
*&---------------------------------------------------------------------*
|
|
FORM f4_p_upfile CHANGING p_upfile TYPE string.
|
|
|
|
DATA: lv_repid TYPE syrepid,
|
|
lt_fields TYPE dynpread_tabtype,
|
|
ls_field LIKE LINE OF lt_fields,
|
|
lt_files TYPE filetable.
|
|
|
|
lv_repid = sy-repid.
|
|
|
|
CALL FUNCTION 'DYNP_VALUES_READ'
|
|
EXPORTING
|
|
dyname = lv_repid
|
|
dynumb = '1000'
|
|
request = 'A'
|
|
TABLES
|
|
dynpfields = lt_fields
|
|
EXCEPTIONS
|
|
invalid_abapworkarea = 01
|
|
invalid_dynprofield = 02
|
|
invalid_dynproname = 03
|
|
invalid_dynpronummer = 04
|
|
invalid_request = 05
|
|
no_fielddescription = 06
|
|
undefind_error = 07.
|
|
READ TABLE lt_fields INTO ls_field WITH KEY fieldname = 'P_UPFILE'.
|
|
p_upfile = ls_field-fieldvalue.
|
|
|
|
cl_gui_frontend_services=>file_open_dialog( EXPORTING
|
|
default_filename = p_upfile
|
|
file_filter = zcl_excel_common=>c_xlsx_file_filter
|
|
CHANGING
|
|
file_table = lt_files
|
|
rc = sy-tabix
|
|
EXCEPTIONS
|
|
OTHERS = 1 ).
|
|
READ TABLE lt_files INDEX 1 INTO p_upfile.
|
|
|
|
ENDFORM. " F4_P_UPFILE</source>
|
|
</PROG>
|