Skip to Main Content

SQL & PL/SQL

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

export data from oracle forms 10g to excel

malikadeelSep 2 2019 — edited Sep 2 2019

I am trying to Export data from Oracle forms to excel on client side. I have a button on which i am calling below code but my all data goes to one columns.

PROCEDURE Create_Excel_File(cSQL in varchar2)

Is

   source_cursor    Integer;

   l_colCnt         Number            Default 0;

   l_descTbl        Dbms_sql.desc_tab;

   newval1          Varchar2 (4000);

   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;

   colour           CLIENT_OLE2.OBJ_TYPE;

   cell             CLIENT_OLE2.OBJ_TYPE;

   RANGE            CLIENT_OLE2.OBJ_TYPE;

   range_col        CLIENT_OLE2.OBJ_TYPE;

   range_row        CLIENT_OLE2.OBJ_TYPE;

   args             CLIENT_OLE2.LIST_TYPE;

   rows_processed   Number;

   row_n            Number;

   VAL              Varchar2 (100);

   x                Number;

   filename         Varchar2 (200);

BEGIN

message('inside');

BEGIN         

message('inside2');

      source_cursor := Dbms_Sql.open_Cursor;

      Dbms_Sql.parse (source_cursor, cSql, 2);

      Dbms_Sql.describe_Columns (c => source_cursor, col_cnt => l_colCnt, desc_t => l_descTbl);

   EXCEPTION

      When Others

      Then

         message (SQLERRM);

         RETURN;

   END;

   application := CLIENT_OLE2.CREATE_OBJ ('Excel.Application');

   CLIENT_OLE2.SET_PROPERTY (application, 'Visible', 'False');

   workbooks := CLIENT_OLE2.GET_OBJ_PROPERTY (application, 'Workbooks');

   workbook := CLIENT_OLE2.GET_OBJ_PROPERTY (workbooks, 'Add');

   worksheets := CLIENT_OLE2.GET_OBJ_PROPERTY (workbook, 'Worksheets');

   args := CLIENT_OLE2.CREATE_ARGLIST;

   CLIENT_OLE2.ADD_ARG (args, 1);

   worksheet := CLIENT_OLE2.GET_OBJ_PROPERTY (worksheets, 'Item', args);

   CLIENT_OLE2.DESTROY_ARGLIST (args);

   For T In 1 .. l_colCnt

   LOOP

      BEGIN

         Dbms_Sql.define_Column (source_cursor, T, newval1, 4000);

         args := CLIENT_OLE2.CREATE_ARGLIST;

         CLIENT_OLE2.ADD_ARG (args, 1);

         CLIENT_OLE2.ADD_ARG (args, T);                                                      --Next column

         cell := CLIENT_OLE2.GET_OBJ_PROPERTY (worksheet, 'Cells', args);

         CLIENT_OLE2.DESTROY_ARGLIST (args);

         colour := CLIENT_OLE2.get_obj_property (cell, 'Borders');

         CLIENT_OLE2.set_property (colour, 'ColorIndex', 1);

         CLIENT_OLE2.Release_obj (colour);

         colour := CLIENT_OLE2.get_obj_property (cell, 'Interior');

         CLIENT_OLE2.set_property (colour, 'ColorIndex', 15);

         CLIENT_OLE2.Release_obj (colour);

         CLIENT_OLE2.SET_PROPERTY (cell, 'Value', l_descTbl (T).col_name);

         CLIENT_OLE2.Release_obj (cell);

      EXCEPTION

         When Others

         Then

            Null;

      END;

   END LOOP;

   Rows_processed := Dbms_Sql.EXECUTE (source_cursor);

   row_n := 1;

   LOOP

      IF Dbms_Sql.fetch_Rows (source_cursor) > 0

      Then

         For T In 1 .. l_colCnt

         LOOP

            BEGIN

               Dbms_Sql.column_Value (source_cursor, T, newval1);

               args := CLIENT_OLE2.CREATE_ARGLIST;

               CLIENT_OLE2.ADD_ARG (args, row_n + 1);

               CLIENT_OLE2.ADD_ARG (args, T);                                                --Next column

               cell := CLIENT_OLE2.GET_OBJ_PROPERTY (worksheet, 'Cells', args);

               CLIENT_OLE2.DESTROY_ARGLIST (args);

               colour := CLIENT_OLE2.get_obj_property (cell, 'Borders');

               CLIENT_OLE2.set_property (colour, 'ColorIndex', 1);

               CLIENT_OLE2.Release_obj (colour);

               CLIENT_OLE2.SET_PROPERTY (cell, 'Value', newval1);

               CLIENT_OLE2.Release_obj (cell);

            EXCEPTION

               When Others

               Then

                  EXIT;

            END;

            newval1 := Null;

         END LOOP;

      Else

         EXIT;

      END IF;

      row_n := row_n + 1;

   END LOOP;

   Dbms_Sql.close_Cursor (source_cursor);

   -- Autofit columns

   RANGE := CLIENT_OLE2.GET_OBJ_PROPERTY (worksheet, 'UsedRange');

   range_col := CLIENT_OLE2.GET_OBJ_PROPERTY (RANGE, 'Columns');

   range_row := CLIENT_OLE2.GET_OBJ_PROPERTY (RANGE, 'Rows');

   CLIENT_OLE2.INVOKE (range_col, 'AutoFit');

   CLIENT_OLE2.INVOKE (range_row, 'AutoFit');

   CLIENT_OLE2.Release_obj (RANGE);

   CLIENT_OLE2.Release_obj (range_col);

   CLIENT_OLE2.Release_obj (range_row);

   -- Get filename and path

   filename :=  'NOCF_FC_UNPROCESSABLE_ERRORS.xls';

   -- Save as worksheet

   IF Nvl (filename, '0') <> '0'

   Then

      CLIENT_OLE2.SET_PROPERTY (application, 'Visible', 'True');

      args := CLIENT_OLE2.CREATE_ARGLIST;

      CLIENT_OLE2.ADD_ARG (args, filename);

      --CLIENT_OLE2.INVOKE (worksheet, 'SaveAs', args);

      CLIENT_OLE2.DESTROY_ARGLIST (args);

   END IF;

  -- CLIENT_OLE2.INVOKE( workbook ,'Close');

   CLIENT_OLE2.Release_obj (worksheet);

   CLIENT_OLE2.Release_obj (worksheets);

   CLIENT_OLE2.Release_obj (workbook);

   CLIENT_OLE2.Release_obj (workbooks);

   CLIENT_OLE2.Release_obj (application);

END;

Please review the above code suggest the solutions

Comments

Frank Nimphius-Oracle
what again is the question ? Don't know what you mean by "Java Wing"

Frank
Edward D.G.
Sorry, I'd like mean: "ADF: Java Swing Application"
Answer
Hi.

ADF Swing lacked good documentation for years. And now, it has been officially deprecated when ADF 11.1.2.0.0 was released. See:

http://www.oracle.com/technetwork/developer-tools/jdev/shermanrelnotes-405777.html#swing

ADF Swing will completely vanish in 12c, it seems.

Obviously, nothing prevents you to build a Swing application that will access ADF BC business logic remotely through web services, for example. However, you will not have the benefit of the Swing to EJB binding layer that ADF Swing was providing.

Best Regards,

Frédéric.
Marked as Answer by Edward D.G. · Sep 27 2020
1 - 3

Post Details

Added on Sep 2 2019
2 comments
2,336 views