Home » Developer & Programmer » Forms » RPT2XLS
RPT2XLS [message #602093] Fri, 29 November 2013 05:42 Go to next message
Javeedcam@gmail.com
Messages: 1
Registered: November 2013
Location: chennai
Junior Member
PACKAGE rpt2xls 
IS 
  -- Font style constants 
  bold CONSTANT BINARY_INTEGER := 1; 
  italic CONSTANT BINARY_INTEGER := 2; 
  underline CONSTANT BINARY_INTEGER := 4; 
  -- Horizontal alignment constants 
  SUBTYPE xlhalign IS BINARY_INTEGER; 
  center CONSTANT XLHALIGN := -4108; 
  centeracrossselection CONSTANT XLHALIGN := 7; 
  distributed CONSTANT XLHALIGN := -4117; 
  fill CONSTANT XLHALIGN := 5; 
  general CONSTANT XLHALIGN := 1; 
  justify CONSTANT XLHALIGN := -4130; 
  left CONSTANT XLHALIGN := -4131; 
  right CONSTANT XLHALIGN := -4152; 
  -- vertical alignment constants 
  SUBTYPE xlvalign IS BINARY_INTEGER; 
  top CONSTANT XLVALIGN := -4160; 
  bottom CONSTANT XLVALIGN := 25; 
  PROCEDURE put_cell( 
    colno     BINARY_INTEGER, 
    cellvalue IN VARCHAR2, 
    position  IN VARCHAR2 DEFAULT NULL, 
    rowno     IN BINARY_INTEGER DEFAULT NULL, 
    fontname  IN VARCHAR2 DEFAULT NULL, 
    fontsize  IN BINARY_INTEGER DEFAULT NULL, 
    fontstyle IN BINARY_INTEGER DEFAULT NULL, 
    fontcolor IN BINARY_INTEGER DEFAULT NULL, 
    bgrcolor  IN BINARY_INTEGER DEFAULT NULL, 
    format    IN VARCHAR2 DEFAULT NULL, 
    align     IN XLHALIGN DEFAULT NULL, 
    valign    IN XLVALIGN DEFAULT NULL ); 
  PROCEDURE new_line; 
  PROCEDURE previous_line; 
  PROCEDURE delete_line ( 
    p_value IN NUMBER ); 
  PROCEDURE RUN; 
  PROCEDURE release_memory; 
END; 

-- ===================== 
PACKAGE BODY rpt2xls 
IS 
  TYPE excelcell IS RECORD( 
    rowno BINARY_INTEGER, 
    colno BINARY_INTEGER, 
    val VARCHAR2(2000), 
    fontname VARCHAR2(20), 
    fontsize BINARY_INTEGER, 
    fontstyle BINARY_INTEGER, 
    fontcolor BINARY_INTEGER, 
    bgrcolor BINARY_INTEGER, 
    format VARCHAR2(60), 
    align XLHALIGN, 
    valign XLVALIGN ); 
  TYPE excelcells 
    IS TABLE OF EXCELCELL; 
  cell       EXCELCELLS := Excelcells(); 
  currentrow BINARY_INTEGER := 8; 
  cellrow    BINARY_INTEGER; 
  rowvalue   BINARY_INTEGER; 
  PROCEDURE New_line 
  IS 
  BEGIN 
      currentrow := currentrow + 1; 
  END; 
  PROCEDURE Previous_line 
  IS 
  BEGIN 
      currentrow := currentrow - 1; 
  END; 
  PROCEDURE Delete_line (p_value IN NUMBER) 
  IS 
  BEGIN 
      currentrow := currentrow - p_value; 
  END; 
  PROCEDURE Put_cell(colno     BINARY_INTEGER, 
                     cellvalue IN VARCHAR2, 
                     position  IN VARCHAR2 DEFAULT NULL, 
                     rowno     IN BINARY_INTEGER DEFAULT NULL, 
                     fontname  IN VARCHAR2 DEFAULT NULL, 
                     fontsize  IN BINARY_INTEGER DEFAULT NULL, 
                     fontstyle IN BINARY_INTEGER DEFAULT NULL, 
                     fontcolor IN BINARY_INTEGER DEFAULT NULL, 
                     bgrcolor  IN BINARY_INTEGER DEFAULT NULL, 
                     format    IN VARCHAR2 DEFAULT NULL, 
                     align     IN XLHALIGN DEFAULT NULL, 
                     valign    IN XLVALIGN DEFAULT NULL) 
  IS 
  BEGIN 
      IF position = 'H' THEN 
        rowvalue := rowno; 
      ELSE 
        rowvalue := currentrow; 
      END IF; 

      cell.extend; 

      Cell(cell.last).rowno := rowvalue; 

      Cell(cell.last).colno := colno; 

      Cell(cell.last).val := cellvalue; 

      Cell(cell.last).fontname := fontname; 

      Cell(cell.last).fontsize := fontsize; 

      Cell(cell.last).fontstyle := fontstyle; 

      Cell(cell.last).fontcolor := fontcolor; 

      Cell(cell.last).bgrcolor := bgrcolor; 

      Cell(cell.last).format := format; 

      Cell(cell.last).align := align; 

      Cell(cell.last).valign := valign; 
  END; 
  PROCEDURE RUN 
  IS 
    application  ole2.obj_type; 
    workbooks    ole2.obj_type; 
    workbook     ole2.obj_type; 
    worksheets   ole2.obj_type; 
    worksheet    ole2.obj_type; 
    workcell     ole2.obj_type; 
    workcolumn   ole2.obj_type; 
    workfont     ole2.obj_type; 
    workinterior ole2.obj_type; 
    arglist      ole2.list_type; 
  BEGIN 
      application := ole2.Create_obj('Excel.Application'); 

      ole2.Set_property(application, 'Visible', 1); 

      workbooks := ole2.Get_obj_property(application, 'Workbooks'); 

      workbook := ole2.Invoke_obj(workbooks, 'Add'); 

      worksheets := ole2.Get_obj_property(workbook, 'Worksheets'); 

      worksheet := ole2.Get_obj_property(application, 'ActiveSheet'); 

      FOR i IN cell.first .. cell.last LOOP 
          IF Cell(i).val IS NOT NULL THEN 
            arglist := ole2.create_arglist; 

            ole2.Add_arg(arglist, Cell(i).rowno); 

            ole2.Add_arg(arglist, Cell(i).colno); 

            workcell := ole2.Get_obj_property(worksheet, 'Cells', arglist); 

            ole2.Destroy_arglist(arglist); 

            ole2.Set_property(workcell, 'Value', Cell(i).val); 

            ole2.Set_property(workcell, 'NumberFormat', Cell(i).format); 

            IF Cell(i).align IS NOT NULL THEN 
              ole2.Set_property(workcell, 'HorizontalAlignment', Cell(i).align); 
            END IF; 

            IF Cell(i).valign IS NOT NULL THEN 
              ole2.Set_property(workcell, 'VerticalAlignment', Cell(i).valign); 
            END IF; 

            workfont := ole2.Get_obj_property(workcell, 'Font'); 

            workinterior := ole2.Get_obj_property(workcell, 'Interior'); 

            IF Cell(i).fontname IS NOT NULL THEN 
              ole2.Set_property(workfont, 'Name', Cell(i).fontname); 
            END IF; 

            IF Cell(i).fontsize IS NOT NULL THEN 
              ole2.Set_property(workfont, 'Size', Cell(i).fontsize); 
            END IF; 

            IF MOD(Cell(i).fontstyle, 2) = 1 THEN 
              ole2.Set_property(workfont, 'Bold', 1); 
            END IF; 

            IF MOD(Cell(i).fontstyle, 4) > 2 THEN 
              ole2.Set_property(workfont, 'Italic', 1); 
            END IF; 

            IF MOD(Cell(i).fontstyle, 8) > 4 THEN 
              ole2.Set_property(workfont, 'Underline', 2); 
            END IF; 

            IF Cell(i).fontcolor IS NOT NULL THEN 
              ole2.Set_property(workfont, 'ColorIndex', Cell(i).fontcolor); 
            END IF; 

            IF Cell(i).bgrcolor IS NOT NULL THEN 
              ole2.Set_property(workinterior, 'ColorIndex', Cell(i).bgrcolor); 
            END IF; 

            ole2.Release_obj(workinterior); 

            ole2.Release_obj(workfont); 

            ole2.Release_obj(workcell); 
          END IF; 
      END LOOP; 

      arglist := ole2.create_arglist; 

      ole2.Add_arg(arglist, 'A:Z'); 

      workcolumn := ole2.Get_obj_property(worksheet, 'Columns', arglist); 

      ole2.Destroy_arglist(arglist); 

      ole2.Invoke(workcolumn, 'AutoFit'); 

      ole2.Release_obj(workcolumn); 

      ole2.Release_obj(worksheet); 

      ole2.Release_obj(worksheets); 

      ole2.Release_obj(workbook); 

      ole2.Release_obj(workbooks); 

      ole2.Release_obj(application); 
  END; 
  PROCEDURE Release_memory 
  IS 
  BEGIN 
      cell := Excelcells(); 

      currentrow := 0; 

      sys.dbms_session.free_unused_user_memory; 
  END; 
END; 

-- ================ 
-- button action trigger 
------------------------ 
PROCEDURE Exp_to_exlbuttonaction 
IS 
BEGIN 
    -- IF :P_EXCEL_OPTION = 'Y' THEN 
    rpt2xls.RUN; 
--END IF; 
END; 

-- ==================== 
FUNCTION B_48formattrigger 
RETURN BOOLEAN 
IS 
BEGIN 
    rpt2xls.Put_cell(6, 'Run Date :', position => 'H', rowno => 1, 
    fontcolor => 1, 
          fontsize => 8, fontstyle => rpt2xls.bold); 

    RETURN ( TRUE ); 
END; 

-- ============ 
-- heading  
----------- 
FUNCTION B_3formattrigger 
RETURN BOOLEAN 
IS 
BEGIN 
    rpt2xls.Put_cell(2, 'Service Tracking Report', position => 'H', rowno => 1, 
          bgrcolor => 15, fontcolor => 1, fontsize => 15, fontstyle => 
    rpt2xls.bold); 

    RETURN ( TRUE ); 
END; 

-- ============== 
-- header param 
-------------- 
FUNCTION B_51formattrigger 
RETURN BOOLEAN 
IS 
BEGIN 
    rpt2xls.Put_cell(1, 'Location :', position => 'H', rowno => 4, 
    fontcolor => 1, 
          fontsize => 8, fontstyle => rpt2xls.bold); 

    RETURN ( TRUE ); 
END; 

FUNCTION F_locationformattrigger 
RETURN BOOLEAN 
IS 
BEGIN 
    rpt2xls.Put_cell(2, :cf_loccode, position => 'H', rowno => 4, fontcolor => 1 
    , 
          fontsize => 8); 

    RETURN ( TRUE ); 
END; 

-- =============== 
-- label 
FUNCTION B_10formattrigger 
RETURN BOOLEAN 
IS 
BEGIN 
    rpt2xls.Put_cell(1, 'Non Cash Description', position => 'H', rowno => 7, 
          bgrcolor => 15, fontcolor => 1, fontsize => 8, 
    fontstyle => rpt2xls.bold); 

    rpt2xls.Put_cell(2, 'AR Code', position => 'H', rowno => 7, bgrcolor => 15, 
    fontcolor => 1, fontsize => 8, fontstyle => rpt2xls.bold); 

    rpt2xls.Put_cell(3, 'Location', position => 'H', rowno => 7, bgrcolor => 15, 
    fontcolor => 1, fontsize => 8, fontstyle => rpt2xls.bold); 

    rpt2xls.Put_cell(4, 'Created By', position => 'H', rowno => 7, 
    bgrcolor => 15, 
    fontcolor => 1, fontsize => 8, fontstyle => rpt2xls.bold); 

    rpt2xls.Put_cell(5, 'Created On', position => 'H', rowno => 7, 
    bgrcolor => 15, 
    fontcolor => 1, fontsize => 8, fontstyle => rpt2xls.bold); 

    rpt2xls.Put_cell(6, 'Status', position => 'H', rowno => 7, bgrcolor => 15, 
    fontcolor => 1, fontsize => 8, fontstyle => rpt2xls.bold); 

    rpt2xls.Put_cell(7, 'Modified By', position => 'H', rowno => 7, 
    bgrcolor => 15, 
    fontcolor => 1, fontsize => 8, fontstyle => rpt2xls.bold); 

    rpt2xls.Put_cell(8, 'Modified On', position => 'H', rowno => 7, 
    bgrcolor => 15, 
    fontcolor => 1, fontsize => 8, fontstyle => rpt2xls.bold); 

    RETURN ( TRUE ); 
END; 

-- ============= 
-- data 
--------- 
FUNCTION B_7formattrigger 
RETURN BOOLEAN 
IS 
BEGIN 
    rpt2xls.Put_cell(1, :BRAND_code, fontcolor => 1, fontsize => 8); 

    rpt2xls.Put_cell(2, :GROUP_code, fontcolor => 1, fontsize => 8); 

    rpt2xls.Put_cell(3, :LEVEL_1, fontcolor => 1, fontsize => 8); 

    rpt2xls.Put_cell(4, :CF_SUPPLIER, fontcolor => 1, fontsize => 8); 

    rpt2xls.Put_cell(5, :Item_code, fontcolor => 1, fontsize => 8); 

    rpt2xls.Put_cell(6, :item_short_descripton, fontcolor => 1, fontsize => 8); 

    rpt2xls.Put_cell(7, Chr(39) 
                        ||:Item_bar_code, fontcolor => 1, fontsize => 8); 

    rpt2xls.Put_cell(8, Chr(39) 
                        ||:CF_PARENT_CODE, fontcolor => 1, fontsize => 8); 

    rpt2xls.Put_cell(9, :status, fontcolor => 1, fontsize => 8); 

    rpt2xls.Put_cell(10, :CF_CLASSIFICATION_DESC, fontcolor => 1, fontsize => 8) 
    ; 

    rpt2xls.Put_cell(11, :DYNAMIC_STATUS, fontcolor => 1, fontsize => 8); 

    rpt2xls.new_line; 

    RETURN ( FALSE ); 
END; 


[EDITED by LF: formatted code & applied [code] tags]

[Updated on: Fri, 29 November 2013 12:20] by Moderator

Report message to a moderator

Re: RPT2XLS [message #602116 is a reply to message #602093] Fri, 29 November 2013 10:36 Go to previous messageGo to next message
shahzad-ul-hasan
Messages: 615
Registered: August 2002
Senior Member
Read this:
http://www.orafaq.com/forum/m/598836/?srch=report+2+excel#msg_598836

http://www.orafaq.com/forum/m/553714/?srch=report+2+excel#msg_553714

Re: RPT2XLS [message #602125 is a reply to message #602116] Fri, 29 November 2013 12:21 Go to previous message
Littlefoot
Messages: 21808
Registered: June 2005
Location: Croatia, Europe
Senior Member
Account Moderator
What is the question? Or a statement? Anything? What is this code supposed to do? Does it work? Not? Any errors?
Previous Topic: CALENDAR ERROR 06508 FRM 40735
Next Topic: How to create backup and restore
Goto Forum:
  


Current Time: Wed Apr 24 19:18:40 CDT 2024