الانتقال إلى المحتوى
View in the app

A better way to browse. Learn more.

مجموعة مستخدمي أوراكل العربية

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Export From Oracle To Excel

Featured Replies

بتاريخ:

السلام عليكم

هناك مشاركة مميزة جدا شاهدتها اليوم بإسم الاخ القدير zaeen
عن التحويل من اوراكل لإكسل
وفي هذة المشاركة بروسجر يقوم بتحويل عمودين فقط
وهذا هو رابط المشاركة

http://www.araboug.org/ib/index.php?showtopic=20018

وقد حاولت تعديلها الى اكثر من عموود
وإليكم التعديل

declare  
        CURSOR c_cur IS
      SELECT EMPNO,ENAME,JOB,MGR,HIREDATE,SAL,COMM,DEPTNO
       FROM emp; MyApplication  OLE2.OBJ_TYPE;
   args  OLE2.LIST_TYPE;
   wb    OLE2.OBJ_TYPE;
   wss   OLE2.OBJ_TYPE;
   wbs   OLE2.OBJ_TYPE;
   cell  OLE2.OBJ_TYPE;
went ole2.obj_type;
   c1 number(4);
   c2 number(4);

args1 OLE2.LIST_TYPE;
nm_of_col number:=8;
begin MyApplication  := OLE2.CREATE_OBJ('Excel.Application');
    OLE2.SET_PROPERTY(MyApplication , 'Visible',1);
    wbs := OLE2.GET_OBJ_PROPERTY(MyApplication ,'Workbooks');
    wb := OLE2.INVOKE_OBJ(wbs,'Add');
wss := OLE2.GET_OBJ_PROPERTY(MyApplication ,'ActiveSheet');
   OLE2.SET_PROPERTY(wss , 'Value','Sheet1');


OPEN c_cur;
c1:=1;        
LOOP

   fetch c_cur into :global.1,:global.2,:global.3,:global.4,:global.5,:global.6,:global.7,:global.8; exit when c_cur%NOTFOUND;    
--c2:=1;        
for vv in 1..nm_of_col loop 
args := OLE2.CREATE_ARGLIST; 
OLE2.ADD_ARG(args, c1);
OLE2.ADD_ARG(args, vv);
cell := OLE2.GET_OBJ_PROPERTY(wss,'Cells', args);
OLE2.SET_PROPERTY(cell, 'Value',name_in( 'global.'||vv));
OLE2.DESTROY_ARGLIST(args);
ole2.release_obj(cell);
END LOOP;
c1:=c1+1;       
END LOOP;
CLOSE c_cur;
OLE2.DESTROY_ARGLIST(args);
args1 := OLE2.CREATE_ARGLIST;
OLE2.ADD_ARG(args1, 'C:\DOCS\EXAMPLE.xls');
--OLE2.INVOKE(wb, 'SaveAs', args1);
OLE2.DESTROY_ARGLIST(args1);
--OLE2.INVOKE(wb,'CLOSE');
--ole2.invoke(MYApplication,'Quit');

ole2.release_obj(wb);
ole2.release_obj(wbs);
ole2.release_obj(wss);
ole2.release_obj(wss);
ole2.release_obj(wb);

OLE2.RELEASE_OBJ(MyApplication);


END;


إنسخ الكود إلى زر واعمل ربط على المستخدم
scott/tiger
مع العلم يمكنك تغيير عدد الأعمدة في المتغير
nm_of_col
وإضافة

:global.1,:global.2,:global.3,:global.4,:global.5,:global.6,:global.7,:global.8.
.9..10....:global.n



بحسب عدد الأعمدة
وقد أضفت هذة المشاركة
لكي نتعاون في تحسين الفكرة
فمن لديه اي تعديل ارجو ان لا يبخل علينا به
اكرر شكري للأخ zaeen

دعواتكم

بالتوفيق
الجنتل

بتاريخ:

السلام عليكم؟؟

أخي جنتل والأخ zaeen لكم الشكر والتقدير

بصراااحة كنت أدور على هذا الكود.

و شكر و أولا للأخ zaeen ثم الشكر يتجدد للأخ جنتل على الإضافة ....

ولاكن عند سؤال وهو:
إذا أريد أن أصدر البيانات إلى الإكسل وأريد إذا أضفت بيانات جديدة في الأوراكل تنضاف أو تتصدر إلى الإكسل تلقائيا .
يعني إذا صدرت البيانات وكانت عدد السجلات 100 ثم أضفت بيانات جديدة في الفورم أريد أن تنضاف تلقائيا في ملف الأكسل .؟؟ فهل هذا يمكنني أو إنها لا توجد علاقة لعمل ذلك !!!!

ولكم مني اجمل تحية...

بتاريخ:
  • كاتب الموضوع

السلام عليكم

فكرة جيدة
واعتقد انها تكون بنفس الطريقة مع اضافة فكرة جديدة
وهي عمل مسلسل لعدد الريكوردس
وبتالي عند الاضافة في الفورم اخذ اخر ريكورد واضافته في اخر سطر في ملف الاكسل حسب المسلسل

فكر فيها وانا متاكد بتوجد الحل بسهوله :)

بالتوفيق

الجنتل

بتاريخ:

السلام عليكم


انا مشكور جدا للاخوه zaeen, gentle

انا من سنوات وانا بدور على هذا الكود


بارك الله فيكم

بتاريخ:

مشكورين على المجهود الرائع ولكن كيف يمكن ان اضيف عنوان العمود
بحيث يكون الاسم في الاعلى والبيانات تحته مباشرة بدون التعديل على الاكسيل

بتاريخ:
  • كاتب الموضوع

السلام عليكم

التحويل لإكسل مع أسماء الأعمدة

declare  
        CURSOR c_cur IS
      SELECT EMPNO,ENAME,JOB,MGR,HIREDATE,SAL,COMM,DEPTNO
       FROM emp; MyApplication  OLE2.OBJ_TYPE;
   args  OLE2.LIST_TYPE;
   wb    OLE2.OBJ_TYPE;
   wss   OLE2.OBJ_TYPE;
   wbs   OLE2.OBJ_TYPE;
   cell  OLE2.OBJ_TYPE;
went ole2.obj_type;
   c1 number(4);
   c2 number(4);

args1 OLE2.LIST_TYPE;
nm_of_col number:=8;
begin MyApplication  := OLE2.CREATE_OBJ('Excel.Application');
    OLE2.SET_PROPERTY(MyApplication , 'Visible',1);
    wbs := OLE2.GET_OBJ_PROPERTY(MyApplication ,'Workbooks');
    wb := OLE2.INVOKE_OBJ(wbs,'Add');
wss := OLE2.GET_OBJ_PROPERTY(MyApplication ,'ActiveSheet');
   OLE2.SET_PROPERTY(wss , 'Value','Sheet1');
--------------------------------------------------------------------------------------------أسماء الأعمدة
:global.nm1:='EmpNo';
:global.nm2:='EmpName';
:global.nm3:='Job';
:global.nm4:='Mgr';
:global.nm5:='Date';
:global.nm6:='Sal';
:global.nm7:='Comm';
:global.nm8:='DeptNo';
for gg in 1..8 loop
args := OLE2.CREATE_ARGLIST;
OLE2.ADD_ARG(args, 1);
OLE2.ADD_ARG(args, gg);
cell := OLE2.GET_OBJ_PROPERTY(wss,'Cells', args);
OLE2.SET_PROPERTY(cell, 'Value',name_in( 'global.nm'||gg));      
OLE2.DESTROY_ARGLIST(args);
ole2.release_obj(cell);
end loop;
-----------------------------------------------------------------------------------------------
OPEN c_cur;
c1:=2;        
LOOP

   fetch c_cur into :global.1,:global.2,:global.3,:global.4,:global.5,:global.6,:global.7,:global.8; exit when c_cur%NOTFOUND;    
--c2:=1;  
--end if;
for vv in 1..nm_of_col loop 
args := OLE2.CREATE_ARGLIST; 
OLE2.ADD_ARG(args, c1);
OLE2.ADD_ARG(args, vv);
cell := OLE2.GET_OBJ_PROPERTY(wss,'Cells', args);
OLE2.SET_PROPERTY(cell, 'Value',name_in( 'global.'||vv));
OLE2.DESTROY_ARGLIST(args);
ole2.release_obj(cell);
END LOOP;
c1:=c1+1;       
END LOOP;
CLOSE c_cur;
OLE2.DESTROY_ARGLIST(args);
args1 := OLE2.CREATE_ARGLIST;
OLE2.ADD_ARG(args1, 'C:\DOCS\EXAMPLE.xls');
--OLE2.INVOKE(wb, 'SaveAs', args1);
OLE2.DESTROY_ARGLIST(args1);
--OLE2.INVOKE(wb,'CLOSE');
--ole2.invoke(MYApplication,'Quit');

ole2.release_obj(wb);
ole2.release_obj(wbs);
ole2.release_obj(wss);
ole2.release_obj(wss);
ole2.release_obj(wb);

OLE2.RELEASE_OBJ(MyApplication);


END;



بالتوفيق

الجنتل

  • بعد 1 سنة...
بتاريخ:

السلام عليكم ورحمة الله وبركاته
الأخ جنتل الأخوه الاعزاء الشغل ده جميل جدا

بس في مشكلة عندي لما بشغل البرنامج بتاعي علي أجهزة الكلينت الكود ده مش بيشتغل وبيديني رساله علما باني مصمم البرنامج ب اوراكل 10g

مع انه علي جهازي الخاص بيشتغل كويس

ارجو مساعدتكم

بتاريخ:

معقولة مفيش حد عارف الحل اعتقد انها مشكلة ممكن تكون مرت علي كل المحترفين واصحاب الخبرة
ساعدوني ياجماعة انا شغال في البرنامج ليه 7 شهور مش واقف ال علي التحويل الي اكسيل

بتاريخ:

السلام عليكم

علي أجهزة الكلينت الكود ده مش بيشتغل وبيديني رساله


ما هى هذه الرسالة ؟
او اعمل print screen للرسالة ... واعرضها حتى يمكن المساعدة

C:\DOCS\EXAMPLE.xls


هل المشكلة فى عدم التعرف على الفولدر ومكانه ؟
جرب التعامل مع الملف باعتباره موجود على drive a الفلوبي دريف مثلا
a:\filename.xls
بتاريخ:

الحل في هذا الملف هي الفكره كلها في تحديد المكان الذي هينزل في البيانات في ملف الاكسل بتحدد الصف والعمود
مثال
OLE2.ADD_ARG(args, c1);
OLE2.ADD_ARG(args, 8);

وفي الملف المرفق توضيح أكثر

oracle_2_excel.txt

بتاريخ:

اشكركم اخواني علي اهتمامك
جاريالتحميل وهجرب وارد عليكم

بتاريخ:

الاخت الكريمة

شكرا لك على المشاركة الجميلة

جربت الكود وقد عمل معي 100%

ولكن هناك ملاحظة

يتم تنفيذ وعمل ملف الاكسل على السيرفر فقط

كيف يمكن عمل ملف الاكسل على نفس جهاز الكلينت الذي يريد عمل الملف على الاكسل؟؟؟

أرجو الرد وشكرا

  • بعد 2 أسابيع...
بتاريخ:

الله يعطيك الف عافية اخوي الجنتل وبقية الأخوة

مشاركة اكثر من رائعة

انضم إلى المناقشة

يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.

زائر
أضف رد على هذا الموضوع...

برجاء الإنتباه

بإستخدامك للموقع فأنت تتعهد بالموافقة على هذه البنود: سياسة الخصوصية

Account

Navigation

البحث

إعداد إشعارات المتصفح الفورية

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.