Excel file Upload

 


Step 1:
=====

Create 1st Region.
Name: Upload Data File
Create Button: UPLOAD, SAVE & CLEAR
Create Item: P13741_UPLOAD_FILE
Type: File Upload

---------------------------------

Create 2nd Region.
Name: Upload Data View
Type: Interactive Report

SQL Query:

SELECT 
COL.c001 AS CUSTOMER_ID,
COL.c002 AS GROUP_CODE,
COL.c003 AS COUNTRY_ID,
TO_DATE(c004, 'DD-MM-YYYY') AS START_DATE_ACTIVE,   -- String → DATE
COL.c005 as REMARKS

FROM APEX_COLLECTIONS COL
WHERE COL.collection_name  = 'UPLOAD_CUST_DATA_COL'


Step 2:
=====

Create Process for show excel data
Name: INSERT_COLLECTION_PRC
PL/SQL:

/**********Insert Excel Data into Collection*******************/

declare

vXid varchar2(100);
vXnumgrp        varchar2(100);
vErrorNum       varchar2(100);
vErrorMsg       varchar2(500);
        vIpadr          varchar2(500);

begin
--=== Initialization ====

IF  APEX_COLLECTION.COLLECTION_EXISTS('UPLOAD_CUST_DATA_COL') THEN
 
    APEX_COLLECTION.TRUNCATE_COLLECTION('UPLOAD_CUST_DATA_COL');
END IF;

IF NOT APEX_COLLECTION.COLLECTION_EXISTS('UPLOAD_CUST_DATA_COL') THEN  
   APEX_COLLECTION.CREATE_COLLECTION('UPLOAD_CUST_DATA_COL');
END IF;

for r1 in (select *  from
                    apex_application_temp_files f, table( apex_data_parser.parse(
                                    p_content                     => f.blob_content,
                                    p_add_headers_row             => 'Y',
                                   -- p_store_profile_to_collection => 'FILE_PROV_CASH',
                                    p_file_name                   => f.filename,
                                    p_skip_rows => 1 ) ) p     /* This line will skip excel the first row, as I contain heading only */

                where      f.name = :P13741_UPLOAD_FILE  /* Page Item name */

                )


        loop

            APEX_COLLECTION.ADD_MEMBER(P_COLLECTION_NAME => 'UPLOAD_CUST_DATA_COL' ,

                 --EXCEL_COLUMN        COLLECTION_COLUMN

                 p_c001            => nvl(r1.col001,0), -- CUSTOMER_ID
                 p_c002            => nvl(r1.col002,0), -- GROUP_CODE
                 p_c003            => nvl(r1.col003,0), -- COUNTRY_ID
                 p_c004            => r1.col004,           -- START_DATE_ACTIVE    

                    ------------------------------------------------------------                     

                 p_c005            => r1.col005         -- REMARKS                              

                    );

        END LOOP; 

exception when others then
 vErrorNum :=sqlcode;  
 vErrorMsg :=sqlerrm;
 generate_errorlog_prc(:g_zid,:g_xbid,'ERROR','Process:INSERT_COLLECTION_PRC',verrornum ,verrormsg ,:P22085_TXN_SOURCE,:APP_USER,:APP_ID,:APP_PAGE_ID,:SESSION,vipadr,null);

end;


When Button Pressed: UPLOAD

----------------------------------------------------

Create a Process for inserting Excel data into a database table

Name: INSERT_TABLE_PRC

PL/SQL:

/************Insert Data into Table*************/

declare
vXid     number;
vXnumgrp        varchar2(100);
vErrorNum       varchar2(100);
vErrorMsg       varchar2(500);

        vIpadr          varchar2(500);

begin

--=== Initialization ====

    FOR R1 IN (
            SELECT 
              COL.c001 AS CUSTOMER_ID,
              COL.c002 AS GROUP_CODE,
              COL.c003 AS COUNTRY_ID,
              TO_DATE(c004, 'DD-MM-YYYY') AS START_DATE_ACTIVE,
              COL.c005 AS REMARKS              

           FROM APEX_COLLECTIONS COL
           WHERE COL.collection_name  = 'UPLOAD_CUST_DATA_COL'

             )

LOOP

   INSERT INTO AR_CUSTTERRSRZMDM 
           (ZTIME, ZUTIME, CID, ZID, XLID, XBID, COMBINATION_ID, CUSTOMER_ID, GROUP_CODE, COUNTRY_ID, START_DATE_ACTIVE, REMARKS)
   VALUES  (SYSDATE, SYSDATE, :G_CID, :G_ZID, :G_XLID, :G_XBID, AR_CUSTTERRSRZMDM_ID_SEQ.NEXTVAL, R1.CUSTOMER_ID, R1.GROUP_CODE, R1.COUNTRY_ID, R1.START_DATE_ACTIVE, r1.REMARKS );

   END LOOP;

    COMMIT;

IF  APEX_COLLECTION.COLLECTION_EXISTS('UPLOAD_CUST_DATA_COL') THEN
    APEX_COLLECTION.TRUNCATE_COLLECTION('UPLOAD_CUST_DATA_COL');
END IF;

exception when others then
 vErrorNum :=sqlcode;  
 vErrorMsg :=sqlerrm;
 generate_errorlog_prc(:g_zid,:g_xbid,'ERROR','Process:INSERT_TABLE_PRC',verrornum ,verrormsg ,null,:APP_USER,:APP_ID,:APP_PAGE_ID,:SESSION,vipadr,null);

end;

When Button Pressed: SAVE

------------------------------------------

Step 3:
=====

Select "Clear" Button.
Create Dynamic Action.

Name: Clear_Collection_region
Action: Execute Server-side Code
PL/SQL Code:

IF  APEX_COLLECTION.COLLECTION_EXISTS('UPLOAD_CUST_DATA_COL') THEN
    APEX_COLLECTION.TRUNCATE_COLLECTION('UPLOAD_CUST_DATA_COL');
END IF;  


Again True Action:
Action: Execute JavaScript Code
Code: $('#general_report_view').trigger('apexrefresh');

Select Collection Region (Upload Data View)

Set Static ID:  general_report_view

------------------------------------------------------------------------------------------

This Is an Excel File:





Post a Comment

Previous Post Next Post