Below is the example to create an excel file in Oracle Forms.

Pass the Sql query string to the below procedure to generate an Excel file using Ole2 package.

PROCEDURE Create_Excel_File (CSQL Varchar2)
Is
   source_cursor    Integer;
   l_colCnt         Number            Default 0;
   l_descTbl        Dbms_sql.desc_tab;
   newval1          Varchar2 (4000);
   application      OLE2.OBJ_TYPE;
   workbooks        OLE2.OBJ_TYPE;
   workbook         OLE2.OBJ_TYPE;
   worksheets       OLE2.OBJ_TYPE;
   worksheet        OLE2.OBJ_TYPE;
   colour           OLE2.OBJ_TYPE;

   cell             OLE2.OBJ_TYPE;
   RANGE            OLE2.OBJ_TYPE;
   range_col        OLE2.OBJ_TYPE;
   range_row        OLE2.OBJ_TYPE;
   args             OLE2.LIST_TYPE;
   rows_processed   Number;
   row_n            Number;
   VAL              Varchar2 (100);
   x                Number;
   filename         Varchar2 (200);
BEGIN
   BEGIN
      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
         Error_Message (SQLERRM);
         RETURN;
   END;

   application := OLE2.CREATE_OBJ ('Excel.Application');
   OLE2.SET_PROPERTY (application, 'Visible', 'False');
   workbooks := OLE2.GET_OBJ_PROPERTY (application, 'Workbooks');
   workbook := OLE2.GET_OBJ_PROPERTY (workbooks, 'Add');
   worksheets := OLE2.GET_OBJ_PROPERTY (workbook, 'Worksheets');
   args := OLE2.CREATE_ARGLIST;
   OLE2.ADD_ARG (args, 1);
   worksheet := OLE2.GET_OBJ_PROPERTY (worksheets, 'Item', args);
   OLE2.DESTROY_ARGLIST (args);

   For T In 1 .. l_colCnt
   LOOP
      BEGIN
         Dbms_Sql.define_Column (source_cursor, T, newval1, 4000);
         args := OLE2.CREATE_ARGLIST;
         OLE2.ADD_ARG (args, 1);
         OLE2.ADD_ARG (args, T);                                                      --Next column
         cell := OLE2.GET_OBJ_PROPERTY (worksheet, 'Cells', args);
         OLE2.DESTROY_ARGLIST (args);
         colour := ole2.get_obj_property (cell, 'Borders');
         ole2.set_property (colour, 'ColorIndex', 1);
         ole2.Release_obj (colour);
         colour := ole2.get_obj_property (cell, 'Interior');
         ole2.set_property (colour, 'ColorIndex', 15);
         ole2.Release_obj (colour);
         OLE2.SET_PROPERTY (cell, 'Value', l_descTbl (T).col_name);
         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 := OLE2.CREATE_ARGLIST;
               OLE2.ADD_ARG (args, row_n + 1);
               OLE2.ADD_ARG (args, T);                                                --Next column
               cell := OLE2.GET_OBJ_PROPERTY (worksheet, 'Cells', args);
               OLE2.DESTROY_ARGLIST (args);
               colour := ole2.get_obj_property (cell, 'Borders');
               ole2.set_property (colour, 'ColorIndex', 1);
               ole2.Release_obj (colour);
               OLE2.SET_PROPERTY (cell, 'Value', newval1);
               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 := OLE2.GET_OBJ_PROPERTY (worksheet, 'UsedRange');
   range_col := OLE2.GET_OBJ_PROPERTY (RANGE, 'Columns');
   range_row := OLE2.GET_OBJ_PROPERTY (RANGE, 'Rows');
   OLE2.INVOKE (range_col, 'AutoFit');
   OLE2.INVOKE (range_row, 'AutoFit');
   OLE2.Release_obj (RANGE);
   OLE2.Release_obj (range_col);
   OLE2.Release_obj (range_row);
   -- Get filename and path
   filename :=  'Yourexcel.xls';

   -- Save as worksheet
   IF Nvl (filename, '0') <> '0'
   Then
      OLE2.SET_PROPERTY (application, 'Visible', 'True');
      args := OLE2.CREATE_ARGLIST;
      OLE2.ADD_ARG (args, filename);
      OLE2.INVOKE (worksheet, 'SaveAs', args);
      OLE2.DESTROY_ARGLIST (args);
   END IF;

--  OLE2.INVOKE( workbook ,'Close');
   OLE2.Release_obj (worksheet);
   OLE2.Release_obj (worksheets);
   OLE2.Release_obj (workbook);
   OLE2.Release_obj (workbooks);
   OLE2.Release_obj (application);
END;

Download demo form from the following link Generate Excel Report

Creating Excel File in Oracle Forms的更多相关文章

  1. Formatting Excel File Using Ole2 In Oracle Forms

    Below is the some useful commands of Ole2 to format excel file in Oracle Forms.-- Change font size a ...

  2. Create Hierarchical Tree To Control Records In Oracle Forms

    Download Source Code Providing an example form for creating hierarchical trees in Oracle Forms to co ...

  3. Changing Icon File Of Push Button At Runtime In Oracle Forms 6i

    Set Icon_File property in When-Mouse-Enter trigger Suppose you are creating icon based menu system i ...

  4. Freebie - Utility Form: Generate Excel Report From SQL Query In Oracle Forms 6i And 11g

    Sharing a form to generate Excel file report from SQL query in Oracle Forms. This form can be used i ...

  5. Writing Text File From A Tabular Block In Oracle Forms

    The example given below for writing text file or CSV using Text_IO package from a tabular block in O ...

  6. Creating, Stopping, Re-Starting and Deleting a Timer in Oracle Forms

    I have written many posts previously on Timers in Oracle Forms like how to change images randomly wi ...

  7. Creating Custom Login Screen In Oracle Forms 10g

    Below is the example plsql unit to validate login credentials and after successful validation open a ...

  8. Creating Dynamic LOV in Oracle D2k Forms

    Dynamic Lov is a good idea for the form where too many Lov requirement is there with different recor ...

  9. Oracle Forms 10g Tutorial Ebook Download - Oracle Forms Blog

    A step by step tutorial for Oracle Forms 10g development. This guide is helpful for freshers in Orac ...

随机推荐

  1. zw版【转发·台湾nvp系列Delphi例程】HALCON ObjToInteger1-4

    zw版[转发·台湾nvp系列Delphi例程]HALCON ObjToInteger1 procedure TForm1.Button1Click(Sender: TObject);var img, ...

  2. Delphi 的各版本定义,用于预编译参数中,避免忘记备忘之

    DELPHI的版本宏: VER80 - Delphi 1 VER90 - Delphi 2 VER100 - Delphi 3 VER120 - Delphi 4 VER130 - Delphi 5 ...

  3. filesort是什么意思?

    我们碰到有order by 或者group by,或者distinct语句的时候,如果查看执行计划,通常会看到using filesort的字眼,那么这个filesort是不是真是文件排序呢?其实不然 ...

  4. 查看mysql的状态

    实时查看mysql状态连接数 查询数 etc mysqladmin  -uroot  -p '' -h status -i 1

  5. vsftpd

    vi /etc/vsftpd.conf and add the following allow_writeable_chroot=YES sudo service vsftpd restart

  6. sass初步认识2

    sass可以使用变量,采用 $ 来进行变量声明,格式为: $highlight-color:#f90;(声明方式和css属性声明类似.使用的变量名可以更加语义化) 与js分为全局变量和局部变量类似,s ...

  7. 每日一九度之题目1016:火星A+B

    时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:5346 解决:1464 题目描述:     读入两个不超过25位的火星正整数A和B,计算A+B.需要注意的是:在火星上,整数不是单一进制的, ...

  8. JSONArray传值的使用小结

    今天使用了SpringMVC+mybatis传值.从controller中传到service中.可是由于版本问题参数中不能有大写和下划线,在service中只能用String 来接受json字符串.接 ...

  9. Winform知识点

    Winform窗体常用的控件 1.按钮 Button 前缀:btn 2.文本框 TextBox 前缀:txt 3.单选按钮 RadioButton 前缀:rdo 4.复选按钮 CheckBox 前缀: ...

  10. 一个通用的DAO模型实现增删改查

    首先三个架包: mysql-connector-java-jar commons-dbcp-1.4jar commons-pool-1.5.5jar 导进去: (从上往下一次调用,实现功能) ---- ...