السلام عليكم
كيف يمكنك عمل تصدير للبيانات من قاعده بيانات اوركال الى ملف اكسل من خلال الضغط على زر فى اوركال فورم 10 جى
كل ما عليك فعله هو انشاء program unit وتضع فيه الكود التالى ثم تستعدى اسم البروسيديور على الزر بأستخدام تريجر
WHEN-BUTTON-PRESSED
Code
PROCEDURE l_print_excel IS APPLICATION OLE2.OBJ_TYPE; WORKBOOKS OLE2.OBJ_TYPE; WORKBOOK OLE2.OBJ_TYPE; WORKSHEETS OLE2.OBJ_TYPE; WORKSHEET OLE2.OBJ_TYPE; Arglist OLE2.LIST_TYPE; CELL OLE2.OBJ_TYPE; r INTEGER; c INTEGER; file_name_cl VARCHAR2(32767); user_cancel EXCEPTION; Workfont OLE2.OBJ_TYPE; WorkInterior OLE2.OBJ_TYPE; Cursor c1 is Select 'EMP_CODE' COL1,'EMP_NAME' COL2 From dual; Cursor c2 is Select emp_code,emp_name From employee_master; --Inner Proc. Procedure put_cell (Row_num number, Col_num number, put_value varchar2, font_name varchar2 default null, font_size binary_integer default null, font_style varchar2 default null,/*here you can pass BOLD for bold, ITALIC for italic etc*/ font_color binary_integer default null) is Begin Arglist := OLE2.create_arglist; OLE2.add_arg(Arglist,row_num); OLE2.add_arg(Arglist,col_num); cell := OLE2.get_obj_property(Worksheet,'Cells',Arglist); OLE2.destroy_arglist(Arglist); OLE2.set_property(cell,'Value',put_value); Workfont := OLE2.get_obj_property(cell,'Font'); WorkInterior := OLE2.get_obj_property(cell,'Interior'); If font_name is not null then OLE2.set_property(Workfont,'Name',font_name); End if; If font_size is not null then OLE2.set_property(Workfont,'Size',font_size); End if; If font_style is not null then OLE2.set_property(Workfont,font_style,1); End if; If font_color is not null then OLE2.set_property(Workfont,'ColorIndex',font_color); End if; OLE2.release_obj(workinterior); OLE2.release_obj(workfont); OLE2.release_obj(cell); End; BEGIN --Open Excel Application and make it visible APPLICATION := OLE2.CREATE_OBJ('Excel.Application'); OLE2.SET_PROPERTY(APPLICATION,'Visible',True); ------------------------------------------------------------------------- --Open a specified file where i want to export data /* Arglist := OLE2.create_arglist; OLE2.add_arg(Arglist,'C:\temp\test.xls'); WORKBOOKS := OLE2.GET_OBJ_PROPERTY(APPLICATION, 'WORKBOOKS'); WORKBOOK := OLE2.INVOKE_OBJ(WORKBOOKS, 'Open',Arglist); OLE2.destroy_arglist(Arglist); */ /*open new file*/ WORKBOOKS := OLE2.GET_OBJ_PROPERTY(APPLICATION, 'WORKBOOKS'); WORKBOOK := OLE2.INVOKE_OBJ(WORKBOOKS, 'Add'); ------------------------------------------------------------------------- ---Initilize work sheet Worksheet := OLE2.get_obj_property(Application,'Activesheet'); OLE2.set_property(Worksheet,'Name','MySheetNo.1'); /*Print titles*/ r := 1; put_Cell (r,1,'EMPLOYEE LIST OF THE COMPANY',font_style=>'BOLD'); r := 2; For r1 in c1 loop put_Cell (r,1,r1.col1,font_style=>'BOLD'); put_Cell (r,2,r1.col1,font_style=>'BOLD'); r := r+1;--increment row END LOOP; /*Print Data*/ For r2 in c2 loop put_Cell (r,1,r2.emp_code); put_Cell (r,2,r2.emp_name); r := r+1; end loop; -- Save the Excel file created Arglist := OLE2.Create_Arglist; OLE2.Add_Arg(Arglist,'c:\temp\test.xls'); OLE2.Invoke(workbook, 'Save', Arglist); OLE2.Destroy_Arglist(Arglist); -- release workbook OLE2.Release_Obj(worksheet); OLE2.Release_Obj(workbook); OLE2.Release_Obj(workbooks); OLE2.Release_Obj(application); End;
How to Call Excel file from oracle form
درس اليوم عن كيف يمكنك فتح برنامج مايكروسوفت اكسل من داخل اوركال فورم
كل ما عليك فعله هو بناء زر على الفورمه
TRIGGER
WHEN-BUTTON-PRESSED
Code
DECLARE
AppID PLS_INTEGER;
BEGIN
AppID := DDE.App_Begin('C:\Program Files\Microsoft Office\OFFICE12/excel.exe E:\test.xlsx',DDE.APP_MODE_MINIMIZED);
END;
قم فقط بتغير المسار الاول الى مكان تثبيت حزمه مايكروسوفت اوفيس
فى المسار الثانى مسار الملف المراد فتحه
ويمكنك ايضا تحميل هذه الفورمه كمثال توضيحى.
مشكور اخي على معلوماتك المفيدة
ReplyDeleteممكن نعمل العكس بدون اي اشكاليات
المطلوب استيراد بيانات جدل من ملف اكسل الى اوراكل عبر الفرم بدون حصول اي اشكاليات لاني جربت اكثر من كود وبدون فائدة وبصراحه لم اعرف السبب؟
Cool! Thanks a lot!
ReplyDelete