0% found this document useful (0 votes)
27 views3 pages

Declare: 'C:/' 'Select Client Filename To Open.'

The document describes code that uses Client_OLE2 to open an Excel file selected by the user, loop through the worksheets and cells, and copy the cell values to a database table. It declares variables, opens the Excel application and workbook, gets the number of worksheets, then loops through each row and column copying the cell value to the database table before closing and releasing the objects.

Uploaded by

rehab younis
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
27 views3 pages

Declare: 'C:/' 'Select Client Filename To Open.'

The document describes code that uses Client_OLE2 to open an Excel file selected by the user, loop through the worksheets and cells, and copy the cell values to a database table. It declares variables, opens the Excel application and workbook, gets the number of worksheets, then loops through each row and column copying the cell value to the database table before closing and releasing the objects.

Uploaded by

rehab younis
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 3

DECLARE

   application    Client_OLE2.Obj_Type;
   workbooks      Client_OLE2.Obj_Type;
   workbook       Client_OLE2.Obj_Type;
   worksheets     Client_OLE2.Obj_Type;
   worksheet      Client_OLE2.Obj_Type;
   worksheet2     Client_OLE2.Obj_Type;  
   cell           Client_OLE2.OBJ_TYPE;
   args           Client_OLE2.OBJ_TYPE;
   cell_value     varchar2(100);
   num_wrkshts    NUMBER;
   wksht_name     VARCHAR2(250);
   eod            Boolean := false;
   j              integer := 1;
   v_fName        VARCHAR2(250);
BEGIN
   -- Get the name of the file to open
   --v_fName :=   
     'D:\MyDevelopment\Forms\Samples\WebUtil\Read_Excel\planets3.xls';
   -- My Way: Use a File Open Dialog to let the user select the file.
   v_fName := WebUtil_File.File_Open_Dialog(
                  directory_name => 'C:\'
                  ,File_Filter => null
                  ,Title => 'Select Client filename to Open.'
            );

   -- Make sure the user selected a file


   IF ( v_fName IS NOT NULL ) THEN
      -- The following sets up communication with the excel spreadsheet
      -- --------------------------------------------------------------
 
      -- Open the OLE application
      application := Client_OLE2.create_obj('Excel.Application');
      -- Keep the application hidden
      Client_OLE2.set_property(application,'Visible','false');
     
      workbooks := Client_OLE2.Get_Obj_Property(application, 'Workbooks');
      args := Client_OLE2.CREATE_ARGLIST;
     
      -- Open the selected File
      -- ----------------------
      Client_OLE2.add_arg(args,v_fName);
      workbook := Client_OLE2.GET_OBJ_PROPERTY(workbooks,'Open',args);
      Client_OLE2.destroy_arglist(args);
     
      worksheets := Client_OLE2.GET_OBJ_PROPERTY(workbook, 'Worksheets');
           
      -- Get number of worksheets
      -- ------------------------
      num_wrkshts := Client_OLE2.GET_NUM_PROPERTY(worksheets, 'Count');
      worksheet := Client_OLE2.GET_OBJ_PROPERTY(
                        application,'activesheet');
                       
      --Go to the first record
      go_block('planets');
      first_record;
     
      -- Loop through the Block and create a new row if needed.        
      loop
         If :system.record_status <> 'NEW' then
            create_record;
         end if;
 
         -- Exit when the last row of the spreadsheet is reached.      
         exit when eod;
                 
         -- Loop through the spreadsheet and get cell values
         for k in 1..3 loop  --3 fields per record
                              -- You have to know fields there are
            args:= Client_OLE2.create_arglist;
            Client_OLE2.add_arg(args, j);
            Client_OLE2.add_arg(args, k);
            cell:= Client_OLE2.get_obj_property(worksheet, 'Cells', args);
            Client_OLE2.destroy_arglist(args);
            cell_value :=Client_OLE2.get_char_property(cell, 'Value');
     
            -- Check for End of Data…
            if upper(cell_value) = 'EOD' then
                  eod:=true;
                  Message('End of Data');
                  exit;
            end if;
           
            -- Copy the value from Excel to the Forms block item
            -- This is how the Oracle example copied values      
            /*if k =1 then
                  :dept.deptno:=cell_value;
            end if;
           
            if k =2 then
                  :dept.dname:=cell_value;
            end if;
           
            if k =3 then
                  :dept.loc:=cell_value;
            end if;    
            */
     
            -- This is my way; which is more efficient and less code
            copy(cell_value,name_in('system.cursor_item'));
            next_item;
     
         end loop; --for
                 
            j:=j+1;
      end loop;  --main loop
           
      -- Release the Client_OLE2 object handles
      IF (cell IS NOT NULL) THEN
            Client_OLE2.release_obj(cell);
      END IF;
      IF (worksheet IS NOT NULL) THEN
            Client_OLE2.release_obj(worksheet);
      END IF;
      IF (worksheets IS NOT NULL) THEN
            Client_OLE2.release_obj(worksheets);
      END IF;
      IF (worksheet2 IS NOT NULL) THEN
            Client_OLE2.release_obj(worksheet2);
      END IF;
      IF (workbook IS NOT NULL) THEN
            Client_OLE2.release_obj(workbook);
      END IF;
      IF (workbooks IS NOT NULL) THEN
            Client_OLE2.release_obj(workbooks);
      END IF;
      Client_OLE2.invoke(application,'Quit');
      Client_OLE2.release_obj(application);
   ELSE
      Message('No File selected.');
      message(' ');
      RAISE Form_Trigger_Failure;
   END IF;
END;

You might also like

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy